深度学习之卷积神经网络学习笔记一

1. 引言

深度学习是一系列算法的统称,包括卷积神经网络(CNN),循环神经网络(RNN),自编码器(AE),深度置信网络(DBN),生成对抗模型(GAN)等。由于各算法的网络结构不同,被运用到的领域也不尽相同。卷积神经网络常被用于图像处理,如图像分类,语义分割,目标识别等领域。相比于传统的算法,深度学习能够自动构建特征,并联合这些特征完成相应任务。

2. 卷积神经网络

2.1 分类模型

卷积神经网络常被用于图像分类任务中。在图像分类任务中,模型更倾向于找到图像的主要语义特征,如手写数字集中的几何特征,imagenet数据集中的主体的纹理和颜色特征等。

LeCun(1989)提出了第一个卷积神经网络LeNet,并将其用于数字识别,且取得了较好的成绩。该文章首次提出了权值共享(weight sharing)和特征图像(feature map)的概念。模型包括一个输入层,三个隐藏层,一个输入层。隐藏层包括两层卷积,一层全连接。激活函数使用了双曲正切(tanh)函数,损失函数使用了均方误差函数,网络训练采用了反向传播算法。特征图像指的是卷积层通过在被提取层上滑动计算,得到的结果图。权值共享是指在一个卷积核在卷积过程时共享相同的参数,即一个卷积核对应一种特征图。反向传播算法是1986年Hinton提出用于训练浅层神经网络的算法,该算法能够通过计算神经元的梯度,优化神经元权值,从而得到最佳的神经网络模型。

自2012年,Hinton等提出AlexNet模型以来,卷积神经网络一直围绕以下几个方面进行优化:

1卷积核尺寸及多尺寸卷积核的研究;

2反向传播算法时出现的梯度消失问题;

3模型体量大小的优化问题;

4低层特征与高层特征融合问题。

AlexNet首次使用Relu激活函数在一定程度上解决了sigmoid和tanh等激活函数存在的梯度弥散问题,同时在全连接层使用了dropout随机忽略部分神经元,避免模型的过拟合,在Relu激活函数后使用了局部响应归一化函数增强较大值的神经元,抑制较小的神经元,使模型更加契合于分类任务。然而AlexNet使用了 11*115*5 的几百个大卷积核进行特征的提取,最后使用全连接层作为模型的分类器,这种大尺寸和数量的卷积核及全连接层大大增加了模型的计算量。

VGGNet继承了AlexNet的卷积-池化-全连接层的思想,并使用了多个 3*3 的卷积核叠加,提高了卷积层的感受野的同时,减少了神经元数量。例如,两个3*3卷积层的串联相当于1个 5*5 的卷积层,3个 3*3 的卷积层串联相当于1个 7*7 的卷积层,即3个 3*3 卷积层的感受野大小相当于1个 7*7 的卷积层。但是3个 3*3 的卷积层参数量只有 7*7 的一半左右。但是VGGNet由于使用了大量的卷积核及全连接层,所以计算量更为巨大。

GoogleNet提出了一种Inception结构,这种结构使用了 1*13*35*5 的卷积核进行特征提取,并使用了 1*1 的卷积核对大卷积核进行降维,减少计算量的同时,丰富了特征空间。值得一提的是,GoogleNet使用了 7*7 的卷积层取代了传统的全连接层,进一步提高了模型的效率。然而无论是VGGNet还是GoogleNet,随着模型层数的增加,分类性能并没有提高,反而收敛速度越来越慢,进而出现梯度消失的问题。

ResNet是何凯明等在2015年提出深度卷积神经网络模型,他们发现深层次模型在训练时,有些层对网络的分类能力并没有正面反馈,反而会降低模型的精度。所以他们提出了Shortcut Connection的结构,上层网络的输出为X,在下一层网络的变换映射下变为F(x),假设目前网络已达到最优,F(x)层为使模型退化的卷积层,我们的目的是将F(x)训练成恒等变换层。传统累加模型在训练时,很少能将F(x)自动训练成恒等变换层,ResNet提出的残差网络解决了这个问题,模型直接使用上层输出X及映射层F(x)的和作为模型的训练目标,何凯明等人通过大量实验发现将G(x)中的F(x)训练为0比将F(x)训练成恒等映射容易得多。从直观上来理解,SC结构中,每一层都能接收到上一层的信息,如此在链式求导时使每一项多出1(即X的求导项)。

目前主流的卷积神经网络,都采用了ResNet的SC结构。在以后的模型中,大多都借鉴了ResNet的思想,深层的卷积都联合了浅层特征,加强了特征的重用,缓解了梯度消失问题。典型的网络如DenseNet所有层之间密集连接,每层卷积层都接受来自前N-1个卷积层的结果,这种结构加大了特征的重用,减少了神经元的数量。简单来说,ResNet在很大程度上解决了上面提出的四个问题:首先,ResNet里面的每个SC结构里吸收了VGGNet的精华,都是 3*3 的卷积核嵌套。其次ResNet解决了深层次网络存在的梯度消失的问题,大大增加了网络的深度,如何凯明等已完成了一千多层的ResNet,并且分类性能并未下降。然后针对模型的体量问题,ResNet参考了GoogleNet的 1*1 卷积核思想,对高维特征进行了降维。最后,SC结构考虑了前一层的特征图,综合了前层的特征,这一思想为以后的模型构建提出了一种新的思路。

