Batch Normalization

1. 背景

先来看看为什么要归一化操作吧。 归一化之前和归一化之后的代价函数示意图,左边的最归一化之前,右边为归一化之后,最中间的点为我们要优化的最优点(图片来自Andrew最新deeplearning.ai改善深层神经网络课程的1.9 Normalizing inputs)。

我们可以看到,在归一化之前,不同的特征的取值范围可能有所不同,这样带来的不好的地方就是在进行梯度下降的时候,学习率不能够设置太大,否则会造成明显波动,导致长时间不能收敛的情况。但是经过归一化之后,无论我们从哪一个位置开始,都能够方便地找到最小值,这样就更加容易优化,从而加速我们的训练过程。

2. Covariate Shift

论文”Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”关于”Covariate Shift”的定义如下:

We define Internal Covariate Shift as the change in the distribution of network activations due to the change in network parameters during training.

稍加解释,即分布的变化。怎么说呢? 假设我们现在已经使用黑猫的图片训练了一个分类器来识别猫的图片,但现在假如有一些白猫的图片,虽然都是猫,但是因为训练数据并没有白猫的图片,那么分类器大概率识别不出来,这就是分布的变化。也即Covariate Shift问题。 接下来来看看神经网络中的Covariate Shift问题吧。 首先,下图为一个神经网络,为了表示(画图)方便,没有全连接箭头来表示,记住层与层之前都是全连接即可,

接下来仅考虑第三个隐层:

3. Batch Normalization

顾名思义,就是一个归一化的操作。如何做呢? 首先和归一化输入类似,先标准化:

公式就是这样,让我们从一个神经元来看看它是怎么操作的吧。

4. BN正则化

我们知道神经网络的正则化可以使用dropout和l2 norm,在Ng的神经网络调参课程3.6 Why does BN work 中提到的另外一点就是BN可以看成是这一种正则化。 因为每一次我们使用BN的时候,都仅仅是使用了当前的mini-batch的均值和方差。但是每一个mini-batch肯定会存在一些噪音,这就相当于在训练的时候为每一个隐层单元增加了一些噪音(试想Denoising Autoencoder不就是在训练的时候增加一些噪音来使得训练的模型更加鲁棒吗) 当mini-batch的越大,就相当于看的信息越完整,这个时候的噪音也就越小,正则化的效果也就会降低。

5. 预测阶段的BN

参考资料: 1. Andrew Ng deeplearning.ai深度学习课程 2. Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift[J]. 2015:448-456.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法channel

案例实战|泰坦尼克号船员获救预测(XGBoost提交结果)

01 — 回顾 泰坦尼克号的案例系列已经推送了2个,分别解决了数据预处理:特征工程,数据清洗等,包括模型的BaseLine阶段的求解,关于这两篇文章,请参考: ...

4126
来自专栏大数据智能实战

pyaudio库的安装(portaudio.h文件无法找到问题解决)

pyaudio是语音处理的python库,提供了比较丰富的功能。 具体功能如下: 特征提取(feature extraction):关于时域信号和频域信号都有...

2705
来自专栏机器之心

资源 | GitHub新项目:轻松使用多种预训练卷积网络抽取图像特征

选自GitHub 机器之心整理 参与:思源 最近 GitHub 有一个非常有意思的项目,它可以使用多种预训练 TensorFLow 模型计算图像特征。对于每一个...

2916
来自专栏人工智能头条

RNN-RBM for music composition 网络架构及程序解读

1304
来自专栏Small Code

【TensorFlow】TensorFlow 的多层感知器(MLP)

前面有几篇博文讲了使用 TensorFlow 实现线性回归和逻辑斯蒂回归,这次来说下多层感知器(Multi-Layer Perceptron)的 TensorF...

27511
来自专栏大数据智能实战

基于seq2seq的中国古诗词自动生成技术

文本生成技术是深度学习赋予自然语言处理一项全新的技术,而刚好网上有这方面诸多的例子,因此趁着有空实现一下中国古诗的自动生成技术,还是挺好玩的。 具体步骤主要...

24710
来自专栏量子位

Facebook开源CNN机器翻译的PyTorch实现,速度提高80%

李林 编译整理 量子位 出品 | 公众号 QbitAI ? 还记得Facebook那篇用CNN做机器翻译的论文吗?Convolutional Sequence ...

3154
来自专栏机器之心

资源 |《TensorFlow深度学习》前两章提供开放下载

选自Matroid 机器之心编译 参与:黄小天 最近,《TensorFlow 深度学习》(TensorFlow for Deep Learning)一书发布前...

2675
来自专栏机器之心

教程 | 百行代码构建神经网络黑白图片自动上色系统

3126
来自专栏AI科技大本营的专栏

900万张标注图像,谷歌发布Open Images最新V3版

翻译 | Shawn 过去几年机器学习的发展使得计算机视觉有了快速的进步,系统能够自动描述图片,对共享的图片创造自然语言回应。其中大部分的进展都可归因于 Ima...

3377

扫码关注云+社区