1 全连接层到卷积

多层感知机更适合处理表格样本数据,但是对于具有一定结构的数据集就不再适用,例如图片。

1.1 不变性

不变性是指检测对象出现在图片不同的位置,不影响检测对象的形状。

适合于计算机视觉的神经网络架构:

  1. 平移不变性: 不管检测对象出现在图像中的哪个位置,神经网络的前面几层 应该对相同的图像区域具有相似的反应,即为“平移不变性”。
  2. 局部性: 神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔 较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。

1.2 多层感知机的限制

输入是二维图像$\mathbf{X}$,隐藏表示$\mathbf{H}$也是矩阵,两者都是二维张量。

使用$[\mathbf{X}]_{i, j}$和$[\mathbf{H}]_{i, j}$分别表示输入图像和隐藏表示中位置$(i,j)$处的像素。为了使每个隐藏神经元都能接收到每个输入像素的信息,参数从权重矩阵转变为为四阶权重张量$\mathsf{W}$。假设$\mathbf{U}$包含偏置参数,我们可以将全连接层形式化地表示为:

其中,$[\mathsf{V}]_{i, j, a, b} = [\mathsf{W}]_{i, j, i+a, j+b}$。

1.2.1 平移不变性

为了满足平移不变性,参数和偏置应当与检测位置无关。因此$\mathbf{U}$和$\mathsf{V}$应当与$(i,j)$无关。即$[\mathsf{V}]_{i, j, a, b} = [\mathbf{V}]_{a, b}$,$\mathbf{U}=u$。因此$\mathbf{H}$简化为:

1.2.2 局部性

为了满足局部性需要控制范围:

上式就是一个卷积层,$\mathbf{V}$被称为卷积核,或者滤波器。

1.2.3 卷积

两个函数,比如$f, g: \mathbb{R}^d \to \mathbb{R}$之间的“卷积”被定义为:

对于二维张量,则为$f$的索引$(a, b)$和$g$的索引$(i-a, j-b)$上的对应加和:

1.2.4 通道

图像本质上是三维的(宽、高、颜色)。以RGB图像为例其颜色由三个参数构成,并称这个大小为3的轴为通道维度。此外输出可能存在多个输出通道用以表示特殊空间特征(纹理等)所以实际上卷积核是四维的。

2 图像卷积

2.1 互相关运算

卷积层做的并不是卷积操作,而是互相关操作,输入张量与核张量通过互相关运算产生输出张量。

对于二维张量而言,卷积窗口从左到右,从上到下依次滑动并与核张量进行互相关运算(逐元素相乘并求和)。

correlation

卷积层在计算完每个元素后还要加上偏置值。

输出大小与输入大小$n_k\times n_w$,以及卷积核大小$h_k\times h_w$相关:

2.2 填充与步幅

2.2.1 填充

图像卷积有个问题,随着卷积层数的增加会逐步丢失图像边缘信息。为此需要对图像边缘进行填充。

填充后的输出大小:

其中$p_h=k_h-1,p_w=k_w-1$。注意是左右各填充$\frac{p_w}{2}$,上下同理。

2.2.2 步幅

面对高像素图象时,信息是冗余的,因此可以提高卷积核每次滑动的元素个数,即步幅。

输出大小:

2.3 通道

2.3.1 多输入通道

卷积核应当与输入的通道数$c_i$保持一致,然后分别计算对应通道的互相管运算,最后进行求和。

conv-multi-in

2.3.2 多输出通道

对于$c_o$个输出通道,需要为每一个通道构建一个多输入通道卷积核,最后四维卷积核表示为:$c_o\times c_i \times k_h \times k_w$。

3 汇聚层/池化层

汇聚层是CNN中用于减小特征图尺寸的关键层级结构。其基本思想是通过对输入特征图的子区域进行聚合操作,以提取出更加鲁棒的特征并减小计算量。汇聚操作通常包括最大汇聚(Max Pooling)和平均汇聚(Average Pooling)两种方式。

3.1 感受野

通常我们希望获得是对整个图像的处理结果,需要插入汇聚层,使得每层的输出特征图变小,这就会导致,每个神经元对其敏感的感受野变大。

感受野,指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,特征图上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。

image

3.2 最大汇聚层与平均汇聚层

汇聚层也是存在一个窗口,但是不同与卷积层,汇聚层的窗口不含参数,只是对窗口覆盖的元素执行特定运算。最大汇聚层是计算计算最大值,平均汇聚层测试计算平均值。

汇聚层的填充与步幅和卷积层没有什么区别。不同在于汇聚层在每个通道上进行单独运算,所以输入与输出的通道数一致。

4 CNN

4.1 基本组成

卷积神经网络由两个部分组成,分别是多层感知机(MLP)和特征提取器,特征提取器由卷积层、激活函数、汇聚层构成。

特征提取器用于提取图片特征,MLP部分根据提取出来的特征进行分类。特征提取器的输出是特征图,通过展开转换为MLP的输入。

4.2 示例 LeNet

LeNet组成:

特征提取器:两个卷积块

多层感知机:三个全连接层

lenet

卷积块:一个卷积层+sigmod激活函数+平均汇聚层。

卷积的输出维度:批量大小、通道数、高度、宽度。

lenet-vert

为了将卷积块的输出转换为稠密块的输入,我们需要将其展平第一个维度是批次,第二个维度则是平面向量。

1
2
3
4
5
6
7
8
9
10
11
12
Conv2d output shape: 	 torch.Size([1, 6, 28, 28])
Sigmoid output shape: torch.Size([1, 6, 28, 28])
AvgPool2d output shape: torch.Size([1, 6, 14, 14])
Conv2d output shape: torch.Size([1, 16, 10, 10])
Sigmoid output shape: torch.Size([1, 16, 10, 10])
AvgPool2d output shape: torch.Size([1, 16, 5, 5])
Flatten output shape: torch.Size([1, 400])
Linear output shape: torch.Size([1, 120])
Sigmoid output shape: torch.Size([1, 120])
Linear output shape: torch.Size([1, 84])
Sigmoid output shape: torch.Size([1, 84])
Linear output shape: torch.Size([1, 10])

参考文献

[1] 彻底搞懂感受野的含义与计算-腾讯云开发者社区-腾讯云[EB/OL]. [2024-12-23]. https://cloud.tencent.com/developer/article/1557374.
[2] 深度神经网络中的感受野(Receptive Field)[EB/OL]. [2024-12-23]. https://zhuanlan.zhihu.com/p/28492837.
[3] 《动手学深度学习》 — 动手学深度学习 2.0.0 documentation[EB/OL]. [2024-12-21]. https://zh.d2l.ai/.