Batch normalization简析

Batch normalization简析

What is batch normalization

资料来源:https://www.bilibili.com/video/av15997678/?p=34

Batch normalization通俗来说,就是对每一层都进行normalization处理,而不仅仅是输入数据。

使得数据分布较为均匀地在激活函数的激活范围内,更有效地向前传递

但是normalization不一定是有效的,我们可以让机器自己去学习,看加不加normalization哪一个更有效:

如图,最后我们加一个可以起到反normalization作用的层,两个参数可以通过学习得到。如果机器学习的结果是normalization没有对结果产生正面影响,可以通过调整这两个参数来抵消Normalization的影响

附一个normalization的效果图:

知乎这篇回答对batch normalization的作用有了一个比较深入的阐释,我这里引用一点结论性的内容:

在BN中,是通过将activation规范为均值和方差一致的手段使得原本会减小的activation的scale变大。可以说是一种更有效的local response normalization方法

Parameters in batch normalization

来源:https://www.jianshu.com/p/aa856451f916

BN层引入的参数则和输入层神经元个数相关,假设输入神经元个数为n,则该层引进的参数为2n

这是为什么呢?就要看我们上面的第二幅图了。从图中可以看到,输入的x经过计算得到x hat,但是γ,β 这两个参数是在正向传播中无法求得的,需要在反向传播中求:

这里写图片描述

这就是batch normalization层引入的参数

Batch normalization在每一次卷积、全连接后都可以进行使用,所以在计算CNN网络参数个数时要注意

posted @ 2019-12-01 00:02  别再闹了  阅读(394)  评论(0编辑  收藏  举报