背景
AlexNet(ISVRC2012)
AlexNet有5个卷积层和3个全连接层
- 用Relu函数代替Sigmoid函数
Gradient Vanishing
Sigmoid函数在深度网络中常常会导致导数逐渐变为0,使得参数无法被更新,神经网络无法被优化。原因在于两点:(1) 在上图中容易看出,当x较大或较小时,导数接近0,而后向传递的数学依据是微积分求导的链式法则,当前层的导数需要之前各层导数的乘积,几个小数的相乘,结果会很接近0 (2) Sigmoid导数的最大值是0.25,这意味着导数在每一层至少会被压缩为原来的1/4,通过两层后被变为1/16,…,通过10层后为1/1048576。
Dropout
在前向传导过程中,以一定的概率P使某个神经元停止工作。在同一网络里模拟出更多的组合的子网络,再求模型平均,从而防止过拟合。
Data Augmentation
通过数据增强,也可以防止过拟合,提高鲁棒性。
- 颜色增强(包括图像亮度、饱和度、对比度)
- 随机剪裁
- 旋转、平移、翻转、缩放变换
- 噪声(高斯噪声、椒盐噪声)
VGG16-19
- 增加层数
通过在现有网络结构的基础上,不断增加3*3卷积核,当深度增加到16-19层时,识别效果有较大提升。 - 采用小的卷积核
更少的训练参数
GoogleNet(Inception)
- 通过采用不同大小的卷积核提取特征在进行联合。意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
- 不使用FC层
使用Global Average Pooling取代最后的全连接层,因为全连接层参数多且易过拟合。做法即移除全连接层,在最后一层(文中使用mlpconv)层,后面加一层Average Pooling层。
ResNet-50、101、152
退化问题(随着模型深度增加,学习能力增强,性能却比浅的模型差。因为当模型变复杂时,SGD的优化变得更加困难,导致了模型达不到好的学习效果。)
*增加shortcut connection
这一想法源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。
DenseNet
why?结果说明一切。。
- 省参数和计算量
DenseNet 比其他网络效率更高,其关键就在于网络每层计算量的减少以及特征的重复利用。DenseNet 的每一层只需学习很少的特征,使得参数量和计算量显著减少。 - 抗过拟合
DenseNet 具有非常好的抗过拟合性能,尤其适合于训练数据相对匮乏的应用。神经网络每一层提取的特征都相当于对输入数据的一个非线性变换,而随着深度的增加,变换的复杂度也逐渐增加(更多非线性函数的复合)。相比于一般神经网络的分类器直接依赖于网络最后一层(复杂度最高)的特征,DenseNet 可以综合利用浅层复杂度低的特征,因而更容易得到一个光滑的具有更好泛化性能的决策函数