Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记

说实话,这篇paper看了很久,,到现在对里面的一些东西还不是很好的理解。

下面是我的理解,当同行看到的话,留言交流交流啊!!!!!

这篇文章的中心点:围绕着如何降低  internal covariate shift 进行的, 它的方法就是进行batch normalization。

internal covariate shift 和 batch normalization

1. 什么是 internal covariate shift呢?

简单地理解为一个网络或system的输入的dirstribution不断地发生变化,导致网络的训练很难。

2. 文中的 batch normalization 怎么回事呢?

1)文中对输入data的每一维的基于batch 块的size 个数据 进行 normalization。 用公式表示: ,      这个其实就是 z-score。

2)为了不改变网络的 representation(进行normalizaiton, 肯定改变了输入的 scale了吧), 对normalization 之后的值进行scale 与 shift:          (我感觉这个很重要的,真的)

分析:

首先:对于如何尽可能地使每一层的 inputs 的 distribution 不发生变化这一件事情上,文章的做法就是:对输入进行 normalizaiton, 结果呢, 每一维上的数据的分布有了相同的 均值 0 与 方差(variance).     也仅仅只能在这两点上进行对网络的输入的分布进行控制, 来达到减少 internal covariate shift的目的;

第二点:这个网络的输入是指的:上一层的输入 X 加权 W 以后的值,即 WX(也可以加上偏置,不过应该省略掉,加了也没有屁用,经过 normalization就没有作用了,另个后面对它进行调整的beta值可以代替它的使用了)。 如果想对网络的输出即 X 进行 batch normalizaiton 也是可以的,不过呢,由于呢,X 需要进行加权 W,所以呢,仅仅通过 mean 与 variance (即一阶矩与二阶矩)并不能很好地控制 输入的 distribution.      文章3.2 section的原话为:    We could have also normalized the layer inputs u, but since u is likely the output of another nonlinearity, the shape of its distribution is likely t o change during training, and constraining its first and second moments would not eliminate the covariate shift。

第三点:为什么是在输入的每一维进行 normalizaiton,而不是对于输入的维度之间即每一层N个激活函数的输入之间进行呢?     (在有些的神经网络中,有时最开始的输入进行标准化)

后来思考了一个这个问题: 认为就是应该在基于 batch的每一维度之间进行 normalizaiton.    在训练过程中,对于不同的 examples, 就应该让输入的每一个维度的分布尽可能一样,别瞎变来变去的。      而输入的各个维度之间的分布尽可能地不同,只能这样才可以更好地进行分类啊。 你想想,把很多类别集中在一个小的区域好呢,还是分散更好呢?       或者这么理解是对的吧。。。

文章 section 2 的理解:

问题1: 这是想了好久呢,感觉问题在于: 这个公式,它们不相等啊。。。。     E(delta)b 不等于 (delta)b 的啊。

问题2:另外,如果考虑 EX 对 B 的影响,会发现 delta b 为0 啊。。,所以,因为经过normalization, 这个偏置对网络的输入没有什么影响啊,直接约没有了;

问题3:对于文中解释的,为什么会出现文中的那个情况,我真的没有看明白啊。。我感觉文中意思是应该把Ex中的相关参数考虑进去。      但是考虑进去的话,就出现问题2 的情况了,这个 b 直接不用更新了,反正它对输入也没有影响了。另外通过 beta 参数就可以代替偏置b 的作用了;

batch normalizaiton 的步骤与梯度公式:

在网络进行正向传导时, batch normalization的步骤为如下图,即文中的 algorithm 1:

这个不难,一看就明白;

下图为梯度更新公式:

对于上面的公式:主要明白第二个与第三个公式中的为什么要求 m 的加和:在基于mini-batch 的反向传播算法中, W 与 b 的更新都是要进行加和处理的,对吧,没有问题。而与W 和 b 是类似的,在 batch中的examples 之间是共用的,所以呢,需要加和。 到最后更新使用的时候,要不要除以 m, 这个需要看 loss函数是怎么定义的了;

链式法则时:永远记住谁是谁的变量,就不会出错了。例如:上面公式中为什么要求对的梯度呢,就是因为 xi 影响了 ,在求对 xi 的梯度时,需要计算在包含在 中的那一部分;

对于测试过程:

需要思考:训练的时候,normalizaiton的参数由batch 的example决定,而测试时,这个参数怎么办???

这个参数只能中训练样本决定(千万别想着由测试样本决定,怎么可能), 文章中采用无偏估计,理论为中全部的样本的均值与方差,但是计算公式如下:

公式表示把每一个batch的参数再求无偏估计的期望值, 而不是重新把样本全部相加计算;因为, batch 参数在训练过程的已经求出了啊,避免再次计算了,并且用无偏估计可以更好的估计出用全部样本计算出来的方差与均值;

再想一个问题:

