BERT 也是把句子遮住几个词再猜,可是拿一个训练好的 BERT,从一串全是 [MASK] 的输入开始反复填空,写不出像样的段落;LLaDA 用的也是不带 causal mask 的 Transformer 和交叉熵(cross-entropy),却能做对话。差别不在网络结构,而在两处细节:每条训练样本随机抽一个遮盖比例 $t$,从几乎不遮到全部遮住;被遮位置的损失再乘上 $1/t$。这样得到的目标恰好等于“对所有生成顺序取平均的自回归(AR)损失”,也是负对数似然(NLL)的一个上界。代价是模型必须学会所有顺序,包括很难的那些。
待审核草稿。 这一篇还没有经过站主审阅,事实、取舍和措辞都可能修改;引用前请回到文中链接的一手资料核对。
本篇只讲训练目标。怎样一步步填、什么时候比 AR 快,放在下一篇。
前向过程:每个 token 以概率 t 被遮住
记一条长度为 $L$ 的原文为 $x_0=(x_0^1,\dots,x_0^L)$。掩码扩散(masked diffusion,也叫吸收态离散扩散:一个位置变成 [M] 以后就不会再变回来)的前向过程只有一条规则:给定时间 $t\in[0,1]$,每个位置独立地以概率 $t$ 换成 [M],以概率 $1-t$ 保持原样,得到 $x_t$。$t=0$ 是原文,$t=1$ 全是空位。D3PM(Austin 等,2021-07)把这种带吸收态的转移列为离散扩散的一种,并指出它和 mask 类生成模型的联系;MDLM(Sahoo 等,2024-06,NeurIPS 2024)和 LLaDA(Nie 等,2025-02)都用这个形式。
沿用 BERT 篇的句子 the tea is cold($L=4$)。遮住的个数服从二项分布:
| 遮住几个 | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| $t=0.25$ | 0.316 | 0.422 | 0.211 | 0.047 | 0.004 |
| $t=0.5$ | 0.0625 | 0.25 | 0.375 | 0.25 | 0.0625 |
平均遮住 $tL$ 个:$t=0.25$ 时 1 个,$t=0.5$ 时 2 个。这里没有图像扩散那种连续的噪声幅度,“噪声多少”就是“空位多少”。连续扩散在 latent 上怎样一步步走,见 Qwen-Image 的 flow matching。
训练目标:只在被遮的位置算交叉熵,再乘 1/t
LLaDA §2.1 式 (3) 写成:
$$ \mathcal{L}(\theta)=\mathbb{E}_{t\sim U(0,1]}\;\mathbb{E}_{x_t\sim q(x_t\mid x_0)}\Big[\frac{1}{t}\sum_{i=1}^{L}\mathbf{1}\big[x_t^i=\texttt{[M]}\big]\,\big(-\log p_\theta(x_0^i\mid x_t)\big)\Big] $$
$p_\theta(\cdot\mid x_t)$ 是一个没有 causal mask 的 Transformer:读进整条部分被遮的序列,在每个位置输出一个词表(vocabulary)分布;$\mathbf{1}[\cdot]$ 表示只给被遮的位置算分。LLaDA 式 (4) 说明这个量是负对数似然 $-\mathbb{E}\log p_\theta(x_0)$ 的上界。模型不需要知道 $t$:空位有多少已经写在输入里。MDLM 的实验里,去掉时间条件后困惑度(perplexity)差不多;RADD(Ou 等,2024-06)的定理 1 给出了原因:模型要学的条件分布本来就和 $t$ 无关。
用两条手造样本算一次(概率是教学数字,不是模型输出):
- 抽到 $t=0.5$,遮住
tea和cold,输入the [M] is [M]。设模型给 $p(\texttt{tea})=0.4$、$p(\texttt{cold})=0.5$,交叉熵 $0.916+0.693=1.609$,乘 $1/t=2$,这条样本的损失是 3.219。 - 抽到 $t=0.25$,只遮住
tea,输入the [M] is cold。设 $p(\texttt{tea})=0.6$,交叉熵 0.511,乘 4,得 2.043。
第二条只有一个空、上下文更多、模型更有把握,却被乘了 4。原因是:$t$ 小时平均只有 $tL$ 个位置贡献损失,乘 $1/t$ 以后,每个 $t$ 的期望“监督份量”都是 $tL/t=L$ 个 token。不乘的话,几乎不遮的样本在总损失里只占很小的分量,而生成的最后几步恰好是在“只差一两个空”的状态下做决定。
换别的遮盖调度也一样。MDLM 用 $\alpha_t$ 表示 $t$ 时刻保留原词的比例,连续时间下的权重是 $-\alpha_t'/(1-\alpha_t)$;线性调度 $\alpha_t=1-t$ 时正好是 $1/t$。MDLM §3.4 还指出,连续时间下的目标与 $\alpha_t$ 的具体形状无关。这是变量代换的结果:换调度只改变训练时各种遮盖比例被抽到的频率,所以影响的是估计的方差(variance),不是目标的值。
和 BERT 差在哪里
| BERT 的掩码语言模型(MLM) | 掩码扩散(MDLM、LLaDA) | 自回归 | |
|---|---|---|---|
| 遮多少 | 固定约 15%,选中的位置再按 80/10/10 扰动 | 每条样本抽 $t\sim U(0,1]$,从几乎不遮到全遮 | 不遮,用 causal mask 挡住右边 |
| 损失怎么加权 | 选中的位置取平均 | 乘 $1/t$,得到负对数似然的上界 | 每个位置 $-\log p$,合起来就是精确的负对数似然 |
| 学过从全空开始吗 | 没有 | 学过:$t=1$ 就是全空 | 不需要:从左往右一个一个写 |
| 一条样本监督多少位置 | 约 15% | 平均一半 | 全部 $L$ 个 |
| 注意力 | 双向 | 双向 | 因果 |
BERT 的遮盖细节见 BERT 篇的三种 mask。MDLM §3.5 把扩散目标写成“MLM 损失的加权平均”,并说这在生成式扩散模型和 encoder-only 的 BERT 之间建立了联系。LLaDA §2.1 也指出,图像上的 MaskGIT 用的目标省掉了 $1/t$,因此和最大似然没有联系。所以“扩散 LM 是会生成的 BERT”这句话只对了一半:网络可以一样,遮盖比例的分布和加权必须换。
手算:两个 token 时,目标等于两种顺序的平均
取两个 token 的序列 hot tea。模型只会被问到四种问题(概率仍是教学数字):
| 模型要回答的问题 | 教学概率 | 交叉熵(nats) |
|---|---|---|
两个都空,第 1 位是 hot |
$p(\texttt{hot}\mid\texttt{[M] [M]})=0.2$ | $\ell_1=1.609$ |
两个都空,第 2 位是 tea |
$p(\texttt{tea}\mid\texttt{[M] [M]})=0.1$ | $\ell_2=2.303$ |
已知 tea,第 1 位是 hot |
$p(\texttt{hot}\mid\texttt{[M] tea})=0.5$ | $\ell_{1\mid2}=0.693$ |
已知 hot,第 2 位是 tea |
$p(\texttt{tea}\mid\texttt{hot [M]})=0.8$ | $\ell_{2\mid1}=0.223$ |
给定 $t$,两个都被遮的概率是 $t^2$,只遮第 1 个、只遮第 2 个各是 $t(1-t)$。把目标对 $t$ 积分:
$$ \int_0^1\frac{1}{t}\Big[t^2(\ell_1+\ell_2)+t(1-t)\,\ell_{1\mid2}+t(1-t)\,\ell_{2\mid1}\Big]dt=\tfrac12\big(\ell_1+\ell_{2\mid1}\big)+\tfrac12\big(\ell_2+\ell_{1\mid2}\big) $$
$1/t$ 消掉一个 $t$,剩下的 $\int_0^1 t\,dt$ 和 $\int_0^1(1-t)\,dt$ 都是 $1/2$。右边第一个括号是从左往右写的 AR 损失:先写 hot,再在 hot 后面写 tea,$1.609+0.223=1.833$;第二个括号是从右往左:$2.303+0.693=2.996$。两者平均 2.414,就是这个序列上的扩散目标。乘 $1/t$ 以后,目标正好是两种生成顺序的平均损失。 去掉 $1/t$,积分变成 $(\ell_1+\ell_2)/3+(\ell_{1\mid2}+\ell_{2\mid1})/6=1.457$,不再是任何顺序的平均,也就没有似然的解释。
为什么是上界?连续时间的采样过程让每个位置在一个独立、均匀的时刻被填上,等于随机选一种顺序生成。这个模型生成 hot tea 的概率是 $\tfrac12(0.2\times0.8)+\tfrac12(0.1\times0.5)=0.105$,负对数似然 2.254,比 2.414 小。差出来的 0.16 nats 来自两种顺序给出的答案不一致;如果四个条件概率出自同一个联合分布,两种顺序算出的数会相同,界就是紧的。AR 只训练从左往右这一种,损失 1.833。
import math
l1, l2 = -math.log(0.2), -math.log(0.1) # 两个都空时,猜对第 1、2 位
l1_2, l2_1 = -math.log(0.5), -math.log(0.8) # 已知另一个时猜对
objective = 0.5 * (l1 + l2) + 0.5 * (l1_2 + l2_1) # 积分后的扩散目标
left_to_right, right_to_left = l1 + l2_1, l2 + l1_2
generator_nll = -math.log(0.5 * 0.2 * 0.8 + 0.5 * 0.1 * 0.5)
print(round(objective, 3), round((left_to_right + right_to_left) / 2, 3), round(generator_nll, 3))
# 2.414 2.414 2.254
一般长度下结论相同。RADD 的定理 2 证明,吸收态扩散的训练目标等价于任意顺序自回归(any-order autoregressive)的目标:对均匀随机的排列 $\pi$,按 $\pi$ 的顺序逐个预测,取负对数似然之和的期望。更早的 ARDM(Hoogeboom 等,2021-10,ICLR 2022)已经把任意顺序自回归和吸收态扩散放进同一类模型。
“任意顺序”指什么,又要付什么代价
这个词有两层意思。训练时,目标对所有顺序取平均,上面的例子就是两种顺序各占一半。推理时,可以按任何顺序填空:先填最有把握的位置、利用右边已知的内容、在中间补一段。
公开结果里两面都有:
- 难的顺序也要学。 Kim 等(2025-02)从理论和实验两方面说明,掩码扩散在训练里要解计算上难以处理的子问题,AR 避开了它们;推理时按置信度自适应选择顺序,能绕开这些子问题,让预训练(pre-training)模型解数独的准确率从不到 7% 升到约 90%,超过参数多 7 倍、用 teacher forcing 按正确顺序训练的 AR 模型。
- 右边的上下文有用。 LLaDA §3.3 用 496 对中文古诗上下句测试:给下句写上句,LLaDA 8B Instruct 45.6,GPT-4o 34.3;给上句写下句,LLaDA 51.8,GPT-4o 82.7。反向占优,正向差很多。
- 训练更费计算。 Nie 等(2024-10)在 $6\times10^{18}$ 到 $10^{20}$ FLOPs 的 IsoFLOP 实验里,掩码扩散要达到同样的验证损失,约需 AR 16 倍的计算。
- 监督信号更少、方差更大。 每条样本平均只有一半位置算损失。Block Diffusion(Arriola 等,2025-03,ICLR 2025)里,块大小为 1 时扩散目标的期望等于 AR 目标,照这样训练,LM1B 困惑度却是 ≤25.56,AR 是 22.88;改成全遮以后回到 22.88。作者把差距归于训练目标的方差太大。
- 实际解码并不随意。 LLaDA 8B Instruct 改用分块、从左到右的采样后,GSM8K 从 69.4 升到 78.6,MATH 从 31.9 升到 42.2(§3.2);作者的解释是,SFT 数据用大量 EOS 补齐长度,低置信度重遮会让模型过早写出结尾。第三方的 Asaria 等(2026-06)记录 DiffusionGemma 每一步落下哪些位置,发现有较弱的从左到右倾向(统计粒度越粗越明显),并且常常一大批位置同时落下。
数据少的时候,学所有顺序反而成了优点。Prabhudesai 等(2025-07)在 7M 到 2.5B 参数、数据重复多轮的设置下发现:AR 重复同一批数据,大约 4 轮以内和新数据差不多;掩码扩散能到约 100 轮。他们把这归于随机遮盖相当于在很多种顺序上训练,起到了数据增强的作用。
LLaDA:把这个目标放大到 8B
LLaDA(2025-02 提交,2025-10 更新到 v3)从零训练了一个 8B 模型:2.3T token,0.13M H800 GPU 小时,序列长度 4096,其中 1% 的数据随机截成 1 到 4096 的长度(§2.2)。因为不能用 KV cache(见下一篇),作者没有用 GQA,而用普通多头注意力(multi-head attention),并缩小 FFN 维度来保持参数量。SFT 用 450 万条问答对,只遮回答部分(式 5);短样本用 EOS 补齐,EOS 当普通 token 训练,模型由此学会在哪里结束。
扩展性的说法要看清比的是什么。 作者在同一份数据上训练了规模相近的 AR 基线(8B 这一档对的是 7B),计算量从 $10^{20}$ 到 $10^{23}$ FLOPs,在六个下游任务上比较,结论是整体趋势与 AR 相当,MMLU 和 GSM8K 上更好(§3.1)。这是作者自己的实验,比的是下游任务分数。Nie 等的“约 16 倍”比的是验证损失,规模也小得多。两个结论不矛盾,但都不能单独回答“同样的钱,哪个更好”。
和 LLaMA3 8B 的对比不是对照实验。 基座模型 MMLU 65.9 对 65.4,GSM8K 70.3 对 48.7(表 1);指令模型反过来落后,MMLU 65.5 对 68.4,GSM8K 69.4 对 78.3(表 2)。两边训练数据不同;LLaDA 的指令模型只做了 SFT,对面的 LLaMA3 8B Instruct 做了 SFT 和 RL。还要注意解码设置:附录 B.6 里,指令模型的采样步数等于答案长度,GSM8K、MATH、HumanEval 都是 512 个 token 走 512 步,每步只落一个。也就是说,这些分数是在没有并行加速的条件下测的。
截至 2026 年 10 月,后来的大模型多半从 AR 权重转换而来:Dream 7B(2025-08)用 AR 模型初始化;LLaDA2.0(2025-12)把 Ling-mini-2.0、Ling-flash-2.0 转成 16B 和 100B 的 MoE,训练时块大小先从 1 逐步增大到 4096(整段),再逐步降到 32,自报平均分 64.34 对原模型 65.77(16B)、73.18 对 72.15(100B);Google 2026-06-10 发布的 DiffusionGemma 模型卡写它基于 Gemma 4 的 26B A4B MoE 架构,并列出它在多数基准上低于同规格的 Gemma 4,例如 AIME 2026 69.1% 对 88.3%,MMLU Pro 77.6% 对 82.6%。
其他做法:噪声加在哪里
| 做法 | 噪声加在哪里 | 模型学什么 | 例子 | 主要代价 |
|---|---|---|---|---|
| 自回归 | 不加噪声,挡住右边 | 下一个 token 的分布 | GPT、LLaMA | 一次只落一个 token |
| 连续扩散 | 词向量上加高斯噪声 | 连续空间里的去噪方向 | Diffusion-LM(2022-05) | 最后要把向量取整回 token |
| Score entropy | 离散 token 之间的转移 | 分布的比值(concrete score) | SEDD(2023-10,ICML 2024) | 需要时间条件 |
| 掩码(吸收态) | token 换成 [M] |
被遮位置的原词 | MDLM、LLaDA、LLaDA2.0 | 落下的 token 默认不再改 |
| 均匀态(uniform-state) | token 换成随机的词 | 每个位置的原词 | Sahoo 等(2026-02);按 Google 的说法还有 DiffusionGemma | 似然通常更差 |
均匀态扩散的输入里没有 [M],每个位置都是一个真实的词,模型可以把它改掉。Sahoo 等(2026-02)在 1.7B 规模上发现,均匀态的验证困惑度更差,GSM8K 却超过 AR 和掩码扩散,所以他们认为困惑度只适合在同一家族内比较。
DiffusionGemma 属于哪一类? Google 的开发者指南(2026-06-10)说,它从一段随机的占位 token 开始,用的是 Uniform State Diffusion,置信度下降的 token 可以重新加噪、换掉;模型卡只说没被选中的 token 会被“完全重新加噪”。第三方的 Asaria 等(2026-06-12)在摘要里则称它为掩码离散扩散。本站按官方说法把它归为均匀态。Google 还没有发布技术报告,具体的加噪分布没有公开。
动手时怎么检查
| 先试什么 | 应该观察什么 | 不能据此推出什么 |
|---|---|---|
| 用 $L=2$ 的小例子核对实现(上面的代码) | 目标等于两种顺序的平均 | 目标就是模型的精确负对数似然 |
| 训练时按 $t$ 分桶记录平均损失 | $t$ 越大损失越高;$t$ 接近 0 的桶方差最大 | $1/t$ 是唯一可行的权重(调度可以换,影响的是方差) |
| 和 AR 比较困惑度 | 扩散给的是上界(≤),AR 是精确值 | 两者的差就是扩散真正“差”的量 |
| 跨扩散家族比较 | 同一家族内,困惑度和下游表现大体一致 | 掩码与均匀态之间,困惑度能决定谁更好 |
| 用 generative perplexity 评估生成质量 | 同时报告 token 多样性(diversity)或熵 | 数值更低就更好:Zheng 等(2024-09,ICLR 2025)发现 32 位精度的类别采样会降低有效温度,让这项指标偏向多样性低的样本 |
下一篇:解码步数、缓存与真实速度。
本页术语 9
- 交叉熵 cross-entropy
- 分类任务的标准损失,−log 正确类的概率
- 词表 vocabulary
- 模型能输出的所有 token 的集合
- 困惑度 perplexity
- exp(交叉熵),语言模型的常用指标
- 方差 variance
- 估计量的波动幅度;重要性加权最容易在这里爆炸
- 语言模型 language model, LM
- 对文本序列建模,用上下文预测或生成后续内容
- 预训练 pre-training
- 先用大量数据学习通用表示和能力,再适配具体任务
- 多头注意力 multi-head attention
- 把注意力拆成若干组并行计算再拼回来
- 基线 baseline
- 用来比较新方法的参考方法或配置
- 多样性 diversity
- 结果之间在主题、来源或其他指定维度上有多大差异