Skip to content

第 11 讲 扩散语言模型

本讲对应 Week 14–15 的课堂内容:先从连续空间中的 DDPM 推出前向加噪、反向去噪与训练目标,再把状态空间改为离散 token,得到 D3PM 与 masked diffusion language model。

1. 生成模型的两条路径

自回归语言模型把联合分布分解为

p(x1:n)=i=1np(xix<i),

生成顺序固定为从左到右。扩散模型则先定义一个逐步破坏数据的前向过程,再学习逆过程:

x0x1xT,xTxT1x0.

x0 是真实样本,xT 接近易采样的先验分布。训练学习局部去噪器,生成时从先验出发反复去噪。对文本而言,这允许多个位置共同修订,而不是一旦生成就永远固定前缀。

2. DDPM 的前向过程

连续数据中常用高斯 Markov 链:

q(xtxt1)=N(xt;1βtxt1,βtI),

其中噪声日程 0<βt<1 控制第 t 步破坏强度。令

αt=1βt,α¯t=s=1tαs,

利用高斯分布的封闭性,可以跳过中间状态,直接采样任意时刻:

q(xtx0)=N(xt;α¯tx0,(1α¯t)I),

等价地,

xt=α¯tx0+1α¯tϵ,ϵN(0,I).

这条重参数化公式是训练效率的关键:随机抽一个 t 就能直接构造 xt,不必真的执行 t 次加噪。

3. 反向过程与可计算后验

真实反向条件 q(xt1xt) 依赖未知数据分布,因此用神经网络参数化

pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)).

训练时已知干净样本 x0,于是后验

q(xt1xt,x0)

可以解析写成高斯分布。以 x0 为“锚点”,原本不可直接计算的逆过程被转化为模型分布与可计算后验之间的匹配问题。

对负对数似然使用变分上界,可得到逐步 KL 项:

LVLB=Eq[DKL(q(xTx0)p(xT))+t=2TDKL(q(xt1xt,x0)pθ(xt1xt))logpθ(x0x1)].

若方差按日程固定,并把均值改写为噪声预测器 ϵθ,常用简化目标为

Lsimple=Ex0,t,ϵ[ϵϵθ(xt,t)22].

模型也可以预测 x0 或速度参数 v;三种参数化能相互变换,但不同噪声区间的优化权重与数值稳定性不同。

4. DDPM 的训练与采样

训练的一次更新可以概括为:

  1. 从数据集采样 x0
  2. 均匀或按权重采样时间步 t
  3. 采样高斯噪声 ϵ,直接构造 xt
  4. 网络读取 (xt,t),预测噪声、干净样本或反向分布参数;
  5. 计算去噪损失并更新参数。

生成时从 xTN(0,I) 开始,按 T,T1,,1 逐步采样。步数越多通常越慢;减少采样步数、改变求解器或蒸馏去噪轨迹,可以在质量与延迟之间折中。

5. 为什么文本不能直接照搬高斯噪声

图像像素位于连续空间,而 token 是有限词表 V 中的类别。把 token embedding 当作连续向量再加高斯噪声虽然可行,但连续扰动不一定对应清晰的离散语义,映射回词表还会引入近似误差。

D3PM 直接在离散状态上定义转移。把 xt 写成 one-hot 行向量,第 t 步转移矩阵为 Qt

q(xtxt1)=Cat(xt;xt1Qt).

多步转移仍可一次计算:

Q¯t=Q1Q2Qt,q(xtx0)=Cat(xt;x0Q¯t).

因此离散扩散与 DDPM 共享同一结构:已知的前向破坏过程、可计算的多步边缘分布,以及需要学习的反向去噪过程。

6. 转移矩阵的三种设计

Uniform corruption

以一定概率保留原 token,其余概率均匀分配到词表:

Qt=(1βt)I+βt11|V|.

它对称、简单,不需要真的存储 |V|2 个元素;但随机替换可能产生大量语义无关 token。

Absorbing-mask corruption

每个 token 以概率 βt 变为特殊的 [MASK],而 [MASK] 一旦出现就在前向过程中保持。xT 最终趋向全 mask 序列。该设计明确表达“信息是否已被删除”,也是文本扩散中最常见的范式。

Semantic transition

把概率分配给 embedding 或语义上相近的 token,试图让破坏过程更平滑。但它需要定义可靠的邻接关系,可能保留过多原语义,也会增加计算和扩展到大词表的难度。

7. 离散反向过程

已知 x0 时,离散后验可由 Bayes 公式计算:

q(xt1xt,x0)q(xtxt1)q(xt1x0).

