深度解析Batch Normalization(批归一化)
©作者 | 初识CV
单位 | 海康威视
研究方向 | 计算机视觉
前言
这是 2015 年深度学习领域非常棒的一篇文献:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,这个算法目前已经被大量的应用,最新的文献算法很多都会引用这个算法,进行网络训练。
论文标题:
Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift
论文链接:
https://arxiv.org/pdf/1502.03167.pdf
BN 的优点是:
1. 可以选择比较大的初始学习率,加快网络的收敛。实验结果表明,就算你使用小的学习率,收敛速度也会很快;
2. 减少正则化参数的 Dropout、L2 正则项参数的选择问题,BN 具有提高网络泛化能力的特性;
3. 不需要使用局部响应归一化层(局部响应归一化是 Alexnet 网络用到的方法),因为 BN 本身就是一个归一化网络层;
4. 可以把训练数据彻底打乱,防止每批训练的时候,某一个样本经常被挑选到,在 ImageNet 上提高 1% 的精度。
BN 的核心思想不是为了防止梯度消失或者防止过拟合,其核心是通过对系统参数搜索空间进行约束来增加系统鲁棒性,这种约束压缩了搜索空间,约束也改善了系统的结构合理性,这会带来一系列的性能改善,比如加速收敛,保证梯度,缓解过拟合等。
深入解析网络为什么需要Normalization
这里我们需要思考一个问题,我们知道在神经网络训练开始前,都要对输入数据进行归一化处理,那为什么需要归一化呢?归一化后有什么好处呢?
机器学习领域有个很重要的假设:IID 独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。因此,在把数据喂给机器学习模型之前,“白化(whitening)”是一个重要的数据预处理步骤,其中最典型白化方法是 PCA。白化一般包含两个目的:
1. 去除特征之间的相关性:独立;
2. 使得所有特征具有相同的均值和方差 :同分布。
每批训练数据的分布各不相同,那么网络需要在每次迭代中去学习适应不同的分布,这样将会大大降低网络的训练速度。对于深度网络的训练是一个非常复杂的过程,只要网络的前面几层发生微小的改变,那么这些微小的改变在后面的层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。
什么是Internal Covariate Shift(内部协变量转移)
大家都知道在统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如 transfer learning / domain adaptation 等。而 covariate shift 就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同,即:对所有 ,
详细剖析Batch Normalization
3.1 BN的设计思路
Batch Normalization 于 2015 年由 Google 提出,开 Normalization 之先河。其规范化针对单个神经元进行,利用网络训练时一个 mini-batch 的数据来计算该神经元 的均值和方差,因而称为 Batch Normalization。
其中:
1. 输入为数值集合 ,可训练参数 , 是 mini-batch 的大小, 是均值, 是方差;
2. BN 的具体操作为:先计算 的均值和方差,之后将 集合的均值、方差变换为0、1(对应上式中 ),最后将 中每个元素乘以 再加 ,输出。 是可训练参数,参与整个网络的 BP;
3. 归一化的目的:将数据规整到统一区间,减少数据的发散程度,降低网络的学习难度。BN 的精髓在于归一之后,使用 作为还原参数,在一定程度上保留原数据的分布。
为什么上述例子中可训练参数 的维度等于张量的通道数呢?
我们知道 BN 层是对于每个神经元做归一化处理,甚至只需要对某一个神经元进行归一化,而不是对一整层网络的神经元进行归一化。既然 BN 是对单个神经元的运算,那么在 CNN 中卷积层上要怎么搞?
假如某一层卷积层有 64 个特征图,每个特征图的大小是 ,这样就相当于这一层网络有 个神经元,如果采用 BN,就会有 个参数 ,这样岂不是太恐怖了。因此卷积层上的 BN 使用,其实也是使用了类似权值共享的策略,把一整张特征图当做一个神经元进行处理。在 CNN 中我们可以把每个特征图看成是一个特征处理(一个神经元),因此在使用Batch Normalization时,mini-batch size 的大小就是:,于是对于每个特征图都只有一对可学习参数:,即共有 对可学习参数:。
3.3 Testing过程中的BN
只是其中的 均值, 方差发生了改变,推理时,均值、方差是基于所有批次的期望计算所得,公式如下:
其中 表示 x 的期望。
参考文献
独家定制论文锦鲤卡套
限量 200 份
能否抢到全凭手速
扫码回复「卡套」
立即免费参与领取
👇👇👇
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关键词
问题
就是
时候
方差
参数
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。