很多时候,我们基于样本集1 训练出来的网络模型,可以通过 tuning,应用到 样本集中。           而采用 batch normalizaiton 的方法训练得到的网络模型,很大程度上应该受到了这样的限制。  因为参数中的均值与方差很依赖训练样本的;

训练与测试的总过程:

对于卷积的情况:

在全连接层的网络中的每一个神经元相当于卷积层的中每一个 feature map.  在同一个feature map中的神经元之间共享权值与偏置。对于卷积神经网络的 bath normalization, 这里的batch 指的是同一个 feature map 以及 batch 上的二者 联合起来的 batch . 例如: batch 大小为32, feature map 为 5*5 ,则应该在 32* 5*5 个输入之间求均值与方差;

bath normalization 是怎么enable higher learning rate的:

文章的解释为:当大的 lr时, 会使权值变大,而权值变大不会影响 layer jacobian(它决定了反向传播过程中的梯度在网络中的传播), 并且使 对权值的更新的梯度变小; 公式如下:

这个公式简单证明一下:

对于其它:

文章其它就是说了实验部分了,以及对 batch normalization 的其它一些功能的推测;

在实验部分最让我吃惊的地方就是: 使用batch normalization以后,学习速度明显加快了很多,这一点很重要啊;我感觉特厉害;

另外,文章有很多用于协方差矩阵、奇异值等的地方,这个需要加强演习;

论文引用:

Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv:1502.03167, 2015.

时间: 2024-10-12 11:30:31

Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记的相关文章

Batch Normalization导读

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性.目前几乎已经成为DL的标配了,任何有志于学习DL的同学们朋友们雷迪斯俺的詹特曼们都应该好好学一学BN.BN倒过来看就是NB,因为这个技术确实很NB,虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个经验领先于理论分析的偏

Batch Normalization 学习笔记

原文:http://blog.csdn.net/happynear/article/details/44238541 今年过年之前,MSRA和Google相继在ImagenNet图像识别数据集上报告他们的效果超越了人类水平,下面将分两期介绍两者的算法细节. 这次先讲Google的这篇<Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift>,主要是因为这里面的思想比较

论文笔记-Batch Normalization

论文题目:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 首先看看博客http://blog.csdn.net/happynear/article/details/44238541中最开始介绍的: 为什么中心化,方差归一化等,可以加快收敛? 补充一点:输入x集中在0周围,sigmoid更可能在其未饱和区域,梯度相对更大一些,收敛更快. Abstract 1.深

tensorflow中使用Batch Normalization

在深度学习中为了提高训练速度,经常会使用一些正正则化方法,如L2.dropout,后来Sergey Ioffe 等人提出Batch Normalization方法,可以防止数据分布的变化,影响神经网络需要重新学习分布带来的影响,会降低学习速率,训练时间等问题.提出使用batch normalization方法,使输入数据分布规律保持一致.实验证明可以提升训练速度,提高识别精度.下面讲解一下在Tensorflow中如何使用Batch Normalization 有关Batch Normalizat

[转] 深入理解Batch Normalization批标准化

转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 郭耀华's Blog 欲穷千里目,更上一层楼项目主页:https://github.com/guoyaohua/ 博客园 首页 新随笔 联系 订阅 管理 欲穷千里目,更上一层楼项目主页:https://github.com/guoyaohua/ 博客园 首页 新随笔 联系 订阅 管理 [深度学习]深入理解Batch Normalization批标准化 这几天面试经常被问到BN层的原理,虽然回答

《RECURRENT BATCH NORMALIZATION》

Covariate 协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响实验结果. whiting : https://blog.csdn.net/elaine_bao/article/details/50890491 <Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift>:https://blog.csdn.net/sinat_

激活函数,Batch Normalization和Dropout

神经网络中还有一些激活函数,池化函数,正则化和归一化函数等.需要详细看看,啃一啃吧.. 1. 激活函数 1.1 激活函数作用 在生物的神经传导中,神经元接受多个神经的输入电位,当电位超过一定值时,该神经元激活,输出一个变换后的神经电位值.而在神经网络的设计中引入了这一概念,来增强神经网络的非线性能力,更好的模拟自然界.所以激活函数的主要目的是为了引入非线性能力,即输出不是输入的线性组合. 假设下图中的隐藏层使用的为线性激活函数(恒等激活函数:a=g(z)),可以看出,当激活函数为线性激活函数时,

深度学习面试题21:批量归一化(Batch Normalization,BN)

目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 BN在GoogLeNet中的应用 BN的由来 BN是由Google于2015年提出,论文是<Batch Normalization_ Accelerating Deep Network Training by Reducing Internal Covariate Shift>,这是一个深度神经网络训练的技巧,主要是让数据的分布变得一致,从而使得

[CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

课程主页:http://cs231n.stanford.edu/ ? Introduction to neural networks -Training Neural Network ______________________________________________________________________________________________________________________________________________________________