前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读学习 - Batch Normalization

论文阅读学习 - Batch Normalization

作者头像
AIHGF
修改2020-06-12 15:21:57
6680
修改2020-06-12 15:21:57
举报
文章被收录于专栏:AIUAI

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

[Paper]

在 PSPNet 与 DeeplabV3中,有对 BN 层对语分割有效性的使用,故再次对 BN 层提出的论文阅读学习,并理解其 Caffe 实现.

DeeplabV3 中关于 Batch Normalization 的使用如下:

在 ResNet 所添加的模块中包括对 BN 参数的学习,作者发现,BN 层对于网络的训练也很重要. 鉴于 BN 参数的训练需要较大的 batch size,DeeplabV3 采用 output_stride=16batch_size =16, BN 的 decay=0.997initial_learning_rate=0.007. 在训练集上训练 30K 次迭代后,固定 BN 参数,并采用 output_stride=8 在 PASCAL VOC 2012 训练集上,采用小的 base learning rate=0.001, 再训练 30K 次迭代.

神经网络训练面对的问题:

  • 每一网络层的输入的分布在训练过程中都随着前一层参数的变化而发生变化;
  • 需要较低的学习率和慎重的参数初始化,影响训练速度;
  • 难以利用饱和非线性的进行模型训练.

intenal covariate shift(内部相关变量偏移).

BN 层的作用:

  • 允许使用较高的学习率和不太严格的初始化.
  • 也可以作为正则项;
  • 在某些场合下可以减少对 Dropout 的需要.
  • Batch Normalization 针对当前的图像分类模型,在取得相同精度的情况下,训练时间减少了 14 倍.

1. Introduction

SGD 优化的目标损失函数:

如果能够保证网络的非线性输入的分布能够在网络训练过程中一直保持稳定,就可以减少饱和的可能,加速网络训练.

对于深度网络训练过程中所出现内部节点的分布变化,这里称之为 Internal Covariate Shift(ICS).

Internal Covariate Shift 是由于训练过程中网络参数的变化而导致网络激活值的分布发生的变化.

提出采用 Batch Normalization 来对 ICS 进行消除,加速网络训练. 其主要是采用 normalization 处理来固定网络层输入的均值和方差(means and variances).

  • 减少了网络的梯度计算对于参数 scale 和初始值的依赖.
  • 允许使用更大的 learning rates,而不出现发散.
  • 具有对模型的正则作用;
  • 能减少对 Dropout 的使用;
  • 能避免网络进入饱和状态进而利用网络的饱和非线性.

2. 减少 Internal Covariate Shift 所进行的探索

白化(whiten),将数据变换到均值为 0,方差为1,并去数据相关性. 通过将每一层的输入进行白化处理,可以固定数据的分布,移除 internal covariate shift 的负影响.

训练过程中每一步的白化处理,可以通过直接修改网络,或者修改作用于网络激活值的优化参数. 但是,如果在优化过程中混杂着这些修改,可能会导致梯度下降时需要对参数进行更新.

这显然是需要寻找一种能够进行输入归一化,可微分的,且不需要每次参数更新都对整个训练数据进行重新分析的处理方法.

3. 基于Mini-Batch 统计的归一化

由于对每一层输入的白化处理计算量大,且不是完全可微的,这里进行了两处必要的简化:

  • 对每一个标量特征进行独立归一化,使其均值为 0 ,方差为1,而不是对网络层输入和输出的全部特征进行白化;
这里写图片描述
这里写图片描述

BN 层是可微分的,能够保证模型的训练,且训练时网络层的分布具有较小的 internal covariate shift,加速模型训练.

3.1 基于 Batch-Normalized 的网络训练和部署

未添加 BN 层,网络层的输入是 xxx;添加 BN 层后,网络层的输入是 BN(x)BN(x)BN(x),即可采用SGD等进行网络训练.

BN 层有助于网络训练,但在 inference 阶段则是不必要的,网络输出只与输入相关. 因此,网络训练完成后,归一化操作为:


3.2 Batch-Normalized 卷积网络

BN层可以应用于网络的任何地方,这里以逐元素非线性仿射变换为例:

3.3 BN 可以有 higher learning rates

传统的深度网络训练中,太大的学习率会导致梯度发散或消失,或者较差的局部最小值.

BN 层能够帮助解决这种问题.

通过归一化网络的激活值,能够阻止参数的细微变化被放大,或者激活值的梯度次优变化. 例如,BN 能够避免网络训练陷入饱和非线性状态.

BN 还能够使网络更好的适应参数尺度. 正常情况下,学习率较大会增加网络层参数的尺度,接着会增大BP时梯度,导致模型发散.

但,加入 BN 层后,网络层的 BN是不受参数尺度影响的.

可以看出,尺度不会影响梯度的BP. 而且,较大的权重会使梯度值变小.

因此,BN 可以确保参数增长的稳定性.

此外,BN 还可以使网络层的 Jacobians 的奇异值接近 0,更有利于训练.

3.4 BN 对模型的正则

网络加入 BN 后进行训练时,一个训练样本是与 mini-batch 内的其它样本共同处理的,网络不是只有给定的训练样本来得到决策值. 这对于网络的泛化是有利的.

Dropout 是一种常用的降低网络过拟合的方法;但,在加入 BN 的网络中,Dropout 是可以被去除或者大量减少的.

4. Experiments

这里写图片描述
这里写图片描述

Figure 1. (a) MNIST 网络的测试精度,with BN & without BN. BN层能够更快的训练网络,并取得更高的精度.

(b,c) 可以看出加入 BN 后数据分布更加稳定,减少 internal covariate shift.

5. 相关

[1] - 深度学习中 Batch Normalization为什么效果好?

[2] - NTIRE2017夺冠的EDSR去掉了Batch Normalization层就获得了提高为什么?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
    • 1. Introduction
      • 2. 减少 Internal Covariate Shift 所进行的探索
        • 3. 基于Mini-Batch 统计的归一化
          • 3.1 基于 Batch-Normalized 的网络训练和部署
          • 3.2 Batch-Normalized 卷积网络
          • 3.3 BN 可以有 higher learning rates
          • 3.4 BN 对模型的正则
        • 4. Experiments
          • 5. 相关
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档