面试官提问:什么是 Layer Normalization?为什么 Transformer 需要它?
面试者回答:
1. 什么是 Layer Normalization?
Layer Normalization(层归一化)是一种正则化技术,旨在缓解神经网络训练过程中的不稳定性。其核心思想是在每一层网络的计算输出上进行归一化,确保神经元的激活值在合理范围内,避免过大或过小的梯度。
Layer Normalization 的计算公式如下:
x
^
i
=
x
i
−
μ
σ
+
ϵ
\hat{x}_i = \frac{x_i - \mu}{\sigma + \epsilon}
x^i=σ+ϵxi−μ
- x i x_i xi 是层中神经元的输出。
- μ \mu μ 是该层输出的均值, σ \sigma σ 是该层输出的标准差。
- ϵ \epsilon ϵ 是防止分母为零的小常数。
- 归一化后的输出
x
^
i
\hat{x}_i
x^i 通常会乘以一个可学习的缩放参数
γ
\gamma
γ 并加上一个偏置项
β
\beta
β,从而得到最终的输出:
y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β
Layer Normalization 的不同之处在于,它是对一个层的所有神经元的激活进行归一化,而不是像 Batch Normalization 那样对整个 mini-batch 的数据进行归一化。
2. 为什么 Transformer 需要 Layer Normalization?
Transformer 中使用 Layer Normalization 主要是为了稳定训练过程,增强模型的收敛性,并解决梯度消失或爆炸的问题。具体原因如下:
2.1 稳定训练过程
Transformer 是深度模型,由于其自注意力机制和前馈神经网络的结构,随着网络的层数加深,神经元的激活值可能会变得非常大或非常小,导致梯度爆炸或梯度消失现象。Layer Normalization 通过归一化每一层的激活值,使得每一层的输出均值为零、方差为 1,从而缓解梯度的不稳定性。
2.2 解决不同输入分布的问题
在 Transformer 中,输入数据的分布可能会随训练动态变化,特别是在自注意力机制下,随着序列长度和内容的变化,注意力矩阵中的权重分布可能会显著不同。Layer Normalization 可以自适应地调整不同分布的数据,使每一层的输入数据都保持稳定的分布,从而提高模型的泛化能力。
2.3 提高模型的训练效率
相比 Batch Normalization,Layer Normalization 对 mini-batch 的大小不敏感。在 NLP 任务中,句子长度通常不一,导致每个 mini-batch 的分布差异较大,这种情况下 Batch Normalization 效果较差。而 Layer Normalization 对单个层的所有神经元进行归一化,不依赖于 batch 数据,因此特别适合像 Transformer 这种处理变长序列的模型。
2.4 配合残差连接工作
Transformer 中广泛使用了残差连接(Residual Connections),Layer Normalization 可以帮助处理残差路径上的激活值变化,使残差连接更稳定。特别是在多层网络结构中,Layer Normalization 的使用可以避免由于层间激活值的不稳定导致梯度更新困难的问题。
3. 总结
Layer Normalization 是一种通过对每层神经元输出进行归一化,来稳定训练、提高模型收敛性和性能的技术。对于 Transformer 这种深度模型,Layer Normalization 的引入极大地提升了模型训练的稳定性,特别是解决了长序列输入下的梯度问题,使得模型更容易收敛。相比 Batch Normalization,它更加适合 Transformer 的序列任务处理特点。