Googlenet-v2

Googlenet-v2 (BN层的提出)

论文题目是: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift(批标准化:缓解内部协变量偏移加快深度神经网络训练

作者: Sergey Ioffe & Christian Szegedy(GoogLeNet-v1 一作)
单位: Google Inc.
发表时间: 2015年
本篇论文的主要trick:Batch Normalization

研究背景、成果和意义

相关研究:GoogLeNet –V1 采用多尺度卷积核,11卷积操作,辅助损失函数,实现更深的22层卷积神经网络,夺得ILSVRC-2014 分类和检测冠军,定位亚军。
本文在GoogLeNet-V1 基础上加入BN层,同时借鉴VGG的小卷积核思想,将5
5卷积替换为2个3*3卷积

ICS (Internal Covariate Shift):内部协变量偏移。
ICS现象:输入数据分布变化,导致的模型训练困难,对深度神经网络影响极大。如下图所示输入数据做不同的标准化,方差,均值不一样的分布。
Googlenet-v2_第1张图片
Googlenet-v2_第2张图片
白化(Whitening) 去除输入数据的冗余信息,使得数据特征之间相关性较低,所有特征具有相同方差,即将数据变为0均值,1标准差的形式,实现白化。
依据 是概率论公式:N(x)=x −mean/std,, 使X变为0均值,1标准差。mean-mean=0, std * 1/std = 1
区别: 白化是对数据做预处理,即在数据输入模型之前做处理,而BN层是在模型中对数据做处理。

成果:

  1. 提出BN层:加快模型收敛,比googlenet-v1快数十倍,获得更优结果
  2. GoogLeNet-v2 获得ILSVRC 分类任务 SOTA,但该论文没有参赛
    Googlenet-v2_第3张图片
    BN 优点:
    1、可以用更大学习率,加速模型收敛
    2、 可以不用精心设计权值初始化
    3、 可以不用dropout或较小的dropout
    4、 可以不用L2或者较小的weight decay
    5、 可以不用LRN(local response normalization)

研究意义:
1、加速了深度学习发展
2、开启神经网络设计新时代,标准化层已经成为深度神经网络标配
在Batch Normalization基础上拓展出了一系例标准化网络层,如
Layer Normalization(LN),
Instance Normalization(IN),
Group Normalization(GN)
不同标准层之间的相同点与差别:
相同点:公式相同
在这里插入图片描述
不同点:均值和方差求取方式

摘要

摘要核心

  1. 提出问题:数据分布变化导致训练困难(PS:权重变化–输出变化–输入变化–训练困难)
  2. 已有方法:通过小学习率和精心权重初始化,但是训练很缓慢,效果不佳
  3. ICS:上述现象为ICS,本文提出标准化网络层来缓解它
  4. BN:在模型中增加BN层,可在mini-batch中执行标准化,让模型可以用大学习率,不需要精心设计权值初始化,可以少用Dropout
  5. 本文成果:BN使模型训练加快14倍,并且可显著提高分类精度,在Imagenet分类任务中超越了人类的表现

BN层

Batch Normalization:批标准化
批:一批数据,通常为mini-batch
标准化:使得分布为 mean=0, std=1
在这里插入图片描述
如 1, 2 ;mean=1.5, std=0.5, 变换得到-1, 1
一定有正有负,并且拉到0附近了

存在问题:
使神经元输出值在sigmoid线性区,削弱了网络的表达能力
Googlenet-v2_第4张图片
解决办法:
在这里插入图片描述
采用可学习参数 γ 和 β,增加线性变换,提升网络表达能力
同时提供恒等映射的可能,当在这里插入图片描述在这里插入图片描述 时,BN层变为恒等映射,不改变神经元输出值
在这里插入图片描述
BN层操作流程
Googlenet-v2_第5张图片
加减乘除实现BN:减均值除以标准差乘γ 加 β
step1. 在mini-batch上计算均值
step2. 在mini-batch上计算标准差
step3. 减均值除以标准差(ϵ=1e^−5, 避免分母为0)
step4. 线性变换,乘γ 加 β,实现缩放与平移

注意
训练阶段:均值和标准差通过指数滑动平均统计得来,gamma和beta通过梯度反向传播不断更新
测试阶段:均值和标准差是固定的,gamma和beta也是固定的

存在问题: mini-batch的统计信息充当总体是不准确的
解决办法: 采用指数滑动平均(Exponential Moving Average)
a_t :当前值
mv_t : 指数滑动平均值
指数滑动平均计算公式 (pytorch里decay=1-momentum)
在这里插入图片描述
Googlenet-v2_第6张图片
Googlenet-v2_第7张图片
Googlenet-v2_第8张图片
当decay = 0.9
Googlenet-v2_第9张图片

PyTorch中的BN层

公式:=(1−)∗+∗
Googlenet-v2_第10张图片
Googlenet-v2_第11张图片
Googlenet-v2_第12张图片

BN优点

1、可采用较大学习率
针对类似Sigmoid的饱和激活函数,加上BN层后,可采用较大学习率
2、充当正则,顶替Dropout
加入BN层后,将当前样本与以前样本通过统计信息联系起来,相当于某种约束,经实验表明可减轻Dropout的使用

BN注意事项

1、BN层前一层不需要加偏置(bias),该偏置可被BN层中的Shift(Beta)给抵消
2、卷积网络时,是针对特征图为单位进行BN层,即使2D的BN操作

算法2. 训练及推理时BN层的操作
Googlenet-v2_第13张图片

GoogLeNet-V2结构

GoogLeNet-V2 模型特点

对V1的改进:

1、激活函数前加入BN
2、5x5卷积替换为2个3*3卷积。感受野相同,参数量减少,增加了非线性变换,提升了特征提取的能力。
3、第一个Inception模块增加一个Inception结构,即3c
4、增多“5*5”卷积核
5、尺寸变化(下采样方式)采用stride=2的卷积
6、增加9层(10-1层)到 31层(10表示inception数量)
GoogLeNet-V21结构图
Googlenet-v2_第14张图片
GoogLeNet-V2 结构图
Googlenet-v2_第15张图片

实验结果及分析

在MNIST上实验,更快更稳定

MNIST上进行BN实验
Googlenet-v2_第16张图片
1、观察收敛速度
(a)图,横坐标是训练的步长,纵坐标是分类精度。 更快
2、观察MLP网络最后一层输出值分布
(b)©图对比得到更稳定

结果:
加入BN层之后,收敛速度更快
加入BN层之后,输出值更稳定,缓解ICS问题

ILSVRC上,BN与GoogLeNet-v1速度对比
Googlenet-v2_第17张图片
ILSVRC上,BN与GoogLeNet-v1精度对比
Googlenet-v2_第18张图片
在ILSVRC上,训练速度更快,精度更高
横坐标是iteration有31x10的6次方,纵坐标是分类精度
参数设置:初始学习率=0.0015
x5: 表示学习率 = 0.0015*5 = 0.0075
1、加BN更快:BN-Baseline比Inception快一倍
2、可用大学习率:BN-x5 比 Inception 快14倍
3、加BN精度更高:BN-x30比 x5 慢,但精度更高
4、Sigmoid时,加BN精度更高:BN-x5-Sigmoid虽精度最低,比Inception-Sigmoind高很多

ILSVRC上,GoogLeNet-V2 与 其它模型对比
Googlenet-v2_第19张图片
结论在模型集成方面,超越人类精度
方法:六个BN-x30集成,六个BN-x30不同之处:
1、增大权重初始化的值,即分布的标准差变大
2、dropout设为5%或10%,GoogLeNet-V1是40%

论文总结

关键点

提出BN层,缓解ICS带来的训练困难,可实现

  1. 可以用更大学习率,加速模型收敛
  2. 可以不用精心设计权值初始化
  3. 可以不用dropout或较小的dropout
  4. 可以不用L2或者较小的weight decay
  5. 可以不用LRN(local response normalization)

借鉴VGG,全面将55卷积替换为两个33卷积堆叠

创新点

  1. 两个模型组合优点,放在一句话。加速14倍是BN-x5,获得显著提升的是BN-x30
    we can match its performance using only 7% of the training steps, and can further exceed its accuracy by a substantial margin. (1 Introduction p6)

  2. 0均值,1标准差的数据分布可加速网络训练
    It has been long known (LeCun et al., 1998b; Wiesler & Ney, 2011) that the network training converges faster if its in- puts are whitened – i.e., linearly transformed to have zero means and unit variances, and decorrelated. (2 towards Reducing Internal Covariate Shift p1)

  3. 即使不去相关,0均值,1方差的数据分布也可加快网络训练
    As shown in (LeCun et al., 1998b), such normalization speeds up convergence, even when the fea- tures are not decorrelated.(3 Normalization via Mini-Batch Statistics p1)

  4. 推理时,BN相当于线性变换,即缩放加平移,进一步的,可将BN层融合到卷积层中
    Since the means and variances are fixed during inference, the normalization is simply a linear transform applied to each activation. (3.1 p1)

  5. bias作用被抵消,因此不需要bias,并且线性变换中的beta可充当bias
    Note that, since we normalize W u+b, the bias b can be ignored since its effect will be canceled by the subsequent mean subtraction (3.2 p2)

  6. 卷积层的BN中,不仅考虑batch维度,还考虑空间维度,以feature map维度进行求取均值,方差
    we let B be the set of all values in a feature map across both the elements of a mini-batch and spatial locations – so for a mini-batch of size m and feature maps of size p × q, we use the effec- tive mini-batch of size m′ = |B| = m · pq. We learn a pair of parameters γ(k) and β(k) per feature map, rather than per activation.(3.2 p2)

  7. 一个样本的计算受到其它样本的约束,可认为是一种正则约束
    a training example is seen in conjunction with other examples in the mini-batch, and the training network no longer producing deterministic values for a given training example. (3.4 p1)

  8. 堆叠使用2个33卷积,全面替换55卷积,并且给予更多卷积核
    The main difference to the net- work described in (Szegedy et al., 2014) is that the 5 × 5 convolutional layers are replaced by two consecutive lay- ers of 3 × 3 convolutions with up to 128 filters. (4.2 p1)

  9. 加速BN的7个改变(4.2)
    1、Increase learning rate: BN特性
    2、 Remove Dropout:BN可充当正则
    3、 Reduce the L2 weight regularization by a factor of 5.
    因为BN允许权重大一些,所以对于权重大小的限制可以减轻一些
    4、 Accelerate the learning rate decay
    5、 Remove Local Response Normalization
    6、Shuffle training examples more throughly
    7、 Reduce the photometric distortions(减少图像光照的扰动)

  10. GoogLeNet-V1 采用ReLU和Sigmoid,获得的精度几乎是一样的,即ReLU在V1中并没有提升精度
    We also tempted to train the original Inception with sigmoid, but the model remained at the accuracy equivalent to chance.

  11. GoogLeNet-V1 训练到收敛,用了大约826个epochs,这一个数据在V1论文中从未给出
    Inception reached the accuracy of 72.2% after 31 · 10^6 training steps.

  12. 下一步工作:研究RNN中BN的效用,以及BN在域适应领域的应用

你可能感兴趣的:(卷积,神经网络,深度学习)