神经网络通常读取被破坏序列 xt 和时间步 t,预测每个位置的干净 token 分布 pθ(x0xt,t),再与已知转移矩阵组合成 pθ(xt1xt)。训练可使用逐步 KL、重构交叉熵或二者的加权组合。

masked diffusion 的一次迭代不是简单地“把所有 mask 一次填完”,而是预测各位置、按置信度或日程接受一部分结果,再继续修订。时间嵌入告诉网络当前噪声强度:早期应恢复粗粒度全局结构,后期处理局部细节。

8. 与自回归语言模型的比较

维度自回归 LM扩散 LM
因子分解固定左到右多轮全局去噪
单轮并行性每次通常生成一个 token同一轮可更新多个位置
迭代次数与输出长度近似线性由去噪步数决定
修改已生成内容需回退或重生成可在多轮中共同修订
成熟生态KV cache、连续批处理较成熟缓存和服务仍在快速发展
主要风险前缀错误累积采样步多、转移与日程敏感

扩散 LM 的并行修订有利于全局约束、填空和编辑,但“能并行更新 token”不自动等于端到端更快:真实延迟还取决于去噪步数、每步网络成本、接受策略和硬件利用率。

9. 关键设计联动

  • 噪声日程决定不同时间步的信息量,过快会让学习目标太难,过慢会浪费步骤。
  • 转移矩阵决定模型到底学习“从什么噪声恢复什么结构”,并非无关紧要的实现细节。
  • 时间步采样会改变损失权重;可按信噪比或历史损失重加权。
  • 采样器、步数和置信度策略共同决定质量、并行度与延迟。
  • 比较自回归与扩散模型时,应控制参数量、训练数据、计算预算和解码成本,不能只比较单一基准分数。

10. 后验均值与三种预测参数化

由高斯条件分布可得

q(xt1xt,x0)=N(xt1;μ~t(xt,x0),β~tI),

其中

μ~t=α¯t1βt1α¯tx0+αt(1α¯t1)1α¯txt,β~t=1α¯t11α¯tβt.

神经网络若预测噪声 ϵ,可由

x^0=xt1α¯tϵθ(xt,t)α¯t

恢复 x^0,再代入后验均值。直接预测 x0 在高噪声区很难,预测 ϵ 在不同信噪比下权重也不均;v-prediction 是两者的线性组合,常与信噪比加权配合。参数化、loss weighting 与 noise schedule 必须一起分析。

11. VAE 视角

VAE 引入潜变量 z,优化 evidence lower bound:

logpθ(x)Eqϕ(zx)[logpθ(xz)]DKL(qϕ(zx)p(z)).

第一项要求可重构,第二项把编码分布约束到易采样先验。扩散模型可看成拥有许多层潜变量 x1:T 的层级 VAE:前向过程固定,反向网络学习逐层解码。这个视角解释了 VLB 中为何出现多个 KL 项,也说明“正向加噪像 encoder、反向去噪像 decoder”只是结构类比,DDPM 并没有一个单独训练的 encoder 网络。

12. D3PM 后验与损失

对 one-hot 状态,已知 x0xt 时,xt1 的未归一化概率可写为

q(xt1xt,x0)(xtQtT)(x0Q¯t1).

归一化后即可得到精确后验。模型常预测 pθ(x0xt),再对可能的 x0 边缘化构造反向分布。训练目标包含真实后验与模型反向分布的 KL,并可加入辅助交叉熵直接监督干净 token。absorbing-mask 转移下,未被 mask 的位置已知,无需重复预测;损失主要落在被破坏位置。

转移矩阵还可按 token 距离设计为 discretized Gaussian,或依据 embedding 相似度构造邻域,但大词表下不能显式保存稠密 V×V 矩阵,必须利用低秩、稀疏或解析结构。

13. LLaDA、Dream 与生成过程

课堂中的 LLaDA 采用 masked diffusion:前向随机 mask,反向 Transformer 同时预测多个缺失位置。训练随机采样 mask 比例,使用被 mask token 的交叉熵;生成从全 mask 开始,每轮根据置信度提交一部分 token,并允许剩余位置继续全局修订。

Dream 展示了另一条工程路线:利用成熟自回归模型权重初始化扩散模型,减少从头训练的成本。由于 causal attention 与双向去噪的可见性不同,需要调整 mask、位置和训练目标,权重迁移不是直接复制即可。

扩散 LM 的吞吐优势取决于“每轮提交多少 token × 需要多少轮”。步数少时速度快但错误多,步数多时质量提高却可能失去并行优势。代码补全、约束填空和局部编辑尤其适合非左到右生成,因为模型能先确定结构再回填细节。

延伸阅读