Transformer——Q65 推导前置归一化(Pre-LN)与后置归一化(Post-LN)的训练动态差异

该问题归类到Transformer架构问题集——残差与归一化——归一化技术。请参考LLM数学推导——Transformer架构问题集

在深度学习的神秘城堡中,归一化技术是打开高效训练大门的关键钥匙。前置归一化(Pre-LN)与后置归一化(Post-LN)作为城堡里的 “孪生守卫”,看似相似却有着截然不同的 “性格”,在模型训练中发挥着各异的作用。接下来,我们将深入探索这两种归一化方式,通过生动的语言、丰富的实例,详细推导它们在训练动态上的差异,为大家揭开深度学习训练优化的重要奥秘。

1. 前置归一化(Pre-LN)与后置归一化(Post-LN)基础概念

1.1 归一化技术的重要性

在深度学习模型训练过程中,随着网络层数的不断加深,数据的分布会发生变化,这种现象被称为 “内部协变量转移”。它就像训练道路上的 “拦路虎”,会导致梯度消失或爆炸等问题,使模型训练变得异常艰难。而归一化技术通过对数据进行特定变换,让数据分布更加稳定,为模型训练铺平道路,加速模型收敛,提升模型性能。

1.2 前置归一化(Pre-LN)

前置归一化,顾名思义,是在进入神经网络层的计算之前,先对输入数据进行归一化操作。以 Transformer 架构为例,在每个子层(如多头注意力层、前馈神经网络层)接收输入数据 x 后,首先进行归一化处理,得到归一化后的输入 \hat{x},然后再将 \hat{x} 送入子层进行后续计算。其归一化公式与常见的 LayerNorm 类似,假设输入数据 x 的维度为 d,则均值 \mu = \frac{1}{d} \sum_{i = 1}^{d} x_i,方差 \sigma^2 = \frac{1}{d} \sum_{i = 1}^{d} (x_i - \mu)^2,归一化后的 \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}},其中 \epsilon 是一个很小的常数,用于防止分母为零。

1.3 后置归一化(Post-LN)

后置归一化则是在神经网络层完成计算之后,对输出数据进行归一化。同样以 Transformer 架构为例,输入数据 x 先进入子层进行计算,得到输出 y,然后对 y 进行归一化处理,得到最终的输出 \hat{y}。它也是基于 LayerNorm

前置 LNpre-LN)是层归一化(Layer Normalization,LN)在网络结构中的一种放置方式。层归一化残差连接一起被认为是稳定深度网络训练的机制,可缓解梯度不适定问题模型退化等情况 [^1]。 在求归一化前置 LN 层结构中,通常在进行求操作之前先进行层归一化。以 Transformer 架构为例,在编码器部分存在前置 LN 后置 LN 的不同设计。前置 LN 能使得梯度在网络中的传播更加稳定,减少了梯度消失或爆炸的风险,从而让模型在训练过程中更加容易收敛。 在一些深度学习模型里,前置 LN 层的使用可以让模型在处理长序列时表现更好,因为它能够在每一层对输入进行归一化,使得每一层的输入分布相对稳定,避免了随着网络深度增加而出现的分布偏移问题。 ```python import torch import torch.nn as nn # 定义一个简单的包含前置 LN 的模块 class PreLNModule(nn.Module): def __init__(self, input_dim): super(PreLNModule, self).__init__() self.ln = nn.LayerNorm(input_dim) # 这里可以添加其他层,例如线性层等 self.linear = nn.Linear(input_dim, input_dim) def forward(self, x): # 前置 LN x = self.ln(x) # 进行其他操作,例如线性变换 x = self.linear(x) return x # 示例输入 input_dim = 128 batch_size = 32 seq_length = 10 input_tensor = torch.randn(batch_size, seq_length, input_dim) # 创建模块实例 pre_ln_module = PreLNModule(input_dim) output = pre_ln_module(input_tensor) print(output.shape) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值