[1] 对输入进行零均值预处理,目的是为了加快训练。图像数据是高度相关的,假设其分布如下图a所示(简化为2维)。由于初始化的时候,我们的参数一般都是0均值的,因此开始的拟合y=Wx+b,基本过原点附近,如图b红色虚线。因此,网络需要经过多次学习才能逐步达到如紫色实线的拟合,即收敛的比较慢。如果我们对输入数据先作减均值操作,如图c,显然可以加快学习。更进一步的,我们对数据再进行去相关操作,使得数据更加容易区分,这样又会加快训练,如图d。
[2] 提出了Inception网络结构,在增加网络深度和宽度的同时减少了参数,一定程度上解决了参数太多,若训练数据集有限容易产生过拟合;网络越大、参数越多,计算复杂度越大;网络越深越容易出现梯度消失问题等问题。
[3] Inception V1:将CNN中常用的卷积(1x1,3x3,5x5)、池化操作(3x3)堆叠在一起(卷积、池化后的尺寸相同,将通道相加),一方面增加了网络的宽度,另一方面也增加了网络对尺度的适应性。
[4] 采用1x1卷积核来进行降维;使用5x5的卷积核仍然会带来巨大的计算量,所以文章借鉴NIN,在3x3前、5x5前、max pooling后分别加上了1x1的卷积核,以起到了降低特征图厚度的作用。
[5] 网络最后采用了平均池化来代替全连接层。全连接层因为参数个数太多,往往容易出现过拟合的现象,导致网络的泛化能力不尽人意。对每个特征图进行全局均值池化,采用均值池化,连参数都省了,可以大大减小网络,避免过拟合。
[6] 梯度消失:接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。梯度消失产生的原因:隐藏层的层数过多;采用了不合适的**函数。
[7] 梯度爆炸:梯度消失和梯度爆炸本质上是一样的,都是因为网络层数太深而引发的梯度反向传播中的连乘效应。梯度爆炸产生的原因:隐藏层的层数太多;权重初始化值过大。在一般的神经网络中,权重的初始化一般都利用高斯分布随机产生权重值。
[8] 辅助分类器:为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度,这样能避免离末尾softmax较远的层,难以训练的问题。通过这些层获取额外的训练损失,然后根据这个损失计算对应的梯度,最后把梯度加到整个网络的梯度中,进行梯度反向传播,这样可以有效缓解梯度消失的问题。实际测试时,2个额外的softmax会被去掉。