Sep 11, 2018 原创文章

  初识 Batch Normalization 算法

基于孪生网络的目标跟踪算法研究笔记

分享到: 0

请保证您的浏览器支持MathJax插件,以免数学公式无法显示


Batch Normalization 算法于2015年在论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中发表。主要的作用就是加速网络模型的训练速度。

BN算法(Batch Normalization)其强大之处如下

(1) 你可以选择比较大的初始学习率,让你的训练速度飙涨。 以前还需要慢慢调整学习率,甚至在网络训练到一半的时候,还需要想着学习率进一步调小的比例选择多少比较合适,现在我们可以采用初始很大的学习率,然后学习率的衰减速度也很大,因为这个算法收敛很快。当然这个算法即使你选择了较小的学习率,也比以前的收敛速度快,因为它具有快速训练收敛的特性;

(2) 你再也不用去理会过拟合中drop out、L2正则项参数的选择问题。 采用BN算法后,你可以移除这两项了参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;

(3) 再也不需要使用使用局部响应归一化层了(局部响应归一化是Alexnet网络用到的方法,搞视觉的估计比较熟悉),因为BN本身就是一个归一化网络层;

(4)可以把训练数据彻底打乱(防止每批训练的时候,某一个样本都经常被挑选到,文献说这个可以提高1%的精度,这句话我也是百思不得其解啊)。

什么是Internal Covariate Shift ?

Covariate Shift 指的是训练集的数据分布和预测集的数据分布不一致,这样的情况下如果我们在训练集上训练出一个分类器,肯定在预测集上不会取得比较好的效果。这种训练集和预测集样本分布不一致的问题就叫做“covariate shift”现象。

假设x是属于特征空间的某一样本点,y是标签。假设q1(x)是测试集中一个样本点的概率密度,q0(x)是训练集中一个样本点的概率密度。最终我们估计一个条件概率密度$p(y|x,θ)$,它由x和一组参数θ={θ1,θ2……θm}所决定。对于一组参数来说,对应loss(θ)函数评估性能的好坏

综上,当我们找出在q0(x)分布上最优的一组θ’时,能否保证q1(x)上测试时也最好呢?

传统机器学习假设训练集和测试集是独立同分布的,即q0(x)=q1(x),所以可以推出最优θ’依然可以保证q1(x)最优。但现实当中这个假设往往不成立,伴随新数据产生,老数据会过时,当q0(x)不再等于q1(x)时,就被称作covariate shift。

而Internal Covariate Shit 是在网络层级间发生的Convariate Shift。

输入的归一化处理

简单来说BN算法就是在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理,然后再进入网络的下一层。


参考资料:

  1. 深度学习(二十九)Batch Normalization 学习笔记 : https://blog.csdn.net/hjimce/article/details/50866313
  2. 深度学习中 Batch Normalization为什么效果好? - Jiang的回答 - 知乎 : https://www.zhihu.com/question/38102762/answer/164790133
  3. 机器学习】covariate shift现象的解释 : https://blog.csdn.net/mao_xiao_feng/article/details/54317852
  4. covariate shift现象以及解决方法 : https://blog.csdn.net/guoyuhaoaaa/article/details/80236500

打赏


感谢您的支持,我会继续努力的!

扫码支持

长按识别二维码或打开支付宝扫一扫 完成打赏
或 使用<支付宝链接>打赏


关闭

分享到: 0