《神经网络与深度学习》第五章 卷积神经网络
第五章 卷积神经网络(CNN)
卷积神经网络是一种具有局部连接、权重共享等特性的深层前馈神经网络。
在用全连接前馈网络来处理图像时,会出现的问题:
-
参数太多;导致训练效率降低,容易出现过拟合;
-
需要进行数据增强来提取局部不变性特征(图像的平移、旋转、缩放等操作)。
全连接前馈网络很难提取这些局部不变特征
卷积神经网络是受生物学上感受野机制的启发而提出的。感受野(Receptive Field)机制主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号。在视觉神经系统中,视觉皮层中的神经细胞的输出依赖于视网膜上的光感受器。视网膜上的光感受器受刺激兴奋时,将神经冲动信号传到视觉皮层,但不是所有视觉皮层中的神经元都会接受这些信号。
一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元.
卷积神经网络有三个结构上的特性:
- 局部连接
- 权重共享
- 汇聚
卷积神经网络组成:卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络、使用BP进行训练。
应用:图像分类、人脸识别、物体识别、图像分割、自然语言处理、推荐系统等;
5.1 卷积
-
一维卷积:计算信号的延迟累积, .称 为滤波器或卷积核,K为滤波器长度(远小于信号序列长度N)。也可记为 ;
-
二维卷积: ,也可记为 ,常设置均值滤波器,即
-
特征映射:一幅图像在经过卷积操作后得到的结果;
-
互相关(不翻转卷积): 衡量两个序列相关性的函数; ,也可以记为
- 神经网络中使用卷积是为了进行特征抽取,卷积核是否进行翻转和其特征抽取能力无关。当卷积核是可学习的参数时,卷积核互相关在能力上是等价的,因此在应用中常使用互相关操作代替卷积。
- 卷积的变种
- 步长S:卷积核在滑动时的时间间隔
- 零填充P:在输入向量两端进行补零,防止特征丢失
- 常用卷积
1) 窄卷积:S=1,P=0,输出长度为M-K+1.
2) 宽卷积:S=1,P=K-1,输出长度为M+K-1.
3) 等宽卷积:S=1,P=(K-1)/2,输出长度为M.
- 卷积层的数量: ,M表示输入神经元个数,卷积大小为K,步长为S,一侧填充个数为P。
- 卷积的数学性质
-
交换性: ,如二维图像 ,两端各补U-1和V-1个零,得到全填充的图像 ,那么图像X和卷积核W的宽卷积定义为
-
导数:
但注意式中是宽卷积,不是互相关,为了一致性,我们可以将此卷积写成互相关形式,
5.2 卷积神经网络
- 组成:卷积层、汇聚层、全连接层。
5.2.1 用卷积层代替全连接层
局部连接
原先全连接前馈神经网络中,第l层和第l-1层有 个参数。使用卷积代替后, ,此时因为局部连接参数个数变为 个,为卷积核大小
权重共享
作为参数的卷积核对于第𝑙 层的所有的神经元都是相同的.如图b中,所有的同颜色连接上的权重是相同的。
权重共享可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征.因此,如果要提取多种特征就需要使用多个不同的卷积核
由于局部连接和权重共享,卷积层的参数只有一个 𝐾 维的权重 和 1 维的偏置,共𝐾 + 1个参数.参数个数和神经元的数量无关。此外,第l层的神经元的个数不是任意的,而是满足
5.2.2 卷积层
-
作用:提取一个局部区域的特征;
-
特征映射:一幅图像(或其他特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征。
-
输入特征映射组:为三维张量;
-
输出特征映射组: 为三维张量;
-
卷积核: 为四维张量;
给出卷积层的三维结构:
- 参数个数: 个
5.2.3 汇聚层/池化
-
汇聚层[Pooling Layer](子采样层)
-
作用:筛选特征,降低特征数量(也可以通过增加卷积层的步长,但不会显著减少),避免过拟合;使网络对一些小的局部形态改变保持不变性,并拥有更大的感受野。
-
实质将该层的输入特征映射组划分为很多区域(区域之间可重叠),对每个区域进行下采样得到一个值。
-
常用的汇聚函数
1) 最大汇聚
2) 平均汇聚
- 卷积层虽然可以显著减少连接的个数,但是每一个特征映射的神经元个数并没有显著减少。
- 过大的采样区域会造成信息过多的损失。
5.2.4 典型的卷积网络结构
卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。
- 趋向于小卷积、大深度
- 趋向于全卷积
- 一个卷积块为连续M 个卷积层和b个汇聚层(M通常设置为2 ∼ 5,b为0或1)。一个卷积网络中可以堆叠N 个连续的卷积块,然后在接着K 个全连接层(N 的取值区间比较大,比如1 ∼ 100或者更大;K一般为0 ∼ 2)。
- 由于卷积的操作越来越灵活(如不同的步长),汇聚层的作用也变得越来越小,因此目前比较流行的卷积网络中,汇聚层的比例正在逐渐降低。
5.3 参数学习
-
一般地,第l层为卷积层,第l-1层的输入特征映射为 ,通过卷积计算得到的第l层的特征映射净输入
第l层的第p 个特征映射净输入为 第l层中共有 个卷积核和P个偏置,因此损失函数 关于第l层的卷积核的偏导数和偏置的偏导数为:
5.3.1 卷积神经网络的反向传播算法
-
汇聚层
其中 为第l层使用的激活函数,up为上采样函数。如果下采样是最大汇聚,误差项 中每个值会直接传递到上一层对应区域中的最大值所对应的神经元,该区域中其他神经元的误差项都设为0。如果下采样是平均汇聚,误差项 中每个值会被平均分配到上一层对应区域中的所有神经元上。
-
卷积层
-
第l层的第d个特征映射的误差项 的具体推导过程为:
5.4几种典型的CNN
5.4.1 LeNeT-5
-
LeCun,1998;
-
基于 LeNet-5 的手写数字识别系统在 90 年代被美国很多银行使用,用来识别支票上面的手写数字。
-
LeNet-5 共有 7 层。
-
连接表:实际操作中,卷积层的输入和输出特征映射之间不一定是全连接的关系,可以让每一个输出特征映射都依赖于少数几个输入特征映射。如C3层的连接表:
-
如果第p个输出特征映射都依赖于第d个输入特征映射,则 ,否则为0.
,
T为 大小的连接表,假设连接表T的非零个数为K,每个滤波器的大小为 ,那么共需要 个参数。
5.4.2 AlexNet
- 2012年ImageNet图像分类竞赛冠军
- 第一个现代深度CNN
- 使用GPU进行并行训练;
- 采用ReLU作为非线性激活函数;
- 使用Dropout防止过拟合;
- 使用数据增强来提高模型准确率。
- 结构:包含5个卷积层、3个汇聚层、3个全连接层(最后一层使用softmax函数)
- 此外,AlexNet还在前两个汇聚层之后进行了局部响应归一化,以增强模型的泛化能力。
5.4.3 Inception网络
-
Inception模块:一个卷积层包含多个不同大小的卷积操作;同时使用 等不同大小的卷积核。
-
Inception网络:由多个Inception模块和少量的汇聚层堆叠而成。
-
Inception v1 模块结构:
-
采用了4组平行的特征抽取方式
-
其中右边3处1 x 1的卷积核的作用:提高计算效率,减少特征映射的深度,减少参数数量
-
Inception网络其他版本:
1) GoogleNet
2014年ImageNet图像分类竞赛冠军;
结构:9个Inception v1 模块和5个汇聚层以及其他一些卷积层和全连接层,总共22层。
中间两个辅助分类器加强监督信息,避免梯度消失的问题;
2) Inception v3 网络:
2016年;
结构:用多层的小卷积核来替代大的卷积核,减少计算量和参数量,并保持感受野不变。具体改变:
(1)使用两层 的卷积来替代v1中的 的卷积;
(2)使用连续的 和 来替换 的卷积;
(3) 引入标签平滑以及批量归一化等优化方法进行训练。
5.4.4 残差网络
-
2016年
-
残差网络:通过给非线性的卷积层增加直连边的方式来提高信息的效率;将很多个残差单元串联起来构成的一个非常深的网络。
-
思想:将目标函数 拆成两部分, ,x为恒等函数,后面部分为残差函数,根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数。并且逼近残差函数更容易实现。
因此原来的优化问题转换为:让非线性单元 去近似残差函数,并用 去逼近
-
残差单元示例:
-
类似的网络:Highway Network
5.5 其他卷积方式
5.5.1 转置卷积
-
卷积通常实现高维特征到低维特征的转换,但在一些任务重需要将低维特征映射到高纬特征,并且依然希望通过卷积操作来实现。
-
如高维向量 到低维向量 ; 而低维向量到高维向量
-
全连接网络中,前向计算和BP就是一种转置关系;第l+1层的净输入为 ,BP时,第l层的误差项为
-
卷积操作也可以写为仿射变换的形式,假设一个5维向量x,经过大小为3的卷积核 进行卷积,得到3维向量z,卷积操作可以写为
C是一个稀疏矩阵。实现3维到5维向量x的映射,则 ,从放射变化的角度来看,两个卷积操作
也是形式上的转置关系。
- 因此将低维特征映射到高维特征映射的卷积称为转置卷积,也称为反卷积。
微步卷积
- 2015年;
- 微步卷积:步长的转置卷积;
- 实现:在输入特征之间插入0来间接地使步长变小;
- 如卷积操作中,希望对应的转置卷积的步长为 ,需要在输入特征之间插入 个0来使得其移动速度变慢;
5.5.2 空洞卷积
-
2015,2018年;
-
增加输出单元的感受野的方式:
-
增加卷积核的大小,但会增加参数的数量;
-
增加层数,比如两层 的卷积核可以近似 卷积的效果,但会增加参数的数量;
-
在卷积之前增加汇聚操作,但会丢失一些信息。
-
空洞卷积:不增加参数数量,同时增加输出单元感受野的一种方法;
-
如果在卷积核的每两个元素之间插入D-1个空洞,卷积核的有效大小为 ,D称为膨胀率
https://nndl.github.io/v/cnn-conv-more
5.6 总结和参考资料
- LeNet:LeCun Y, Boser B, Denker J S, et al. Backpropagation applied to handwritten zip code recognition[J]. Neural computation, 1989, 1(4):541-551.
- LeNet:LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J].Proceedings of the IEEE, 1998, 86(11):2278-2324.
- AlexNet:Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]//Advances in Neural Information Processing Systems 25. 2012: 1106-1114
- VGG:Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J].arXiv preprint arXiv:1409.1556, 2014.
- Inception v1,v2,v4:Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015: 1-9.
- Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016:2818-2826.
- Szegedy C, Ioffe S, Vanhoucke V, et al. Inception-v4, inception-resnet and the impact of residual connections on learning.[C]//AAAI. 2017: 4278-4284.
- 空洞卷积:Chen L C, Papandreou G, Kokkinos I, et al. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 40(4):834-848
- 可变形卷积:Dai J, Qi H, Xiong Y, et al. Deformable convolutional networks[J]. CoRR, abs/1703.06211, 2017, 1(2):3.
- 全卷积网络:Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 3431-3440.
- 卷积网络的可视化:Dumoulin V, Visin F. A guide to convolution arithmetic for deep learning[J]. ArXiv e-prints, 2016.
本文作者:王陸
本文链接:https://www.cnblogs.com/wkfvawl/p/16094070.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-04-02 C++ 实验 使用重载运算符实现一个复数类
2019-04-02 C++ 操作符重载