问题导读:
1.卷积神经网络的基本单元?
2.典型卷积神经网络有哪些?
3.卷积神经网络Inception系列的启发?
往期回顾
在上一篇文章中,我们介绍了"Hugh技术分享"的整体流程。在这篇文章中,我们将介绍深度学习典型的网络结构—卷积神经网络(Convolutional Neural Network, CNN)。围绕CNN系列,我们将介绍Inception系列、ResNet系列和轻型网络系列。内容如下:
卷积神经网络是什么?
卷积神经网络(Convolutional Neural Networks, CNN)是一种前馈神经网络,对大型图像处理、图像分类有出色表现。如下图所示,CNN包括卷积层、池化层、全连接层等模块。
卷积层
不同的卷积核将提取图像的不同特征。
卷积操作能起到特征增强,并降低噪声的作用。
激励层
Sigmoid等激活函数:应用于传统的神经网络(NN),存在缺陷。
1)NN含多个全连接层,故求梯度计算量大;
2)其在深层网络中,易出现梯度消失等。
ReLu克服了其一些缺陷:
1)多用于卷积层后,求解梯度简单,且具有稀疏激活性;
2)收敛速度快,在一定程度上缓解梯度消失。
但由于ReLu单侧抑制造成负值被稀疏掉,导致信息丢失。ReLU变体PReLU、RReLU、ELU、SELU
使用经验:
1) 避免使用sigmoid,可以尝试RELU;
2) 若ReLu失效,可用Leaky ReLU或者Maxout等;
3) 在某些情况下,tanh有不错的结果,例如生成对抗网络在G中的激活函数使用RELU,但在输出层使用的是Tanh 。
池化层
相较于卷积层,池化层更能减少参数。
池化层选择区域的最大值(或平均值)取代区域。
池化具有平移不变性:
池化具有旋转不变性:
全连接层
在整个卷积神经网络中起到“分类器”的作用,但其权重矩阵的参数非常多,容易过拟合。
FC可以用GlobalAverage Pooling的方法代替
Global Average Pooling 计算每个通道的特征图的均值,将不同通道的均值连接成一个一维张量。
深度神经网络发展如下:
1 早期网络
CNN的开端:Lenet1986:
它由两个卷积层,两个池化层,以及两个全连接层组成。其缺点是当时计算资源有限,收敛速度慢。
ILSVRC2012 年冠军:AlexNet 2012
它的优点包括:1)数据增强,能够缓解过拟合;2)首次采用激活函数ReLu,收敛速度加快;3)dropout;4)Norm层(LRN);5)多gpu并行处理
多GPU并行计算。
缺点: 卷积核尺寸大(11x11),网络参数多。
VGGnet 2014
VGG克服了Alexnet的7x7滤波器,由多个小尺寸3x3滤波器级联而成。其中,3x3滤波器更易获取图像上下左右和中心信息,且多个3x3滤波器级联更有非线性。
尽管VGG比Alex-net有更多的参数,更深的层次;但是VGG收敛快,仅需要较少的迭代次数。
为什么VGG收敛快?
1)深度和小的filter尺寸,起到了隐式的规则化的作用;
2)一些层的pre-initialisation;随机初始化训练网络A,将A的前4层与全连接层作为其他网络(B、C)初始值,未赋值的中间层随机初始化。
VGG的Multi-scale训练新在何处?
把原始 image缩放到最小边S>224;然后在图像上提取224*224图像,进行训练。
方法1:在S=256,和S=384上训练两个模型,然后求平均;
方法2:在[256,512]scale上,随机选取一个scale,然后提取224*224的图片,训练一个网络。这种方法类似图片尺寸上的数据增益。
2 Inception系列
Inception V1:
为了克服Alexnet和Vgg参数量多、训练等问题,Inception V1采用一系列策略,性能优越。
出发点:Inception网络的一个动机就是通过稀疏连接进行近似成“large and dense layers”。
在网络结构方面:采用Inception近似一个稀疏结构。将1x1,3x3,5x5的conv和3x3的pooling堆叠在一起。在分类器模块中,GoogleNet V1用Average pooling 替换传统的FC,呈现(AvgPool-1x1Conv-FC-FC-Softmax)。
Inception模块优点:
1)增加了网络的宽度;2)增加了网络对尺度的适应性,提高了网络内部计算资源的利用率;3)1x1减少网络参数,且起到信息融合的作用。
Inception V1之Data augmentation:
1)图像各种尺寸patch的采样,这些patch的size平均分布在图像区域的8%到100%间,长宽比例在3/4和4/3间;
2)设置参数contrast, brightness 和color,调节光照变化有利于缓解过拟合;
3)使用随机差值(bilinear, area, nearest neighbor and cubicwith equal probability)进行图像的resize。
Inception-V2 2015
Inception-V2在v1的基础上进行了两个方面改进。
1)加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯。
2)参考VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算;
Inception-V2 其他优势与思考:
1) 可以使用更高的学习率;
解释:如果每层的scale不一致,实际上每层需要的学习率不一致。同一层不同维度的scale往往也需要不同大小的学习率,通常使用最小的那个学习率才能保证损失函数有效下降,Batch Normalization将每层、每维的scale保持一致,才可以直接使用较高的学习率进行优化。
2) 移除或使用较低的dropout;
解释:dropout是常用的防止overfit的方法,而导致overfit的位置往往在数据边界处,如果初始化权重就已经落在数据内部,overfit现象就可以得到一定的缓解。在论文中,最后的模型分别使用10%、5%和0%的dropout训练模型,与之前的40%-50%相比,可以大大提高训练速度。
3) 降低L2权重衰减系数;
解释:边界处的局部最优往往有几维的权重(斜率)较大,使用L2衰减可以缓解这一问题,使用Batch Normalization,就可以把这个值降低了,论文中降低为原来的5倍。
4) 取消Local Response Normalization层;
解释:由于使用了一种Normalization,再使用LRN就显得没那么必要了。而且LRN实际上也没那么work。
5) 减少图像扭曲的使用;
解释:由于现在训练epoch数降低,所以要对输入数据少做一些扭曲,让神经网络多看看真实的数据。
Inception-v3
Inception-v3一个最重要的改进是分解,将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1).
优点:
1)加速计算(多余的计算能力可以用来加深网络),将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性;
2)网络输入从224x224变为了299x299,更加精细设计了35x35/17x17/8x8的模块。
细节:
1)在辅助层加入了BN-auxiliary
2)全连接层后面也进行BN操作。
Inception-v4
在网络结构方面,Inception-v4的Inception模块结合Residual Connection。
此外,它的训练策略和v3一样。
优点:
ResNet的结构可以极大地加速训练,同时性能也有提升。
网友评论