【五、卷积神经网络】笔记
1. 从全连接层到卷积
-
特点(沃尔多检测器):
① 平移不变性:不管出现在图像中的哪个位置,神经⽹络的底层应对相同图像区域做出类似的响应,因此能够以相同的⽅式处理局部图像
② 局部性:神经⽹络的底层只探索输⼊图像的局部区域,这些局部特征可以融会贯通,在整个图像级别上做出预测。因此,隐藏表⽰只需⼀小部分局部图像像素 -
限制多层感知机:
以⼆维图像 X 作为输⼊,多层感知机的隐藏表示 H 在数学上是⼀个矩阵,在代码中表示为⼆维张量,V 为卷积核(convolution kernel)或者滤波器(filter)。假设 U 包含偏置参数,重新索引下标 (k, l),使 k = i + a、l = j + b,由此 [V]i,j,a,b = [W]i,j,i+a,j+b,索引 a 和 b 覆盖正偏移和负偏移,全连接层表示为:
-
平移不变性即输⼊ X 中的移位,仅与隐藏表⽰ H 中的移位相关,V 和 U 实际上不依赖于 (i, j) 的值,即卷积 [V]i,j,a,b = [V]a,b,不再依赖于图像中的位置,参数变少:
-
局部性即在 |a| > ∆ 或 |b| > ∆ 的范围之外,设置 [V]a,b = 0,将参数 [H]i,j 重写为:
-
数学中,两个函数(⽐如 f, g :Rd→R)的卷积被定义为:
-
卷积是测量 f 和 g 之间(把函数“翻转”并移位 x 时)的重叠,对于离散对象(即定义域为 Z),积分变成求和:
-
在图像处理中,卷积层通常⽐全连接层需要更少的参数
2. 图像卷积
- 互相关运算 (cross-correlation):在卷积层中,输⼊张量和核张量产⽣输出张量的运算。二维卷积层的核⼼计算是二维互相关运算。最简单的形式是,对⼆维输⼊数据和卷积核执⾏互相关操作,然后添加⼀个偏置
- 特征映射(Feature Map):输出卷积层,被视为输⼊映射到下⼀层空间维度的转换器
- 感受野(Receptive Field):前向传播期间影响x计算的所有元素(来自所有先前层)。感受野的覆盖率可能⼤于某层输⼊的实际区域⼤小,因此当需要检测输⼊特征中更⼴区域时,可以构建⼀个更深的卷积⽹络
- 可以设计⼀个卷积核来检测图像的边缘
- 学习卷积核时,⽆论⽤严格卷积运算或互相关运算,卷积层的输出不会受太⼤影响
-
3. 填充和步幅
-
填充(padding):在输⼊图像的边界填充元素(通常是0),常⽤来使输出与输⼊具有相同的⾼和宽。
-
卷积神经⽹络中卷积核的⾼度和宽度通常为奇数,如1、3、5或7,保持空间维度的同时,可以在顶部和底部填充相同数量的⾏,在左侧和右侧填充相同数量的列
-
步幅(stride):每次滑动元素的数量,可以减小输出的⾼和宽
-
当垂直步幅为 sh 、⽔平步幅为 sw 时,输出形状为:
-
如果设置 ph = kh-1 和 pw = kw-1,则输出形状为:
-
如果输⼊的⾼度和宽度可以被垂直和⽔平步幅整除,则输出形状为:
4. 多输⼊多输出通道
- 多输入通道:对每个通道执⾏互相关操作,然后将结果相加
- 多输出通道:⽤ ci 和 co 分别表⽰输⼊和输出通道的数⽬,并让 kh 和 kw 为卷积核的⾼度和宽度。为了获得多个通道的输出,可以为每个输出通道创建⼀个形状为 ci ×kh ×kw 的卷积核张量,这样卷积核的形状是 co ×ci ×kh ×kw。在互相关运算中,每个输出通道先获取所有输⼊通道,再以对应该输出通道的卷积核计算出结果
- 1×1 卷积核:唯⼀计算发⽣在通道上,当以每像素为基础应⽤时,1×1卷积层相当于全连接层,以 ci 个输⼊值转换为 co 个输出值,通常⽤于调整⽹络层的通道数量和控制模型复杂性
5. 池化层
- 池化(pooling)层:降低卷积层对位置的敏感性、降低对空间降采样表⽰的敏感性。池化层不包含参数,池运算符是确定性的。池化层也可以改变输出形状,使⽤最⼤池化层以及⼤于 1 的步幅,可减少空间维度(如⾼度和宽度)
- 最大池化层(maximum pooling):计算池化窗口中所有元素的最⼤值。⽆论 X[i, j] 和 X[i, j + 1] 的值是否不同,或 X[i, j + 1] 和 X[i,j + 2] 的值是否不同,池化层始终输出 Y[i, j] = 1,使⽤2×2最⼤池化层在⾼度或宽度移动⼀个元素,卷积层仍可以识别模式
- 平均池化层(average pooling):计算池化窗口中所有元素的平均值
- 在处理多通道输⼊数据时,池化层在每个输⼊通道上单独运算,而不是像卷积层⼀样在通道上对输⼊进⾏汇总。池化层的输出通道数与输⼊通道数相同
6. 卷积神经⽹络(LeNet)
- LeNet 模型:第⼀个卷积神经⽹络,由 AT&T ⻉尔实验室研究员 Yann LeCun 在 1989 年提出,⽬的是识别图像中的⼿写数字。([LeCun et al., 1998] LeCun, Y., Bottou, L., Bengio, Y., Haffner, P., & others. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), 2278‒2324)
- LeNet (LeNet-5) 组成:卷积编码器(两个卷积层)、全连接层密集块(三个全连接层)。LeNet 数据流中,输⼊是⼿写数字,输出为 10 种结果的概率。每个卷积块的基本单元是⼀个 5×5 卷积层、⼀个 sigmoid 激活函数和 2×2 平均池化层(ReLU 和最⼤池化层还没出现)。第⼀卷积层有 6 个输出通道,第⼆个卷积层有 16 个输出通道。每个池操作通过空间下采样将维数减少 4 倍。将四维输⼊转换成全连接层所期望的⼆维输⼊,有三个全连接层,分别有 120、84 和 10 个输出,多个全连接层有助于表达非线性模型,全连接层仅判断是否有特征,而不考虑特征的位置
(3)输入 1×1×28×28 图像
→ 6×5×5 Conv,pad=2,s=1,n=(28-5+2×2)/1+1=28,6×28×28图像
→ 2×2 avePool,stride=2,n=28/2=14,6×14×14图像
→ 16×5×5 Conv,pad=0,s=1,n=(14-5+0)/1+1=10,16×10×10图像
→ 2×2 avePool,stride=2,n=10/2=5,16×5×5图像
→ 120×1 Dense,权重120×(16×5×5),偏置120×1
→ 84×1 Dense,权重84×120,偏置84×1
→ 10×1 Dense,权重10×84,偏置10×1,输出10个类别 - 为了构造⾼性能的卷积神经⽹络,通常逐渐降低卷积层的空间分辨率,同时增加通道数
- 传统的卷积神经⽹络中,卷积块编码得到的表征在输出前需由⼀个或多个全连接层处理
- 端到端:从像素到分类结果