【CV-baseline】04GoogLeNet-v2-笔记

学习目标

  1. Batch Normalization
  2. Internal Covariate Shift
  3. GoggleNet-2

论文导读

论文研究背景、成果以及意义

背景
Internal Covariate Shift

ICS现象:输入数据分布变化,导致的模型训练困难,对深度神经网络影响极大. 具体到神经网络,就是一个网络层中的不同神经元输入的的数据分布不均匀,比如第一个神经元的输入数据是均值为0的正态分布,但是另一个神经元的输入数据是均值为-3的正态分布。

白化

去除输入数据的冗余信息,使得数据特征之间相关性较低,所有特征具有相同方差。依据概率论
N ( x ) = x − m e a n std ⁡ \mathrm{N}(\mathrm{x})=\frac{x-m e a n}{\operatorname{std}} N(x)=stdxmean
使得 x x x变为0均值,1标准差的分布。

研究成果
  1. 提出BN层:加快模型收敛,比googlenet-v1快数十倍,获得更优结果
  2. GoogLeNet-v2 获得ILSVRC 分类任务 SOTA

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
x ^ ( k ) = x k − E [ x ( k ) ] Var ⁡ [ x ( k ) ] \widehat{x}^{(k)}=\frac{x^{k}-\mathrm{E}\left[x^{(k)}\right]}{\sqrt{\operatorname{Var}\left[x^{(k)}\right]}} x (k)=Var[x(k)] xkE[x(k)]
比如如 1,2 ;mean=1.5, std=0.5, 变换得到-1, 1 一定有正有负,并且拉到0附近了.

这里k是指第k个神经元。也就是说,标准化是以特征维度,以神经元为单位进行操作的。假设中间一层隐藏层有3个神经元,那么就是k=1, 2, 3

在这里插入图片描述

算法步骤总结

加减乘除实现BN: 减均值除以标准差,乘以 γ \gamma γ β \beta β

  1. 在mini-batch上计算均值

  2. 在mini-batch上计算标准差

  3. 减均值除以标准差( ϵ = 1 e − 5 \epsilon=1 e^{-5} ϵ=1e5, 避免分母为0)

  4. 线性变换,乘以 γ \gamma γ加上 β \beta β,实现缩放与平移

BN层的问题

线性退化

使得神经元输出值在sigmoid线性区,削弱了网络的表达能力。【就相当于把sigoid变成了一个线性linear函数,使得整个神经网络近似于变成了一个大的线性变换

解决办法:
y ( k ) = γ ( k ) x ^ ( k ) + β ( k ) y^{(k)}=\gamma^{(k)} \widehat{x}^{(k)}+\beta^{(k)} y(k)=γ(k)x (k)+β(k)
采用可学习参数 γ \gamma γ β \beta β, 增加线性变换,提升网络表达能力。同时提供恒等映射的可能。当 γ ( k ) = Var ⁡ [ x ( k ) ] \gamma^{(k)}=\sqrt{\operatorname{Var}\left[x^{(k)}\right]} γ(k)=Var[x(k)] β ( k ) = E [ x ( k ) ] \beta^{(k)}=\mathrm{E}\left[x^{(k)}\right] β(k)=E[x(k)]时,BN层变为恒等映射,不改变神经元输出值。

均值和标准差的代表性

Mini-batch的统计信息充当总体是不准确的

解决办法:采用指数滑动平均。假设t时刻当前值是 a t a_t at,指数滑动平均值是 m v t mv_{t} mvt,我们有
m v t = decay ⁡ ∗ m v t − 1 + ( 1 − decay ⁡ ) ∗ a t m v t = ∑ i = 1 t decay ⁡ t − i ∗ ( 1 − decay ⁡ ) ∗ a t \begin{array}{l} m v_{t} &=\operatorname{decay} * m v_{t-1}+(1-\operatorname{decay}) * a_{t} \\ m v_{t} &=\sum_{i=1}^{t} \operatorname{decay}^{t-i} *(1-\operatorname{decay}) * a_{t} \end{array} mvtmvt=decaymvt1+(1decay)at=i=1tdecayti(1decay)at
就是说我们用上一个时刻的滑动平均值作为参考,给予当前值和上一个平均滑动值不同的衰减权重,得到一个平均的结果。如果我们把递推公式展开,有
m v 1 = ( 1 − d e c a y ) a 1 m v 2 = d e c a y ∗ m v 1 + ( 1 − d e c a y ) a 2 = d e c a y ( 1 − d e c a y ) ∗ a 1 + ( 1 − d e c a y ) a 2 m v 3 = d e c a y 2 ∗ ( 1 − d e c a y ) ∗ a 1 + d e c a y ( 1 − d e c a y ) a 2 + ( 1 − d e c a y ) a 3 \begin{array}{l} m v_{1}=(1-d e c a y) a_{1} \\ m v_{2}=d e c a y * m v_{1}+(1-d e c a y) a_{2}=d e c a y(1-d e c a y) * a_{1}+(1-d e c a y) a_{2} \\ m v_{3}=d e c a y^{2} *(1-d e c a y) * a_{1}+d e c a y(1-d e c a y) a_{2}+(1-d e c a y) a_{3} \end{array} mv1=(1decay)a1mv2=decaymv1+(1decay)a2=decay(1decay)a1+(1decay)a2mv3=decay2(1decay)a1+decay(1decay)a2+(1decay)a3
decay可以取值0.9