近年来,各种模型在体量上已经能够满足绝大多数特征的提取,然而这些特征对分类结果的影响是否相同?如在VGG-19中,最后一层一共有512个特征图,但是并不是每个特征图对最后的分类结果都有正面的贡献,那么如何区分这些特征的的贡献度呢?Google团队在RNN上首先使用了attention机制。Attention机制来源于人在观察事物并不是关注事物的整体,而是事物的某些突出的特征,即赋予突出特征较大权重。在CNN中,这一机制是通过卷积实现的:假设我们在某一层的特征图大小为 W*H*D (W和H代表特征图大小,D为特征图深度),首先使用深度为D,大小为W*H卷积核进行卷积,得到 1*1*D 的贡献度矩阵,并使用sigmoid函数进行归一化,得到的结果与原 W*H*D 直接相乘(不是矩阵乘法),这样每个特征图所占的权重就不一样了。目前,attention机制已经广泛运用到深度学习的各种模型中。

另一方面,卷积神经网络模型也朝着高效率,高精度的方向发展。无论是Google公司提出的轻量级网络MobileNet(2017)、EfficientNet(2019),还是Momenta公司提出的SENet(2017),都将研究方向放在如何在提高精度的前提下,尽量减少模型的体量,去除冗余网络分支。

从以上的模型发展可以看出,一个好的模型不仅能够保证其易于训练,拟合任务的数据集,以较小的体量充分地提取到图像特征,并且能够将多级特征联合,注重各级特征的语义,以便更好地完成分类任务,这些都是是以后我们构建模型所要考虑的问题。

2.2 分割模型

分割任务是将图像上的按预定义好的像素类别精确分割出来。相比于分类模型注重于图像主体特征的联合,分割模型更加注重于图像的细节特征的恢复。

2015年,Long等人首次提出了基于像素的语义分割模型全卷积神经网络(FCN)。FCN继承了CNN前5层卷积-池化操作,并将全连接层替换成了反卷积层。经过前5层卷积池化操作,分别得到原图1/2,1/4,1/8,1/16,1/32大小的特征图。若直接使用1/32特征图进行32倍反卷积,得到的模型为FCN-32;使用1/32的特征图进行2倍反卷积,得到1/16的热度图,再与1/16的特征图进行融合,最后对融合结果进行16倍反卷积,得到的模型为FCN-16。以此类推,文章还训练了FCN-8。由于FCN-8融合了1/8特征图,所以其细节上的效果要好于FCN-16和FCN-32。然而FCN还是存在以下缺点:

1由于经过了几次池化操作,使得图像细节丢失,所以FCN的结果不够平滑与精细;

2FCN是对逐像素进行分类,这导致每个像素被当做独立的个体,割裂了像素间的空间关系,缺乏空间一致性;

3FCN直接使用了8倍、16倍、32倍反卷积,由于反卷积步长太大,难以训练达到原标签的分割效果。

U-Net是FCN的改进模型之一,最开始被用于医学影像的分割。相比于FCN,U-Net使用了最经典的编码-解码结构。编码即为CNN特征提取的过程,在解码时,U-Net不仅使用了反卷积,还融合了每个卷积-池化层的特征图,并在解码时使用了卷积层进行训练,所以严格意义上讲,U-net才是第一个在上采样时经过训练的分割网络模型。其联合底层的特征与分类模型的思想也有异曲同工之妙。然而U-net还是具有传统分割神经网络模型的缺点:最大池化问题。大部分神经网络模型在进行特征提取时都会使用最大池化来减小网络体量,突出主要特征。然而这种方法在分割时忽略了细节,并且丢失了主体特征的空间位置信息,直接对这种特征图进行上采样容易出现特征位置的不对应。

SegNet改进了U-Net的上采样结构。SegNet在编码-解码时使用的是VGG模型,只是在池化的过程中记录了每个最大池化特征的索引,在模型上采样时,通过这些索引将这些特征还原到原来位置。这种方法略去了FCN和U-Net的反卷积操作,直接使用值为0的padding进行上采样,所以模型比上述两种容易训练,体量也更小。然而由于池化层的存在,SegNet在小物体分割方面远不如大物体。

---

为了减少池化层带来的信息损失,Deeplab将VGG最后两层池化的步长减少为1,同时增加了1层padding,如此可以保留细节信息。然而更改了VGG的池化层后,原模型的感受野变小,Deeplab提出了一种带孔卷积增加了模型的感受野,图a中是dilated=1的带孔卷积,就是普通卷积。图b中是dilated=2的带孔卷积,红点表示参与计算的点,未参与计算的带孔点由0补充,如此达到扩大感受野的目的,通过合适的步长,可以让特征图上所有点参与到卷积中。带孔卷积在不增加计算量的前提下,增大了分割模型的感受野,同时减少了池化层,让模型更加聚焦于细节特征。

3. 总结

在卷积神经网络模型中,还有一种用于目标检测和识别的网络如RCNN,该网络主要包括分类和回归两种任务,分类主要是描述任务主体的类别,回归主要是找出任务主体的具体位置,这里不再展开讨论。

从LeNet到AlexNet,是模型体量的增加和训练方法的优化。从AlexNet到VGGNet,是卷积方法的优化和特征图的泛化。而GoogleNet更多的是压缩模型结构,去除冗余。ResNet则是卷积神经网络突破层数限制的重大创新。在以后的模型中,研究者们更加注重特征的含义和模型的效率,Attention机制提出了“不同特征不同权重”的新研究方向,DenseNet给出特征的重复利用的研究路线。SENet和EfficientNet则更注重于网络体量的压缩与优化。所以,解释各层特征的含义,了解模型在训练时具体的过程,优化模型体量,增加分类精度,是卷积神经网络研究的重点和难点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾城一少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值