本文在微信公众号中排版更好看一丢丢,欢迎阅读:Batch Normalization批量标准化详解
欢迎关注我的公众号,微信搜algorithm_Tian或者扫下面的二维码~
现在保持每周更新的频率,内容都是机器学习相关内容和读一些论文的笔记,欢迎一起讨论学习~
在我的公众号之前有讲梯度消失和梯度爆炸现象,并在最后有提到业界现有解决这一问题的方案中有一个叫做batch normalization的方法,直译过来就是批量标准化。
它是一种在深度神经网络训练的数据处理中很有用的一个trick,在梯度优化及避免过拟合方面效果明显,2015年论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中进行了理论详解。
文章将根据原论文,从以下几个方面进行介绍:
1. 提出背景(Internal Covariate Shift和白化)
1.1 Internal Covariate Shift问题
3. 在网络中的实现方式(训练及预测的区别)
1. 提出背景
1.1 Internal Covariate Shift问题
从上一篇文章中我们知道,训练的时候深度网络参数会根据梯度进行更新,但是随着神经网络层数加深,底层网络的参数的微弱变化会被一层层网络进行指数级放大,参数的改变会让每一层的输入分布改变,导致上层的网络需要不断适应这些变化,模型训练会变得非常困难,这种现象就是Internal Covariate Shift,需要注意的是,它不止是在输入层或输出层存在,Internal这个单词表示的是内部的意思,顾名思义,深度网络的每一层都有可能面临分布不稳定的问题。
1.2 BN的提出背景
但是在机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保