赛博土木A-深度学习06:卷积神经网络
1 全连接层到卷积
多层感知机更适合处理表格样本数据,但是对于具有一定结构的数据集就不再适用,例如图片。
1.1 不变性
不变性是指检测对象出现在图片不同的位置,不影响检测对象的形状。
适合于计算机视觉的神经网络架构:
- 平移不变性: 不管检测对象出现在图像中的哪个位置,神经网络的前面几层 应该对相同的图像区域具有相似的反应,即为“平移不变性”。
- 局部性: 神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔 较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
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 互相关运算
卷积层做的并不是卷积操作,而是互相关操作,输入张量与核张量通过互相关运算产生输出张量。
对于二维张量而言,卷积窗口从左到右,从上到下依次滑动并与核张量进行互相关运算(逐元素相乘并求和)。
卷积层在计算完每个元素后还要加上偏置值。
输出大小与输入大小$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$保持一致,然后分别计算对应通道的互相管运算,最后进行求和。
2.3.2 多输出通道
对于$c_o$个输出通道,需要为每一个通道构建一个多输入通道卷积核,最后四维卷积核表示为:$c_o\times c_i \times k_h \times k_w$。
3 汇聚层/池化层
汇聚层是CNN中用于减小特征图尺寸的关键层级结构。其基本思想是通过对输入特征图的子区域进行聚合操作,以提取出更加鲁棒的特征并减小计算量。汇聚操作通常包括最大汇聚(Max Pooling)和平均汇聚(Average Pooling)两种方式。
3.1 感受野
通常我们希望获得是对整个图像的处理结果,需要插入汇聚层,使得每层的输出特征图变小,这就会导致,每个神经元对其敏感的感受野变大。
感受野,指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,特征图上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。
3.2 最大汇聚层与平均汇聚层
汇聚层也是存在一个窗口,但是不同与卷积层,汇聚层的窗口不含参数,只是对窗口覆盖的元素执行特定运算。最大汇聚层是计算计算最大值,平均汇聚层测试计算平均值。
汇聚层的填充与步幅和卷积层没有什么区别。不同在于汇聚层在每个通道上进行单独运算,所以输入与输出的通道数一致。
4 CNN
4.1 基本组成
卷积神经网络由两个部分组成,分别是多层感知机(MLP)和特征提取器,特征提取器由卷积层、激活函数、汇聚层构成。
特征提取器用于提取图片特征,MLP部分根据提取出来的特征进行分类。特征提取器的输出是特征图,通过展开转换为MLP的输入。
4.2 示例 LeNet
LeNet组成:
特征提取器:两个卷积块
多层感知机:三个全连接层
卷积块:一个卷积层+sigmod激活函数+平均汇聚层。
卷积的输出维度:批量大小、通道数、高度、宽度。
为了将卷积块的输出转换为稠密块的输入,我们需要将其展平第一个维度是批次,第二个维度则是平面向量。
1 | Conv2d output shape: torch.Size([1, 6, 28, 28]) |
参考文献
[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/.