想象你是一位体操教练,训练着一支队伍。你会发现每个队员的状态波动都不同:小张的平衡木成绩时高时低,小李的跳马起伏特别大。如果比赛时裁判只看绝对分数,那些天生动作幅度大的队员就吃亏。于是你想出了一个办法——每个队员上场前,先看看他自己历次成绩的平均水平和波动幅度,然后把他今天的分数“校准”到统一的基准上。不管他原本是高分型选手还是低分型选手,一校准之后,裁判看到的就是一颗颗稳定且可比的状态值。 深度学习世界里有一位“教练”,也在做同样的事情,它叫 Layer Normalization(层归一化)。在 Transformer 这个大舞台上,“队员”就是每一个 token(词元),“各科成绩”就是它的特征维度。Layer Norm 做的,就是让每一个 token 自己跟自己比:算一算自己各维度的平均值和波动范围,然后把它们拉回一个标准的“基准分”附近。这样一来,无论某个词的向量信号一开始有多强或多弱,模型都能在一个稳定的尺度上理解它。 在 Transformer 的训练中,信号每经过一层网络就会被“推挤”“拉扯”,如果没有这位教练在关键时刻踩一脚刹车、扶一把方向盘,深层网络的梯度就会像雪崩一样失控。Layer Norm 正是这个承上启下的关键角色,是训练稳定性的守护神。这篇文章,我们就来完整认识这位“教练”的每一招每一式。
理解 Layer Norm,是读懂 Transformer 训练稳定性的第一块基石。无论你以后做 LLM 微调、模型架构设计还是推理引擎优化,它都是绕不开的底层素养。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
概念原理
我们的体操教练开始工作前,先要明确一个核心问题:每个队员该拿什么成绩来比赛? 如果直接看原始分数,小张的平衡木能得 9.5 分,小李只能得 7.0 分,但这不代表小张比小李强——也许小李遇到的裁判更严格,也许小张天生动作幅度夸张。于是教练决定:不看绝对分数,只看每个队员自己各项成绩的相对位置。把各科成绩变成“自己跟自己比”的东西。
在神经网络的世界里,这个“队员”就是输入给某层的特征向量。如果把一个 token 表示为向量 $\mathbf{x} = [x_1, x_2, \dots, x_d]$,其中 $d$ 是特征维度数,那么 Layer Norm 做的事就是:针对这一个向量,在它的 $d$ 个维度上独立地计算均值和方差,然后做标准化。这意味着,无论这一个 token 在整个 batch 里是高能量还是低能量,它都只跟“自己”的维度分布互动。
这跟我们的直觉很接近:你不关心队员总分的绝对高低,只关心他这次比赛与他自己平时水平的偏差是正还是负、大了多少。Layer Norm 正是如此——它对每个样本(每个 token)独立地、逐样本地进行归一化。不管 batch 里其他样本长什么样,每个 token 都走自己的“校准流程”。这是它最重要的性格特点:逐样本独立计算,不依赖同伴。
现在你明白这位教练的底层逻辑了:他不看别的队员,只看你自己的历史状态,把你的成绩校准到“0 分平均、波动 1 分”的基准上,再给你两个旋钮($\gamma$ 和 $\beta$),让你微调最终的呈现。这就像教练告诉你:“我不关心你绝对水平多少,我关心你本次表现比你平日状态高还是低、高多少。”
- 计算均值 $\mu$把一个 token 的所有维度值加起来求平均,得到这个“队员”的平均水平。
- 计算方差 $\sigma^2$看所有维度值偏离平均值的程度,波动越大,方差越大。
- 标准化每个维度值减去均值、除以标准差,得到“以 0 为中心、波动为 1”的归一化结果。
- 缩放与平移乘以可学习的 $\gamma$、加上可学习的 $\beta$,让模型能自己决定“校准后”的分布尺度。
数学公式
既然教练的决策依据是“自己跟自己比”,那“自己”的统计指标就必须算得清清楚楚。第一步是均值——把所有维度的成绩加在一起平均,得到这个 token 的“中心状态”。第二步是方差——衡量各维度偏离这个中心的程度,方差大说明这个 token 的各维能量参差不齐,方差小则说明各维比较均衡。
我们以一个只有 4 个维度的简单向量为例:$\mathbf{x} = [2.0, 0.5, -1.0, 1.5]$。均值是 $(2.0 + 0.5 - 1.0 + 1.5) / 4 = 0.75$。方差则是每个维度减去均值后平方的平均:$(1.25^2 + (-0.25)^2 + (-1.75)^2 + 0.75^2)/4 = 1.1875$。于是标准差约为 $1.09$。归一化后,这个向量变成大约 $[1.15, -0.23, -1.61, 0.69]$——所有值都被拉到了“均值 0、标准差 1”的分布中。
这里有个极其重要的细节:公式里引入了一个极小的常数 $\epsilon$(通常取 $10^{-5}$ 或 $10^{-6}$)。为什么要加它?因为万一某个 token 的特征维度全部一模一样(方差接近 0),直接除以标准差就会导致除以零,数值不稳定。$\epsilon$ 就像给分式加了一副“防滑手套”,让计算永远安全。
回到教练的比喻:均值就是这位队员的平日水平,方差就是他的状态波动程度。归一化操作就是问:“你今天这场比赛,比你的平日状态高出了几个'波动单位'?”如果高出 1.5 个标准差,说明状态非常好;如果低 0.8 个标准差,说明发挥失常。这套“相对化”的打分逻辑,让不同队员之间可以公平对话。
- 中心化每个维度值减去均值,得到“相对中心的偏移量”。
- 平方把偏移量平方,消除正负抵消,放大大的偏差。
- 取平均所有维度平方偏移量的平均水平,即方差。
- 加安全常数并开方加上 $\epsilon$ 再开根号,得到稳定标准差。
- 相除原始偏移量除以安全标准差,得到归一化值。
与Batch Norm对比
现在我们让两位教练同台竞技:Batch Norm(批归一化)教练和 Layer Norm 教练。Batch Norm 的做法是:站在全班面前,看所有同学同一门科目的整体分布,然后把这个科目的分数校准到均值 0 方差 1。而 Layer Norm 的做法是:把每个同学单独叫进办公室,看他自己各科成绩的分布,然后对他做个人校准。
这一字之差,带来三个天翻地覆的差别。首先是归一化的轴不同:Batch Norm 沿着 batch 方向(跨样本)统计,Layer Norm 沿着特征方向(跨维度)统计。直观地说,Batch Norm 看的是“所有队员的平衡木成绩分布”,Layer Norm 看的是“一个队员所有项目的成绩分布”。其次,Batch Norm 在推理阶段需要依赖训练时缓存的全局限定均值;而 Layer Norm 的训练和推理行为完全一致,因为它们都不看别人。最后,Batch Norm 对 batch size 极度敏感——如果 batch 很小,统计噪声就很大;Layer Norm 则完全免疫,一个样本也能算。
为什么这对 Transformer 如此关键?因为 Transformer 输入的是变长序列,一个 batch 里每条句子的长度都可能不同。如果用 Batch Norm,遇到动态长度的序列,要么强行 pad 到一样长(浪费算力),要么批统计量被长短不一的样本搅得极不稳定。而 Layer Norm 只关心当前 token 自己,句子多长都不影响归一化计算。这就像体操教练可以同时对团体操和单项比赛给出公正评价,而全班统一标准的老师则会在小组差异大时束手无策。
- Batch Norm 的均值收集一个 batch $\\mathcal{B}$ 里的所有样本,在每个特征维度上求全局均值。
- Layer Norm 的均值单独取出一个样本 $\mathbf{x}$,在它自己的 $d$ 个特征维度上求均值。
- Batch Norm 的推理差异训练时计算 batch 统计量,推理时只能用训练阶段累计的全局统计量,两者数值可能不一致。
- Layer Norm 的推理一致性训练和推理都只用当前样本自身的统计量,天然一致。
Transformer应用
为什么 Transformer 这位“大管家”偏偏选中了 Layer Norm 而不是 Batch Norm?让我们走进 Transformer 的结构:输入是一段句子,被拆成多个 token,每个 token 变成一个向量。这些向量要经过多头自注意力、前馈网络、残差连接、层归一化,循环往复。真正的考验在于:句子的长度是动态变化的,多则几百 token,少则一句“你好”。
Batch Norm 在这里会陷入尴尬:它需要站在整个 batch 的高度计算均值方差,但每个句子长短不同,token 数量不同,强行求“全班平均”会导致长句子的统计被短句子稀释,而且序列末端的 token 因为 pad 大量出现,统计量会被 pad 污染。Layer Norm 则毫无压力——它是按 token 逐个归一化的,天然适配变长序列。不同位置的 token 各自为政,各自归一化,互不干扰。
另一个关键点是残差连接中的配合。残差连接让梯度能“抄近道”直接流回浅层,但如果信号本身尺度爆炸,残差相加后就会让激活值无限放大。Layer Norm 紧跟在残差相加之后,把信号拉回可控的尺度,保证每层输出的规模大致稳定。此外,Layer Norm 是位置无关的——它对每个 token 应用完全相同的变换逻辑,不管它在句子开头还是末尾,这意味着它可以被无缝插入到自注意力和前馈网络之间,不引入位置偏见。
回到教练的比喻:Transformer 是一支大型体操队,每个队员(token)都会依次经过三个关卡——队友配合(注意力)、个人技巧(前馈网络)、状态检查(Layer Norm)。每一次状态检查,教练都会“只看着你一个人”,确认你的状态没有失控,再放你去下一关。这种“个人对个人的关怀”,在队伍人数和队形不断变化时,比“全班统一检查”可靠得多。
- 自注意力输出多头注意力机制为每个 token 聚合上下文信息,得到注意力输出。
- 残差相加把注意力输出与原始 token 向量相加,保留原始信息。
- 第一次 Layer Norm对残差相加的结果做归一化,稳定信号尺度。
- 前馈网络输出经过两层全连接的非线性变换。
- 第二次 Layer Norm再次残差相加并归一化,为下一层做准备。
训练稳定性
既然我们知道 Layer Norm 做的是“个人校准”,那它对训练稳定性的贡献究竟体现在哪里?三个字:控方差。深层神经网络训练的本质痛苦是:信号经过层层传播,方差会指数级膨胀或收缩。激活值稍一大,梯度就爆炸;稍一小,梯度就消失。Layer Norm 像一个倔强的交警,站在每一个路口强制把信号流速控制在标准范围内。
第一个贡献是缓解梯度消失/爆炸。因为归一化后的输出始终维持在“均值 0、标准差 1”附近,反向传播时梯度不会因为极端激活值而饱和,能稳定地传到浅层。第二个贡献是提升收敛速度。归一化让损失函数的“地形”更接近碗状,梯度下降时步子踩得更稳,不会在一马平川处龟速前进,也不会在峡谷裂缝中左右横跳。第三个贡献是防止激活饱和——对 Transformer 常用的激活函数 GELU 或 SwiGLU 而言,输入长期过大或过小都会进入非线性函数的饱和区,梯度几乎为零,Layer Norm 把输入拉回敏感区间,让激活函数始终工作在梯度充足的中段。
教练此时化身为一名赛事医疗保障员:他要求每位队员上场前的“心率”必须降到标准区间(均值 0 方差 1),这样队员在比赛中的状态波动才不会失控。越深的比赛关卡,这种“赛前体检”越重要。没有 Layer Norm 的 Transformer,相当于让队员在心率 180 的状态下直接跳平衡木,摔倒(梯度爆炸)是必然的。
- 输出方差被约束不管输入分布的方差多大,归一化后的输出方差被强制拉回到 1。
- 输出均值被归零不管输入分布的均值偏到哪,归一化后的均值永远回到 0。
- 梯度流稳定因为方差恒定,损失对浅层参数的梯度不会指数级放大或缩小。
- 激活函数工作在非饱和区输入集中在 0 附近,GELU 等激活函数导数最大、梯度最强。
参数与初始化
教练做完标准校准后,并不想剥夺队员的个性。于是他在公式中引入了两个“可学习的旋钮”:$\gamma$(缩放参数) 和 $\beta$(偏移参数)。$\gamma$ 控制校准后分布的“胖瘦”——乘上一个大于 1 的数,分布被拉宽;乘上小于 1 的数,分布被压窄。$\beta$ 控制分布的“位置”——加上正数就整体右移,加上负数就整体左移。
这对组合拳的妙处在于:模型可以通过训练自动决定每个特征维度到底该用什么尺度。也许某些维度需要保持较强的信号($\gamma > 1$),某些维度需要抑制($\gamma < 1$),这些都可以通过反向传播自动学习。换句话说,Layer Norm 不是把数据“焊死”在标准分布上,而是给模型留了一扇“恢复原状”的门。
那么这两个参数应该怎么初始化?答案非常朴素:$\gamma$ 初始化为 1,$\beta$ 初始化为 0。逻辑也很直观:初始时刻,我们希望 Layer Norm 的行为就是“纯净的归一化”——不缩放、不偏移,让模型从标准化的分布开始学起,然后根据训练数据逐渐学习到最合适的缩放和平移量。如果一开始就把 $\gamma$ 设成随机值,等于让教练在还没看清队员水平时就乱调旋钮,训练初期就会出现不必要的混乱。
教练的最终方案是:先做标准化把所有人拉到同一起跑线(γ=1, β=0),然后在训练中逐步观察,谁更适合更大的动作幅度、谁更适合站在队伍偏右的位置,这些微调都交给数据说话。这样既保证了训练的稳定起步,又保留了足够的表达空间——这正是 Layer Norm 设计中最“人情味”的一笔。
- 写入恒等缩放对每个特征维度 $i$,把 $\gamma_i$ 初始化为 1,相当于缩放倍率为 1 倍。
- 写入零偏移把 $\beta_i$ 初始化为 0,相当于平移量为 0。
- 归一化层初始状态代入公式后,输出恰好等于标准化后的值,不引入额外偏置。
AI 应用场景
大语言模型的稳定训练
阶段:模型训练与优化
解决的问题:GPT 系列等大模型动辄几十上百层,层数越深,梯度爆炸和激活值失控的风险成倍放大。没有归一化机制,训练到一半 loss 变成 NaN 是家常便饭;即使不崩溃,收敛速度也慢得令人绝望。Layer Norm 在每个 Transformer 块内部做“个人校准”,确保每层输入稳定,让数十亿参数能够平稳地被梯度下降优化。
具体案例:训练一个 13B 参数的 LLM 时,工程师在自注意力和前馈网络之后各插入一个 Layer Norm 层,并使用 Pre-LN 结构。结果显示,相比不使用归一化,训练收敛所需的步数减少了约 40%,且全程没有出现梯度爆炸导致的训练中断。
在线推理服务的批处理优化
阶段:模型推理部署
解决的问题:传统 Batch Norm 在推理时需要提前缓存全局均值方差,且对 batch 大小敏感。实际部署中,用户请求到达时间随机,每个 batch 的样本数动态变化,Batch Norm 会引入训练/推理不一致。Layer Norm 因为只依赖单个 token 自身的统计量,天然适配在线服务。
具体案例:一个对话机器人服务每秒钟接收 50 个并发请求,每个请求的句子长度从 4 到 128 个 token 不等。服务器用 Layer Norm 后,不需要维护全局统计量,也不需要按长度分桶,直接对每个请求独立计算归一化,推理延迟降低了 15%。
强化学习中的策略网络
阶段:模型架构选择与训练
解决的问题:强化学习中采样到的 batch 往往高度相关且分布剧烈变化,Batch Norm 会因 batch 统计不稳定而失效。Layer Norm 的“逐样本独立”特性恰好匹配强化学习高频变化的训练模式,让策略网络和价值网络都能保持稳定的输入分布。
具体案例:训练 Alpha 类强化学习智能体时,研究者将策略网络中的 Batch Norm 替换为 Layer Norm,发现智能体在连续控制任务(如 HalfCheetah)上的奖励曲线更加平滑,训练方差降低了约 30%。
Python 演示
import numpy as np class LayerNorm: """Layer Normalization 的 numpy 实现""" def __init__(self, hidden_size, eps=1e-5): self.eps = eps self.gamma = np.ones(hidden_size) self.beta = np.zeros(hidden_size) self._cache = None def __call__(self, x, train=True): return self.forward(x) def forward(self, x): # x shape: (batch, seq_len, hidden_size) mean = x.mean(axis=-1, keepdims=True) variance = x.var(axis=-1, keepdims=True) x_hat = (x - mean) / np.sqrt(variance + self.eps) out = self.gamma * x_hat + self.beta self._cache = (x, mean, variance, x_hat) return out def backward(self, grad_output): x, mean, variance, x_hat = self._cache n = x.shape[-1] inv_std = 1.0 / np.sqrt(variance + self.eps) d_gamma = (grad_output * x_hat).sum(axis=(0, 1)) d_beta = grad_output.sum(axis=(0, 1)) d_x_hat = grad_output * self.gamma d_variance = (d_x_hat * (x - mean) * -0.5 * inv_std**3).sum(axis=-1, keepdims=True) d_mean = (d_x_hat * -inv_std).sum(axis=-1, keepdims=True) d_mean += d_variance * (x - mean).sum(axis=-1, keepdims=True) * (-2.0 / n) d_x = d_x_hat * inv_std + d_variance * 2.0 * (x - mean) / n + d_mean / n return d_x, d_gamma, d_beta if __name__ == "__main__": np.random.seed(42) x = np.random.randn(2, 4, 6).astype(np.float32) layer_norm = LayerNorm(hidden_size=6) y = layer_norm(x) print("输出形状:", y.shape) print("每个token的均值(应为~0):", y.mean(axis=-1)) print("每个token的方差(应为~1):", y.var(axis=-1))
mean = x.mean(axis=-1, keepdims=True)对特征维度(最后一个轴)求均值,这正是“每个 token 自己跟自己比”。variance = x.var(axis=-1, keepdims=True)同样只沿特征维度计算方差,不依赖 batch 方向。x_hat = (x - mean) / np.sqrt(variance + self.eps)标准化公式的核心操作,加 eps 防止除零。out = self.gamma * x_hat + self.beta用可学习参数做缩放和平移,初始 γ=1、β=0。d_x_hat = grad_output * self.gamma反向传播第一步:上游梯度乘以缩放参数。d_variance = (d_x_hat * (x - mean) * -0.5 * inv_std**3).sum(...)方差对损失的贡献,是 Layer Norm 反向传播中最容易写错的一项。d_x = d_x_hat * inv_std + d_variance * 2.0 * (x - mean) / n + d_mean / n组合三部分梯度:标准化梯度 + 方差梯度 + 均值梯度。
常见误区
误区很多初学者以为 Layer Norm 会把每个 token 的特征值统一到 [0, 1] 或 [-1, 1] 的区间里,就像 Min-Max 归一化那样。我刚开始也这么想,以为归一化后所有值都有了上下界。
正解实际上 Layer Norm 做的是“零均值、单位方差”的标准化,输出值没有固定上下界,可以是任何实数。打个比方:它不是把队员的分数压缩到 0~100 分的区间,而是把分数转换成“比平日均值高几个标准差”的 Z 分数。Z 分数可以超过 3,也可能低于 -3,并没有边界。
为何常见:因为“归一化”这个词在中文里常被理解为“归到 [0,1]”,且很多入门教程都从 Min-Max 归一化讲起,导致概念混淆。
误区有人觉得有了 Layer Norm,模型的梯度就永远稳定了,学习率可以随便设置。我一度以为归一化是万能保险丝,把学习率调大 10 倍也没关系。
正解Layer Norm 能大大提升训练稳定性,但它控制的是每层激活值的尺度,不是梯度的全部来源。权重初始化、学习率调度、优化器选择仍然至关重要。它更像是给运动员吃了一颗“定心丸”,但训练计划和饮食控制仍然要做。过大的学习率依然可能导致梯度爆炸,只是炸的点更高了。
为何常见:因为看到 Layer Norm 的论文里经常展示“不用归一化会发散,用了就收敛”,容易让人产生一劳永逸的错觉。
误区初学者常常以为只要把 Layer Norm 放在 Transformer 块的最前面(Pre-LN),一切问题就都解决了,Post-LN 是过时的方案。
正解Pre-LN(归一化在残差分支之前)确实训练更稳定、收敛更快,但最终性能通常略逊于 Post-LN(归一化在残差相加之后)。Post-LN 在训练后期能获得更好的下游表现,只是需要更精细的学习率调整。这就像热身(Pre-LN)能让你更快进入状态,但真正比赛表现最好的方案(Post-LN)需要更专业的赛前调节。
为何常见:因为看到了大量“Pre-LN 训练更稳”的报告,误以为稳定就是全部,忽略了最终精度才是目标。
误区有初学者认为,反正都是归一化,用哪个区别不大,都是把数据拉回标准分布,换个位置而已。
正解两者归一化的轴完全不同。Batch Norm 沿着 batch 维度统计,一个样本的归一化结果会受到同 batch 其他样本影响;Layer Norm 沿着特征维度统计,样本之间毫无瓜葛。在训练/推理一致性、对 batch size 的依赖、对变长输入的支持上,二者有天壤之别。就像“全班统一标准”和“个人纵向对比”是两种完全不同的评价哲学。
为何常见:因为两者的公式形态高度相似,都是“减均值除方差再缩放平移”,容易忽略统计的维度差异。
面试题
Q1. Layer Norm 归一化的维度方向是?
- A.沿着 batch 维度
- B.沿着特征维度← 正确答案
- C.沿着序列长度
- D.沿着所有维度
答案:B。Layer Norm 对单个样本的所有特征维度做归一化,是“每个 token 自己跟自己比”。Batch Norm 才是沿 batch 维度。序列长度不参与统计。
Q2. Layer Norm 公式中的 \\(\epsilon\\) 作用是什么?
- A.提升模型精度
- B.防止除以零← 正确答案
- C.加速计算
- D.增加模型参数量
答案:B。当某 token 的方差接近 0 时,直接除以标准差会数值不稳定,\\(\epsilon\\) 是加在方差上的极小常数,保证除数不为 0,这是数值稳定性的标准做法。
Q3. 为什么 Transformer 用 Layer Norm 而不用 Batch Norm?
- A.Layer Norm 参数量更少
- B.适配变长序列且训练推理一致← 正确答案
- C.Layer Norm 训练更快
- D.Batch Norm 无法反向传播
答案:B。Transformer 输入是变长序列,Batch Norm 依赖 batch 统计量,在变长和动态 batch 下不稳定,且推理时要用全局统计量,训练推理不一致。Layer Norm 按 token 独立归一化,天然适配。
Q4. Layer Norm 中 \\(\gamma\\) 初始化为 1、\\(\beta\\) 初始化为 0 的目的是?
- A.让初始输出全为 1
- B.让初始行为等价于纯净的标准化← 正确答案
- C.减少参数量
- D.保证梯度不为零
答案:B。\\(\gamma=1\\) 相当于缩放倍率 1 倍,\\(\beta=0\\) 相当于平移 0,代入公式后输出恰好就是标准化结果,不引入额外偏移,让模型从标准分布开始学习。
Q5. 关于 Layer Norm 对训练稳定性的作用,下面哪项说法正确?
- A.保证损失函数单调下降
- B.约束每层激活值方差恒定不变← 正确答案
- C.消除所有梯度消失问题
- D.替代学习率调参
答案:B。Layer Norm 把每层输出拉到均值 0 方差 1 附近,约束了激活值尺度,从而稳定梯度传播、提升收敛速度。但它不能保证损失单调降,也不能完全消除所有梯度问题。
Q6. Layer Norm 的反向传播中,均值项 \\(\mu\\) 的梯度需要传播回每个维度,原因是?
- A.均值是常数不需要梯度
- B.均值由所有维度共同算出,每个维度都对它有贡献← 正确答案
- C.均值由 batch 统计决定
- D.梯度只沿 \\(\gamma\\) 传播
答案:B。\\(\mu = (1/d)\\sum x_i\\) 是所有维度的线性组合,所以每个 \\(x_i\\) 的梯度都要包含来自均值路径的贡献。这正是 Layer Norm 反向传播比前向更复杂的根本原因。
Q7. 关于 Batch Norm 和 Layer Norm 的区别,以下说法正确的有?
- A.两者归一化轴相同
- B.Batch Norm 依赖 batch 大小← 正确答案
- C.Layer Norm 训练推理行为一致← 正确答案
- D.Batch Norm 有全局统计量← 正确答案
答案:BCD。Batch Norm 沿 batch 方向统计、依赖 batch 大小、推理时有全局统计量,A 说反了,B、C、D 都正确。Layer Norm 逐样本独立,训练推理一致。
Q8. Layer Norm 的学习参数 \\(\gamma\\) 和 \\(\beta\\) 的作用分别是什么?
- A.\\(\gamma\\) 控制分布尺度← 正确答案
- B.\\(\beta\\) 控制分布位置← 正确答案
- C.\\(\gamma\\) 固定为常数
- D.\\(\beta\\) 全程为 0
答案:AB。\\(\gamma\\) 是缩放参数决定分布胖瘦,\\(\beta\\) 是偏移参数决定分布左右位置。两者都随训练更新,不是恒定常数。
Q9. Layer Norm 对 Transformer 训练的帮助体现在哪些方面?
- A.缓解梯度消失爆炸← 正确答案
- B.提升收敛速度← 正确答案
- C.防止激活饱和← 正确答案
- D.减少模型参数量
答案:ABC。Layer Norm 约束激活值尺度,稳定梯度流,让训练更快收敛;输入保持在激活函数敏感区间,避免饱和。它增加参数量而非减少,D 错误。
Q10. 一个 token 的特征向量经过 Layer Norm 后,其均值和方差的特征是什么?
- A.均值变大、方差变小
- B.均值趋近于 0、方差趋近于 1← 正确答案
- C.均值趋近于 1、方差趋近于 0
- D.均值方差保持不变
答案:B。Layer Norm 的标准化步骤就是强制把均值归零、方差归一。这就是“个人校准”的核心——无论原始分布多偏,归一化后都以 0 为中心、以 1 为波动尺度。