卷积神经网络——Network In Network

来源:互联网 发布:java获取系统当前时间 编辑:程序博客网 时间:2024/06/03 13:05

Network In Network

Network In Network改进了传统的CNN网络,采用了少量的参数就松松击败了Alexnet网络,Alexnet网络参数大小是230M,采用这篇paper的算法才29M,减小了将近10倍。

MLP卷积层(文献创新点1)

Mlpconv层可以看成是每个卷积的局部感受野中还包含了一个微型的多层网络。
说的简单一点呢,利用多层mlp的微型网络,对每个局部感受野的神经元进行更加复杂的运算,而以前的卷积层,局部感受野的运算仅仅只是一个单层的神经网络罢了。
一般来说mlp是一个三层的网络结构。

全局均值池化(文献创新点2)

采用全局均值池化的方法,替代传统CNN中的全连接层。
与传统的全连接层不同,我们对每个特征图一整张图片进行全局均值池化,这样每张特征图都可以得到一个输出。这样采用均值池化,连参数都省了,可以大大减小网络,避免过拟合,另一方面它有一个特点,每张特征图相当于一个输出特征,然后这个特征就表示了我们输出类的特征。

1×1卷积的作用

  1. 实现跨通道的交互和信息整合
    1×1的卷积就是多个feature channels线性叠加。
    实现多个feature map的线性组合,实现跨通道的信息整合。
    卷积层之后经过激励层,1×1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力。
  2. 进行卷积核通道数的降维和升维,减少网络参数
    降维:比如,一张500 * 500且厚度depth为100 的图片在20个filter上做1×1的卷积,那么结果的大小为500*500*20。
    升维和减少参数。

BatchNormalization

BN本质上解决的是反向传播过程中的梯度问题。
BN所做的就是解决这个梯度传播的问题,因为BN作用抹去了w的scale影响。
尺度较大的 w 将获得一个较小的梯度,在同等的学习速率下其获得的更新更少,这样使得整体 w 的更新更加稳健起来。
总结起来就是BN解决了反向传播过程中的梯度问题(梯度消失和爆炸),同时使得不同scale的 w 整体更新步调更一致。

BN算法(Batch Normalization)其强大之处如下:
(1)你可以选择比较大的初始学习率,让你的训练速度飙涨。现在我们可以采用初始很大的学习率,然后学习率的衰减速度也很大,因为这个算法收敛很快。当然这个算法即使你选择了较小的学习率,也比以前的收敛速度快,因为它具有快速训练收敛的特性;
(2)你再也不用去理会过拟合中drop out、L2正则项参数的选择问题,采用BN算法后,你可以移除这两项了参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;
(3)再也不需要使用使用局部响应归一化层了(局部响应归一化是Alexnet网络用到的方法,搞视觉的估计比较熟悉),因为BN本身就是一个归一化网络层;
(4)可以把训练数据彻底打乱(防止每批训练的时候,某一个样本都经常被挑选到,文献说这个可以提高1%的精度,这句话我也是百思不得其解啊)。

BN算法本质原理就是这样:在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理,然后再进入网络的下一层。

然而其实实现起来并不是那么简单的。其实如果是仅仅使用上面的归一化公式,对网络某一层A的输出数据做归一化,然后送入网络下一层B,这样是会影响到本层网络A所学习到的特征的。打个比方,比如我网络中间某一层学习到特征数据本身就分布在S型激活函数的两侧,你强制把它给我归一化处理、标准差也限制在了1,把数据变换成分布于s函数的中间部分,这样就相当于我这一层网络所学习到的特征分布被你搞坏了,这可怎么办?于是文献使出了一招惊天地泣鬼神的招式:变换重构,引入了可学习参数γ、β,用来保持模型的表达能力。这就是算法关键之处。因此引入了这个可学习重构参数γ、β,让我们的网络可以学习恢复出原始网络所要学习的特征分布。

阅读全文
0 0
原创粉丝点击