关于Batch Normalization

本文参考:深度学习入门:基于Python的理论与实现 斋藤康毅(作者)

我们的目标是使模型可以顺利高效的学习,所以我们努力的使各层的经过激活函数后的输出分布具有适当的广度。所以既然目标是这个,我们也可以强制性的调整这个值使其具有适当的分布广度。

 

Batch Normalization(简称Batch Norm)是2015年提出的。他有如下优点:

可以使学习快速进行(增大学习率)

不那么依赖初始值

抑制过拟合(降低Dropout等的必要性)

 

既然我们的思路使调整各层激活后的输出使其拥有适当的广度,那么我们要在输出后对数据分布进行正规化,即Batch Normalization 层(下文简称 Batch Norm 层),如图

关于Batch Normalization_第1张图片

所谓batch,即以进行学习的mini-batch为单位,按mini-batch进行正规化。具体而言就是使数据分布的均值为0,方差为1的正规化。

所谓batch,即以进行学习的mini-batch为单位,按mini-batch进行正规化。具体而言就是使数据分布的均值为0,方差为1的正规化。

数学表达式如图:

关于Batch Normalization_第2张图片

ε是一个微小值,是为了防止出现除以0的情况。

将上述操作插入到激活函数前面或者后面,可以有效减少数据分布的偏向性。

然后Batch Norm 层会对正规化后的数据进行缩放和平移变换,用数学式可以如下表示

 

这里,γ 和 β 是参数。一开始 γ = 1,β = 0,然后再通过学习调整到合适的值。

 

 

你可能感兴趣的:(毕设日志)