假设到了时刻t, t − i > C t-i>C ti>C, 且C是正无穷大。这就意味着时间延续了很久,t变得很大。那么就有
m v t = ∑ i = 1 t decay ⁡ t − i ∗ ( 1 − decay ⁡ ) ∗ a t = ∑ i = 1 t − C − 1 decay ⁡ t − i ∗ ( 1 − decay ⁡ ) ∗ a t + ∑ i = t − C t decay ⁡ t − i ∗ ( 1 − decay ⁡ ) ∗ a t ≈ ∑ i = t − C t decay ⁡ t − i ∗ ( 1 − decay ⁡ ) ∗ a t m v_{t} =\sum_{i=1}^{t} \operatorname{decay}^{t-i} *(1-\operatorname{decay}) * a_{t} \\ =\sum_{i=1}^{t-C-1} \operatorname{decay}^{t-i} *(1-\operatorname{decay}) * a_{t}+ \sum_{i=t-C}^{t} \operatorname{decay}^{t-i} *(1-\operatorname{decay}) * a_{t}\\ \approx \sum_{i=t-C}^{t} \operatorname{decay}^{t-i} *(1-\operatorname{decay}) * a_{t} mvt=i=1tdecayti(1decay)at=i=1tC1decayti(1decay)at+i=tCtdecayti(1decay)ati=tCtdecayti(1decay)at
也就是说 m v t mv_t mvt只和 a t − C , a 2 , … , a t a_{t-C}, a_{2}, \ldots, a_{t} atC,a2,,at有关。

BN优点

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

BN注意事项

  1. BN层前一层不需要加偏置(bias),该偏置可被BN层中的Shift( β \beta β)给抵消
  2. 卷积网络时,是针对特征图为单位进行BN层,即使2D的BN操作, 我们也不是针对二维特征图中的神经元之间进行BN,而是以特征图为单位进行BN操作。
    在这里插入图片描述

模型结构

对V1的改进:

  1. 激活函数前加入BN
  2. 5 × 5 5\times 5 5×5卷积替换为2个 3 × 3 3\times 3 3×3卷积
  3. 第一个Inception模块增加一个Inception结构
  4. 增多“5*5”卷积核
  5. 尺寸变化采用stride=2的卷积,放弃max pooling
  6. 增加9层(10-1层)到 31层.(10表示inception数量)

实验结果分析

MNIST:更快更稳定

ILSVRC:更快精读更高,可用大学习率

模型集成:超越人类精度

论文总结

关键点&创新点

  • 提出BN层,缓解ICS带来的训练困难,可实现 1. 可以用更大学习率,加速模型收敛
    • 可以不用精心设计权值初始化
    • 可以不用dropout或较小的dropout
    • 可以不用L2或者较小的weight decay
    • 可以不用LRN(local response normalization)
  • 借鉴VGG,全面将 5 × 5 5\times 5 5×5卷积替换为两个 3 × 3 3\times 3 3×3卷积堆叠

总结

  1. 两个模型组合优点,放在一句话。加速14倍是BN-x5,获得显著提升的是BN-x30
  2. 0均值,1标准差的数据分布可加速网络训练
  3. 即使不去相关,0均值,1方差的数据分布也可加快网络训练
  4. 推理时,BN相当于线性变换,即缩放加平移,进一步的,可将BN层融合到卷积层中
  5. bias作用被抵消,因此不需要bias,并且线性变换中的beta可充当bias
  6. 卷积层的BN中,不仅考虑batch维度,还考虑空间维度,以feature map维度进行求取均值,方差
  7. 一个样本的计算受到其它样本的约束,可认为是一种正则约束
  8. 堆叠使用2个 3 × 3 3\times 3 3×3卷积,全面替换 5 × 5 5\times 5 5×5卷积,并且给予更多卷积核
  9. 加速BN的7个改变
    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中并没有提升精度
  11. GoogLeNet-V1 训练到收敛,用了大约826个epochs,这一个数据在V1论文中从未给出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值