卷积神经网络发展历程
LeNet
两个卷积层+两个池化层(下采样层)+两个全连接层
AlexNet
(2012)
更大更深
Relu、Dropout、最大池化层、数据增强
VGG
(2015)
VGG块:用大量的3x3(一般再大效果会不好)的卷积层堆起来加一个池化层做VGG块,然后用这些VGG块组成网络
NIN
(2014)
NiN完全取消了全连接层。( NiN块以一个普通卷积层开始,后面是两个1×1的卷积层。这两个1×1卷积层充当带有ReLU激活函数的逐像素全连接层。 第一层的卷积窗口形状通常由用户设置。 随后的卷积窗口形状固定为1×1。(对每个像素增加了非线性))
NiN使用一个NiN块,其输出通道数等于标签类别的数量。最后放一个全局平均池化层(global average pooling layer),生成一个对数几率 (logits)。NiN设计的一个优点是,它显著减少了模型所需参数的数量(不容易过拟合,更少的参数个数。提高泛化性)。然而,在实践中,这种设计有时会增加训练模型的时间。(收敛过慢)
**思想:**对于输出的每一个通道的特征图的所有像素计算一个平均值,经过全局平均池化之后就得到一个 维度==类别数 的特征向量,然后直接输入到softmax层;
**作用:**代替全连接层,可接受任意尺寸的图像
1)可以更好的将类别与最后一个卷积层的特征图对应起来(每一个通道对应一种类别,这样每一张特征图都可以看成是该类别对应的类别置信图)
2)降低参数量,全局平均池化层没有参数,可防止在该层过拟合
3)整合了全局空间信息,对于输入图片的spatial translation更加鲁棒
(softmax写在train函数里面(loss函数),没放在网络上面。【train_ch6里面】)
GoogLeNet
(2014)
增加网络深度和宽度的同时减少参数。
在多个尺寸上同时进行卷积再聚合。是在多个尺度上同时进行卷积,能提取不同尺度的特征。
五段,九个inception块,是第一个达到上百次的网络。
批量归一化
作用在:
全连接层和卷积层输出上,激活函数前;
全连接层和卷积层输入上。
对全连接层,作用在特征维;
对于卷积层,作用在通道维。
批量归一化固定小批量中的均值和方差
,然后学习出适合的偏移和缩放。
可以加速收敛速度,但一般不改变模型精度。
ResNet
(2015)
[大数乘小数,可能是小数;大数加小数,结果还是大数]
解决层数过深时,神经网络训练效果变差的情况。
没有残差的网络是有信息损失的。而resnet完全没有。