机器学习中的卷积类型

2025年2月3日 | 阅读11分钟

从数学的角度来看,卷积是一个积分函数,它表示当一个函数 g 在另一个函数 f 上滑动时,f 和 g 的重叠程度。

直观地说,卷积就像一个搅拌机,通过组合函数来减少数据空间,同时保持信息。

在机器学习和神经网络方面,卷积通过使用可学习参数(以滤波器(矩阵/向量)的形式)从输入数据集中提取低维特征。

它们的一个特点是能够保持输入数据点之间的位置或空间关联。卷积神经网络在相邻层之间的神经元之间强制执行局部连接模式,从而利用空间局部相关性。

直观地说,卷积是通过将滑动窗口(一个具有可学习权重的滤波器)的思想应用于输入,并产生加权和(输入和权重的加权和)作为输出的过程。作为后续层输入的特征空间就是这个加权和。

人脸识别问题是其中的一个绝佳例子,前几层卷积层学习输入图像中重要区域的压力,然后学习边缘和轮廓,最后学习人脸。在这个例子中,输入空间被减小到一个低维空间(表示点和像素的信息),然后减小到包含形状和边缘的另一个维度,最后减小到对照片中的人脸进行分类。N 维允许使用卷积。

卷积的类型

机器学习中有多种卷积类型,但我们主要可以将其分为四种类型。

  • 一维: 最简单的卷积是一维卷积,通常用于序列数据集,但也可用于其他用例。它们可用于从输入序列中提取局部一维子序列,并在卷积窗口内识别局部模式。下图显示了如何将一维卷积滤波器应用于序列以获得新特征。一维卷积的其他常见用途出现在自然语言处理(NLP)领域,其中每个句子都表示为单词序列。
  • 二维: 卷积神经网络(CNN)设计主要在图像数据集上使用二维卷积滤波器。卷积滤波器在两个维度(x,y)上滑动,从图像数据中提取低维特征。这是二维卷积的基本概念。二维矩阵也是输出的形式。
  • 三维: 为了计算低级特征表示,三维卷积将三维滤波器应用于数据集。滤波器在三个方向(x, y, z)上滑动。它们产生的形状是三维体积空间,如立方体或长方体。它们对于识别三维医学图像、电影和其他媒体中的事件非常有用。它们可以与二维空间输入(如图像)一起使用,而不仅仅局限于三维空间。
  • 空洞卷积: 内核值之间的距离由空洞卷积或膨胀卷积定义。这种卷积中的核间距增强了它们的感受野。例如,一个膨胀率为 2 的 3x3 内核将具有与 5x5 内核相同的视野。在此示例中,创建了不同的特征,但复杂性保持不变。

实施

现在我们将针对各自的问题来实现每种类型的卷积。

一维卷积

Types of Convolutions in Machine Learning

首先,我们将使用一维卷积来预测欺诈卡检测。

我们将导入所需的库。

然后我们需要读取数据集。

现在我们将数据集分割成训练集和测试集。


输出

Types of Convolutions in Machine Learning

现在,我们将定义我们的 1D 卷积网络。

现在我们需要准备我们的训练集,使其适合一维卷积。

再次,我们将准备我们的测试集,使其适合一维卷积。

显然,我们必须训练我们的模型。

输出

Types of Convolutions in Machine Learning

准确率似乎非常惊人!!

输出

Types of Convolutions in Machine Learning

准确率: 计算所有预测中正确的比例。高准确率(如 0.9992)表明模型在预测正确类标签方面做得非常好。

曲线下面积(AUC): ROC 曲线的 AUC 特别衡量模型区分正负类别的能力。AUC 为 0.902,尽管准确率看起来很高,但模型的区分能力被认为是中等。

二维卷积

Types of Convolutions in Machine Learning

现在我们将使用二维卷积来识别 MNIST 数据集中的数字。

首先,我们需要导入所需的库。

为了方便起见,我们生成随机数。

输出

Types of Convolutions in Machine Learning

我们获得了 42000 行和 785 列。

现在我们将数据集分割成训练集和测试集。

输出

Types of Convolutions in Machine Learning

现在将定义用于识别图像的二维卷积层。

输出

Types of Convolutions in Machine Learning

我们需要训练模型。

现在,我们只是将其进行测试。

输出

Types of Convolutions in Machine Learning

我们在测试集和验证集上获得了很高的准确率。

三维卷积

Types of Convolutions in Machine Learning

现在我们将为三维 MNIST 数据集使用三维卷积网络。首先,我们需要导入所需的库。

由于三维 MNIST 数据以 .h5 格式提供,让我们将整个数据集加载到测试集和训练集中。

现在我们来检查数据集的维度。

输出

Types of Convolutions in Machine Learning

尽管此数据集是一维平坦的,但数据集的作者还在另一个数据文件中提供了原始的 x、y 和 z 数据。让我们绘制一个三维数字。为了正确查看此三维数字,我们将对其进行旋转。

输出

Types of Convolutions in Machine Learning
Types of Convolutions in Machine Learning

现在,让我们使用此数据集创建一个三维卷积神经网络。在使用二维卷积之前,我们首先将每个图像转换为三维形状——宽度、高度和通道。红色、绿色和蓝色层切片由通道表示。因此,它被配置为 3。类似地,我们将使用输入数据集的四维形状转换来启用长度、宽度、高度和通道(r/g/b)的三维卷积。

输出

Types of Convolutions in Machine Learning

三个输出层,维度为 16、16、16,一个输入层,维度为 10。应用四个卷积层,具有恒定的核大小 (3, 3, 3) 和递增的滤波器大小(典型大小:8、16、32、64)。

在第二个和第四个卷积层分别放置两个最大池化层。

现在,让我们编译并训练模型。

输出

Types of Convolutions in Machine Learning

我们可以看到验证集的准确率在模型训练过程中有所变化,这表明网络可以进一步改进。让我们预测并评估当前模型的准确率。

输出

Types of Convolutions in Machine Learning

输出

Types of Convolutions in Machine Learning

尽管模型目前不太准确,但通过架构修改和超参数调整,可以使其变得更好。

空洞卷积

Types of Convolutions in Machine Learning

现在我们将尝试使用空洞卷积生成 CAM(分类激活图)。

首先,我们需要导入所需的库。

让我们获取数据集

我们现在创建我们的数据加载器。

现在我们将创建我们的空洞卷积网络。



输出

Types of Convolutions in Machine Learning

我们必须训练我们的模型。

输出

Types of Convolutions in Machine Learning

现在让我们生成一些 CAM

输出

Types of Convolutions in Machine Learning
下一个主题机器学习工具