BN怎么计算(训练过程)

设有BN层Batch Norm理解,即一个BN层可学习的参数有Batch Norm理解Batch Norm理解

对一个mini-batch,Batch Norm理解

  • 第一步,计算当前batch的均值和方差(对同一层的所有节点):Batch Norm理解  Batch Norm理解
  • 第二步,进行规范化:Batch Norm理解
  • 第三步,进行平移和缩放:Batch Norm理解.

BN的推理过程(如何加速BN?)

采用在训练过程中收集的全局统计量来代替均值和方差:Batch Norm理解Batch Norm理解.

然后将上面两部分带入到Batch Norm理解中,得到:

Batch Norm理解


早期解释

《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》

将每一层的输入都归一化到Batch Norm理解上,减少所谓的内部协方差漂移(Internal Covariate Shift).

但问题在于,不论是哪一层的输入都不可能是严格满足正态分布的,所以这种解释有些牵强。


新的解释

《How does batch normalization help optimization?》

BN使得整个非线性函数的landscape更为平滑,从而使得训练过程变得更加平稳。


一种易理解的推导思路

设有损失函数Batch Norm理解,由利普希茨条件,得存在常数Batch Norm理解使得下式成立:

                                                                  Batch Norm理解

通过构建辅助函数(推导过程略),可以推出:

                                                       Batch Norm理解

因为训练过程讲究一个梯度下降,所以Batch Norm理解.

而显然Batch Norm理解,故只能要求Batch Norm理解.

现在问题转化成如何选择合适的Batch Norm理解,一个自然的选择就是Batch Norm理解.

其中,Batch Norm理解是一个大于0的标量,也就是我们常说的学习率

将其带入上述不等式,可以得到:

                                                        Batch Norm理解

为了保证梯度下降,一个充分条件是:Batch Norm理解

可以得到两个结论:

(1)Batch Norm理解足够小,换言之就是学习率足够小,但这样肯定是不可行的;

(2)Batch Norm理解足够小,这是可行的,还可以间接地允许我们增大学习率。

问题在于,Batch Norm理解是与Batch Norm理解相关的,要想改变Batch Norm理解,只能通过改动Batch Norm理解实现。

最终得到的结论就是:BN有助于降低网络的Batch Norm理解常数。从而使得网络更容易训练,比如允许增大学习率等。

定性讨论,因为Batch Norm理解小了,根据利普希茨条件,也就表明在函数任一点及其邻域上函数值的变化程度不会太大,也就可以理解成函数的走势更平缓了,也就是所谓的landscape平滑了

虽然想要降低Batch Norm理解,但不能以牺牲网络拟合能力为代价,不然直接给Batch Norm理解乘个0就完事了。。。因此,想到了要对网络输入做文章。两点讨论证明BN的作用的确如此:

结论1:将网络各层输入减去该层所有样本的均值,有助于在不降低网络拟合能力的情况下降低Batch Norm理解常数

结论2:将网络各层输入(减去均值后)除以所有样本的标准差,可以起到类似自适应学习率的作用。使得每一层参数的更新更为同步,减少在某一层过拟合的可能性。


最终结论

想要扩大学习率,提高训练速度,只需要在训练过程中,令每一层的输入都减去其均值,再除以去方差即可。

不过由于mini-batch只是样本整体的一个近似,故batch size还是越大越好,越大对均值和方差的估计更好,但同时对算力提出了一定要求。

此外,在训练过程中,需要维护一组变量将均值和方差保存下来,以便在推理的时候使用。

Batch Norm理解Batch Norm理解只是锦上添花,可能作用并不大。

完整的解释BN很难,BN的作用更像是多种因素共同起作用的结果。


另一种定性的解释思路

对于我们常用的一些**函数,Batch Norm理解一般都是非线性较强的区间。所以,将网络输入归一化到Batch Norm理解上,更有助于发挥**函数的非线性,充分发挥网络的拟合能力。


参考链接:苏剑林. (2019, Oct 11). 《BN究竟起了什么作用?一个闭门造车的分析 》[Blog post]. Retrieved from https://kexue.fm/archives/6992

相关文章:

  • 2021-12-30
  • 2021-12-29
  • 2021-08-15
  • 2021-11-12
  • 2021-10-11
  • 2021-05-24
  • 2021-06-29
  • 2022-12-23
猜你喜欢
  • 2021-04-02
  • 2021-05-31
  • 2021-08-29
  • 2021-10-05
  • 2021-05-17
  • 2021-11-13
相关资源
相似解决方案