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,则该层引进的参数为
这是为什么呢?就要看我们上面的第二幅图了。从图中可以看到,输入的x经过计算得到x hat,但是γ,β 这两个参数是在正向传播中无法求得的,需要在反向传播中求:
这就是batch normalization层引入的参数
Batch normalization在每一次卷积、全连接后都可以进行使用,所以在计算CNN网络参数个数时要注意