1. 层归一化(Layer Normalization)
层归一化(Layer Normalization,LN) 是一种用于神经网络中提高训练稳定性、加速收敛速度以及改善性能的技术。它的主要思想是对每一层的输入进行规范化,使得每一层的激活值的分布更加稳定,从而使模型的训练更加稳定。
原理:
层归一化的目的是通过对输入的特征进行规范化,使其具有零均值和单位方差。与批归一化(Batch Normalization,BN)不同,批归一化是对每一批次(batch)的数据进行规范化,而层归一化则是在每个单独的样本(输入特征)上进行规范化。
具体步骤如下:
-
计算每个样本的均值和方差:
对于每个输入样本的特征 x=[x1,x2,…,xd]x = [x_1, x_2, \dots, x_d]x=[x1,x2,…,xd],计算它的均值和方差:μ=1d∑i=1dxi \mu = \frac{1}{d} \sum_{i=1}^{d} x_i μ=d1i=1∑dxi
σ2=1d∑i=1d(xi−μ)2 \sigma^2 = \frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2 σ2=d1i=1∑d(xi−μ)2
其中,ddd 是输入特征的维度。
-
规范化:
对输入的每个特征进行归一化处理:x^i=xi−μσ2+ϵ \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} x^i=σ2+ϵxi−μ
其中,ϵ\epsilonϵ 是为了避免除零错误的一个小常数。
-
缩放和平移:
为了确保归一化后的输出能够保持更好的表达能力,引入两个可学习的参数:缩放参数 γ\gammaγ 和 平移参数 β\betaβ:yi=γx^i+β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β
其中,γ\gammaγ 和 β\betaβ 是可以通过训练学习的参数。
作用与优势:
- 提高训练稳定性:层归一化通过使每一层的输入分布更加稳定,避免了在训练过程中梯度消失或梯度爆炸的问题,尤其适用于循环神经网络(RNN)和 Transformer 等模型。
- 独立于批量大小:与批归一化不同,层归一化是对每个样本独立进行处理的,因此批量大小的变化对它的影响较小,适合于小批量训练。
2. 残差连接(Residual Connection)
残差连接(Residual Connection) 是一种非常有效的神经网络结构,用于解决深层神经网络在训练时可能遇到的梯度消失或梯度爆炸问题。它通过引入跳跃连接(skip connection),使得网络的每一层都可以直接接收前面层的输出,从而提高了网络的训练效果。
原理:
残差连接的核心思想是通过将输入 xxx 与经过某一层处理后的输出 F(x)F(x)F(x) 相加,形成一个“残差”(residual),从而避免信息在每一层传递过程中出现的衰减。其数学表达为:
y=F(x)+x y = F(x) + x y=F(x)+x
其中,F(x)F(x)F(x) 是通过神经网络层(如卷积层、全连接层等)得到的输出,xxx 是输入,yyy 是残差连接后的输出。
残差块(Residual Block):
在残差连接中,通常会用到一个残差块(Residual Block)。每个残差块包含了以下结构:
- 输入 xxx 经过一些神经网络层(如卷积、激活函数等)得到 F(x)F(x)F(x)。
- 输入 xxx 直接跳跃到输出层,与 F(x)F(x)F(x) 相加。
- 输出 y=F(x)+xy = F(x) + xy=F(x)+x 作为该块的输出。
作用与优势:
-
缓解梯度消失/爆炸问题:
通过残差连接,网络的每一层都能直接接收到前面层的输入。这使得反向传播过程中,梯度能够更容易地传递回去,从而避免了深层网络中常见的梯度消失问题。 -
加速收敛:
残差连接可以让网络的每一层学习到一个“残差”而不是直接学习到目标输出。这样,网络可以学习到更小的调整,而不是从零开始学习,进而加速了模型的收敛。 -
更深的网络:
残差连接使得深层网络能够更有效地训练,因此可以使用更深的神经网络来学习更加复杂的特征,提升模型的表达能力。 -
易于训练的深层模型:
通过引入残差连接,深层模型能够避免传统深层网络中遇到的训练困难(如梯度消失、梯度爆炸等),因此网络能够变得更加深,提升了模型的准确性。
总结:
-
层归一化 通过对每一层的输入进行规范化,使得每一层的激活值具有零均值和单位方差,从而提高了训练过程中的稳定性,尤其适用于处理变动较大的激活值,如在 Transformer 中的应用。
-
残差连接 通过将每一层的输入直接与输出相加,帮助网络在训练过程中缓解梯度消失问题,提高了深层网络的训练效率,使得网络可以更快地收敛,且能学习到更复杂的特征表示。
这两种技术常常一起使用,尤其是在深度神经网络和 Transformer 架构中。它们的结合使得现代深度学习模型能够更加稳定和高效地训练。