大家好,今天和各位分享一下深度学习中常见的标准化方法,在 Transformer 模型中常用的 Layer Normalization,从数学公式的角度复现一下代码。
看本节前建议各位先看一下 Batch Normalization:https://blog.csdn.net/dgvv4/article/details/130567501
Layer Normalization 的论文地址如下:https://arxiv.org/pdf/1607.06450.pdf
1. 原理介绍
深层网络训练时,网络层数的增加会增加模型计算负担,同时也会导致模型变得难以训练。随着网络层数的增加,数据的分布方式也会随着层与层之间的变化而变化,这种现象被称为内部协变量偏移(Internal Convariate Shift, ICS)。这要求模型训练时必须使用较小的学习率,且需要慎重地选择权重初值。ICS 导致训练速度减慢,同时也导致使用饱和的非线性激活函数(如sigmoid,正负两边都会饱和梯度为 0)时出现梯度消失问题。
为解决内部协方差变化(ICS),思路是固定每一层输出的均值和方差,即层归一化