网络中的网络NiN与GoogleNet
Posted 菜鸟炼丹师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络中的网络NiN与GoogleNet相关的知识,希望对你有一定的参考价值。
NiN
全连接层的问题
- 卷积层需要较少的参数
c i × c o × k 2 c_i\\times c_o \\times k^2 ci×co×k2 - 但卷积层后的第一个全连接层的参数
- LeNet: 16x5x5x120=48k
- AlexNet :256x5x5x4096=26M
- VGG:512x7X7X4096=102M
- 可以看到参数量的差别主要在于全连接层。NiN的一个重要思想就是想办法来取代全连接层
大量的参数会带来很多问题
- 占用大量的内存
- 占用很多的计算带宽(一个很大的矩阵乘法根本不是受限于计算,而是几乎是受限于不断访问内存所带来的限制)
- 很容易过拟合(某一层的参数过多很容易导致模型收敛特别快,反过来讲,就需要使用大量的正则化避免该层学到所有的东西)
NiN块
- 一个卷积层后跟两个全连接层
- 步幅1,无填充,输出形状跟卷积层输出一样
- 起到全连接层的作用
NiN架构
- 无全连接层
- 交替使用NiN块和步幅为2的最大池化层
- 逐步减小高宽和增大通道数
- 最后使用全局平均池化层得到输出(对每一个通道取平均值)
- 其输入通道数是类别数
总结
- NiN的核心思想是NiN块,NiN块是一个卷积层加上两个1 * 1的卷积层作为全连接层来使用(也就是说对每个像素增加了非线性,或者说对每个像素的通道数做了全连接层,而且是非线性的,因为有两层)
- NiN使用全局平均池化层(通道数量为所需的输出数量)来替代VGG和AlexNet中的全连接层(全局全连接层因为比较大,所以也不需要学一个比较大的全连接层),这样做的好处是不容易过拟合,显著减少网络参数的数量
- 整体来讲,NiN的架构比较简单,就是NiN块和最大池化层的重复堆叠,直到最后的全局平均池化层,因为完全放弃了全连接层,所以它的参数个数大大减少了,使得参数的总量与类别数的多少无关
- NiN的设计影响了许多后续卷积神经网络的设计
GoogLeNet
从LeNet到NiN,每个模型都有着各自的特点
但是有这么多选择,我们到底应该如何选择?
Inception块:我全都要
4个路径从不同层面抽取信息,然后在输出通道维合并
- 第一条路先进入一个1 *1的卷积层再输出
- 第二条路先通过一个1 * 1的卷积层对通道做变换,再通过一个pad为1的3 * 3的卷积层,使得输入和输出的高宽相同
- 第三条路先通过一个1 * 1的卷积层对通道数做变换,不改变高宽,但是再通过一个pad为2的5 * 5的卷积层提取空间信息特征,输入和输出还是等高等宽的
- 第四条路先通过一个pad为1的3 * 3的最大池化层,再通过一个1 * 1的卷积层
以上四种方式都没有改变输入的高和宽,因此对于Concatention操作我们只需要将其在通道数上做合并,因此输出只改变了输入的通道数
- 先确定总的输出通道数
- 对于认为比较重要的方向,尽可能给他分多的通道数
- 对于相对没那么重要的方向可以少分一点通道数
- 具体数值的设计可能就需要“炼丹”来确定了
为什么要用Inception块
- 跟单3x3或5x5卷积层比,Inception块有更少的参数个数和计算复杂度
GoogLeNet架构
-
一共分为5各阶段,使用了9个Inception块
-
最后使用了全局AvgPooling代替了全连接层
-
Stage1&2(更小的宽口。可以支撑模型走得更深)
-
Stage3
-
Stage4&5
Inception的变种
- Inception-BN(v2)-使用batch normalization
- Inception-V3-修改了Inception:块
- 替换5x5为多个3x3卷积层
- 替换5x5为1x7和7x1卷积层
- 替换3x3为1x3和3x1卷积层
- 更深
- Inception-V4-使用残差连接
总结 - Inception:块用4条有不同超参数的卷积层和池化层的路来抽取不同的信息
- 它的一个主要优点是模型参数小,计算复杂度低
- GoogleNet使用了9个Inception块,是第一个达到上百层的网络
- 后续有一系列改进


以上是关于网络中的网络NiN与GoogleNet的主要内容,如果未能解决你的问题,请参考以下文章
现代卷积神经网络(GoogleNet),并使用GoogleNet进行实战CIFAR10分类