Batch Normalization的理解

原文链接:

  Batch Normalization原理与实战 - 知乎 (zhihu.com)

 

总结:

  背景:权重矩阵W的梯度与其左边那一层的激活值有关(参考:理解方向传播(BP算法) - Hisi - 博客园 (cnblogs.com)),而且如果用ReLU激活函数会导致梯度爆炸会消失,或者是sigmoid函数以及tanh函数会导致梯度消失,所以权重矩阵W可能会立马更新到+-inf,或者是更新的很慢很慢,为了解决W与激活值的关系,提出了PCA白化(过渡品),但是PCA白化太复杂,开销大,于是在此基础之上提出了Btach Normalization。

  思路:对第L层的激活值的每个特征做标准化,也就是对L层的输出矩阵的非线性激活矩阵的每一行单独做标准化,到这步,由于标准化会损失底层神经网络的学习成果,所以再用线性变换弥补学习效果。

 

tip:原文中的“对每个特征进行normalization”(如下图)中的特征指的就是网络中某一层的第k个神经元,第一个特征指的就是第一个神经元,第二个特征指的就是第二个神经元。

另外这篇的自定义代码把batchnorm计算过程讲清了。

(196条消息) PyTorch——Batch Normalization(批量归一化)_cqu_shuai的博客-CSDN博客_batch normalization pytorch

 

posted @ 2022-01-29 16:14  Hisi  阅读(32)  评论(0编辑  收藏  举报