9 CNN框架
9.1 LeNet-5
使用步长为1,大小为5 * 5的卷积核;下采样(池化层)步长为2,大小为2 * 2
[CONV-POOL-CONV-POOL-FC-FC]
LeNet在数字识别领域取得了成功,这个模型主要有两个思想
1.卷积,它的特点是局部感知和参数共享。局部感知对应着提取局部特征,具有很好的平移等变性。共享参数可以防止过拟合。
2.下采样,叫做pooling,用的比较多的是max pooling
9.2 AlexNet
输入图像:227 * 227 * 3
CONV1:96个步长为4,大小为11 * 11的卷积核;通过公式计算(227-11)/4+1=55,故
第一个卷积层输出数据大小:[55 * 55 * 96]
参数个数:[11 * 11 * 3 * 96] = 35K
POOL1:步长为2,大小为3 * 3的卷积核;通过公式计算(55-3)/2+1=27,同时池化层会保留上一层的数据深度故输出:[27 * 27 * 96]
参数个数:0
……
总结如下:
FC8会连接一个softmax函数,进行图像分类
细节:
1.首次使用ReLU激活
2.使用了局部响应归一化层
3.增加了大量数据
4.dropout按概率摒弃一些神经元
5.batch size 128
6.带有动量的SGD
7.初始学习率1e-2,每次到达极大值点后减小10倍,保持网络收敛直至训练结束
8.权重衰减
9.模型集成
注:早期GPU计算能力有限,故论文中初始将图像特征映射图拆分成两部分,分别进行计算,最后通过全连接层进行神经元合并
9.3 VGGNet
思想:小卷积核;深度增加(16-19层)
为什么保持使用小的卷积核?
可以得到比较少的参数;
可以尝试更深层的网络和更多的卷积核;
增加非线性映射。
VGG16:
注:内存消耗极大
VGG19与VGG16:
细节:
1.不需要局部响应归一化
2.使用模型集成
3.FC7的特征表达可以泛化用于其他任务
9.4 GoogLeNet
特点:
1.22层
2.高效的“Inception”模块
3.没有FC层
4.只有五百万个参数,远少于AlexNet
Inception模块的思想:
设计出一个局部网络拓扑结构,将其视为网络结构,然后堆放大量局部拓扑
上图表示对进入相同层的相同输入同时应用不同的卷积操作(1 * 1;3 * 3;5 * 5)和池化操作(3 * 3),如此便可以在不同层中得到不同的输出;将所有卷积核输出,并在深度层表面上串联在一起,输出一个张量,进入下一层。
问题:计算复杂,例如:
解决方法:
加入一层“bottleneck”(瓶颈层),在卷积运算之前降低特征图的维度
9.5 ResNet
残差网络具有152层,性能良好
当用普通的卷积神经网络堆叠越来越多的层数时,会发生什么?或者说只通过增加网络模型的深度来达到优化模型的效果可行吗?
答案是否定的,如下例:
无论是在训练集还是测试集上,56层的网络模型都不如20层的表现好
ResNet作者认为这是一个优化问题,即更深层次的网络要更加难以优化,通过构造解决方案,深层次模型至少能够表现得和较浅层次模型相同。
解决方法:不仅仅堆叠这些层次,而是让每一层都尝试学习一些所需函数的底层映射,使用模块尝试并拟合残差映射,而不是直接映射
注:左图中H(x)为学习目标,如果用普通的神经网络进行学习,网络可能需要很深的层次,但现在通过一种间接学习的方法,可以学习到与H(x)等价的内容,如右图F(x)就是我们所说的输入X与学习目标H(x)之间的残差
完整的残差结构:
1.残差块的堆叠
2.每个残差块有两个3 * 3的卷积层
3.定期地使用两倍数量的卷积核以步长为2进行下采样
4.网络开始的地方有额外的卷积层
5.网络的最后是没有全连接层的,只有一个全局的平均池化层
6.对于深度为50层以上的残差网络,通常也会加上瓶颈层
训练残差网络的实践中:
1.每个卷积层后使用批量正则化
2.使用Xavier初始化
3.SGD+动量
9.6 ResNet改进
改进了残差块,新的结构能够实现一种更直接的路径,以便于信息传播
Wide Residual Networks:
残差量是一个重要的影响因素,而非深度;所以使用了更宽的残差模块,意味着在每个卷积层有更多的卷积核
ResNext:在每个残差模块内建立多分支,分支的总和称为cardinality
随机深度改善残差网络:在训练时让网络“浅”一些,随机抛弃一些子层集
FractalNet:
1.残差不是网络中必须存在的因素,关键是高效地从浅层网络转型为深层网络
2.使用分形结构,同时存在浅层和深层路径到达输出值
3.dropout
DenseNet:
在每个密集区块内,每层都与其后的所有层以前馈形式相连接,因此对区块的输入也是对所有其他各卷积层的输入,此方法能缓解梯度消失的问题,因为这里用到了密度很高的连接,可以强化特征图的传递
SqueezeNet:关注网络的效率,由fire模块组成,每个fire模块都含有一个squeeze层和许多1 * 1的卷积核,传递给一个含有一些1 * 1和3 * 3的卷积核扩张的层;效率很高,参数很少