简介:本文系统解析自回归扩散范式的底层机制,重点阐述块离散去噪扩散的核心原理。读者将理解自回归建模与扩散去噪如何协同工作、块内并行与块间串行的调度逻辑、离散状态空间的去噪路径设计,以及该范式在生成质量与推理效率之间的权衡边界。
当前语言模型的主流生成范式以自回归解码为核心:逐个token预测下一个位置,每一步都依赖此前全部上下文。这种方式的优势在于因果依赖清晰、训练目标稳定,但代价是生成过程完全串行,难以并行加速,且在长序列上容易出现误差累积与重复退化。
扩散模型则走出另一条路径:它不直接预测下一个token,而是从纯噪声出发,通过多步去噪逐步恢复出目标数据。其优势在于可以并行处理整个序列、对全局结构建模能力较强,但标准扩散过程通常需要几十到上千步迭代,且对离散数据(如文本token)的直接建模存在天然困难,因为扩散过程依赖连续高斯噪声的加噪与去噪假设。
自回归扩散范式正是为解决这一矛盾而提出的混合架构。其核心思想是:将序列切分为若干token块,块与块之间采用自回归建模,块内部则执行扩散去噪操作。这样既保留了自回归对长程依赖的因果建模能力,又在块内引入扩散过程的并行去噪优势,从而在生成质量与推理效率之间取得新的平衡。
本文围绕这一范式的底层机制展开,重点解释三个问题:块级去噪为什么可行、自回归与扩散如何在同一个模型中协作、离散状态空间下的去噪路径如何设计。
要理解自回归扩散的设计动机,需要先看清两种范式在语言建模中的根本限制。
自回归解码的串行瓶颈:标准自回归生成中,第t个token的预测必须等待第t-1个token完成采样。这意味着生成长度为N的序列需要N次前向计算,无法在时间维度上并行。虽然KV缓存可以避免重复计算历史上下文,但采样本身的串行性无法消除。此外,每一步采样都是局部决策,一旦早期token选择偏差,后续生成会被迫沿着错误路径继续,导致语义漂移。
扩散模型的离散化困难:连续扩散模型在图像生成中表现优异,因为像素值天然处于连续空间,高斯噪声的加噪与去噪有明确的数学定义。但文本token是离散的类别变量,不能直接加上高斯噪声。若简单地将token映射到嵌入向量再做扩散,去噪目标会变得模糊,因为嵌入空间中的“噪声”并不对应有意义的离散状态。此外,标准扩散需要大量去噪步数,推理成本远高于自回归。
因此,问题的核心在于:能否设计一种机制,让扩散过程在离散token空间中有定义良好的去噪路径,同时避免全序列扩散带来的高步数开销。块级离散去噪扩散正是对这一问题的直接回应。
在展开系统组成之前,需要先明确几个基础概念。
Token块:将完整序列按固定长度或语义边界切分为若干块。例如长度为L的序列可切分为K个块,每块包含m个token(L = K × m)。块是自回归建模的基本单位,也是扩散去噪的基本单位。
离散扩散过程:与连续扩散不同,离散扩散定义在类别分布之上。其加噪过程通常通过转移矩阵实现:每个token以一定概率被随机替换为其他token或特殊掩码,经过多步转移后,token分布趋于均匀分布(即“纯噪声”状态)。去噪过程则是学习一个反向转移,从均匀分布逐步恢复出原始token。
块内条件独立与块间因果依赖:在同一个块内,所有token的去噪可以并行进行,因为它们共享同一个块级上下文(即此前所有已完成的块)。块与块之间则保持自回归依赖:第k个块的去噪必须以第1至k-1个块的最终结果为条件。
去噪步与块级调度:整个生成过程形成两层循环。外层是块级自回归:依次生成每个块。内层是块内扩散:对当前块执行多步去噪,从纯噪声状态逐步恢复出该块的token序列。
从架构层面看,块离散去噪扩散语言模型通常包含以下核心模块。
1. 块划分与嵌入模块:负责将输入序列切分为块,并将每个token映射为嵌入向量。对于待生成的块,初始状态为噪声分布(通常是均匀分布或掩码分布)。
2. 上下文编码器:对已完成的块进行编码,提取块级上下文表示。这部分通常采用因果注意力机制,确保每个块只能看到此前的块,不能看到未来的块。
3. 去噪网络:这是模型的核心计算模块。它接收当前块的噪声状态和上下文编码,输出每个位置上的token分布或去噪方向。去噪网络通常采用Transformer结构,但在注意力掩码设计上需要同时支持块内并行和块间因果。
4. 噪声调度器:控制加噪与去噪的步数、每步的噪声强度以及转移矩阵的参数。在训练时,它决定对原始token加噪到何种程度;在推理时,它决定从纯噪声开始执行多少步去噪。
5. 采样与状态更新模块:在每一步去噪后,根据去噪网络输出的分布采样新的token状态,并更新当前块的表示。经过预定步数后,当前块的状态被固定,作为下一个块的上下文输入。
6. 训练目标模块:通常采用变分下界或简化去噪损失。对于离散扩散,常见做法是让模型预测被噪声替换前的原始token,或预测反向转移概率。
下面以一个长度为L、块大小为m的序列为例,说明完整的生成流程。
第一步:初始化。将序列划分为K = L/m个块。第一个块的上下文为空(或仅包含起始标记)。当前块的状态初始化为均匀分布,即每个位置上的token在词表中均匀随机。
第二步:块内去噪迭代。对于当前块,执行T步去噪。每一步中:
第三步:块完成与上下文更新。经过T步去噪后,当前块的token状态被固定为最终结果。将该块加入上下文编码器的输入,更新块级上下文表示。
第四步:移动到下一个块。将下一个块初始化为噪声状态,重复第二步和第三步,直到所有块生成完毕。
第五步:输出拼接。将所有块的最终token按顺序拼接,得到完整生成序列。
可以用简化伪代码表示如下:
输入:块数量 K,每块长度 m,去噪步数 T初始化上下文 context = 空for k = 1 to K:block_state = 均匀噪声分布(m)for t = 1 to T:pred = 去噪网络(block_state, context)block_state = 采样(pred, 噪声调度[t])context = 更新上下文(context, block_state)输出块 k 的 token 序列拼接所有块输出
这一流程的关键在于:块内T步去噪可以并行处理m个位置,而块间K步自回归保持因果依赖。总计算量约为K × T次去噪网络前向,而标准自回归需要L次前向。当T远小于m时,整体效率可能优于纯自回归;当T较大时,则更接近扩散模型的生成质量。
机制一:块内并行的条件独立性。在给定此前所有块的条件下,当前块内各token的联合分布可以被扩散过程建模。由于块内不要求因果顺序,去噪网络可以在每个位置上同时预测,这为并行计算提供了基础。具体来说,去噪网络在块内使用双向注意力,在块间使用因果注意力,从而在同一模型中实现两种依赖模式的混合。
机制二:离散转移矩阵的设计。离散扩散的核心是定义合理的加噪与去噪转移。常见做法包括:
掩码转移在语言建模中尤其常见,因为它与掩码语言模型的训练目标有天然联系:去噪网络本质上在学习“给定部分被掩码的token和上下文,预测原始token”。
机制三:块间自回归的误差控制。扩散过程在块内逐步去噪,每一步都可以利用此前块的完整信息。这意味着早期块一旦确定,后续块的生成条件就变得明确。与纯自回归逐token采样相比,块级决策减少了局部误差的累积频率,因为每个块的多个token是联合去噪的,而不是逐个独立采样。
机制四:噪声调度与步数权衡。去噪步数T是影响生成质量与速度的关键超参数。T越大,去噪越精细,生成质量越高,但推理成本线性增长。T越小,速度越快,但可能残留噪声导致token不一致。实际系统中通常通过蒸馏或一致性模型来减少所需步数。
机制五:训练时的加噪与去噪对齐。训练时,模型接收完整序列,对每个块随机采样一个加噪步数,然后要求去噪网络从该步的噪声状态恢复原始token。这种训练方式使模型学会在不同噪声强度下执行去噪,从而在推理时能够从纯噪声开始逐步恢复。
假设词表为{V1, V2, V3, V4},块大小为2,去噪步数为3。目标是生成序列[V1, V2, V3, V4],分为两个块:[V1, V2]和[V3, V4]。
第一个块的初始状态为均匀分布,例如每个位置在四个词上概率各0.25。第1步去噪后,网络可能输出位置1偏向V1、位置2偏向V2的分布。采样后得到[V1, V3](位置2仍有噪声)。第2步去噪后,位置2被修正为V2,得到[V1, V2]。第3步进一步确认,最终固定为[V1, V2]。
第二个块的初始状态同样为均匀分布,但此时上下文已包含[V1, V2]。去噪网络在条件上下文中生成[V3, V4]。经过3步去噪后,第二个块被固定。最终输出[V1, V2, V3, V4]。
这个例子说明:块内去噪允许同一块内的多个token在多个步骤中逐步协调,而不是像自回归那样逐个确定。这种协调能力有助于提升块内一致性。
优势:
限制:
误区一:认为块内扩散完全独立于自回归。实际上,块内去噪始终以此前块的输出为条件,自回归依赖贯穿整个生成过程。
误区二:认为扩散步数越多越好。去噪步数增加会提升质量,但边际收益递减,且推理成本线性增长。实际系统需要根据任务需求选择合适步数。
误区三:将块级去噪等同于掩码语言模型。掩码语言模型通常单步预测所有掩码位置,而块级扩散是多步迭代去噪,每一步都基于上一步的状态重新预测,具有迭代精炼的特性。
误区四:认为离散扩散不需要连续松弛。部分离散扩散实现仍会在嵌入空间或logits空间引入连续松弛,以便使用梯度优化。纯离散转移矩阵方法则依赖得分匹配或变分推断。
自回归扩散范式的核心机制可以归纳为:以块为单位的双层生成结构。外层自回归确保因果依赖和长程一致性,内层扩散实现块内并行去噪和迭代精炼。块离散去噪扩散语言模型通过离散转移矩阵定义加噪与去噪路径,通过掩码或均匀转移实现离散状态空间中的扩散过程,通过块内双向注意力与块间因果注意力的混合设计,在同一网络中同时支持并行去噪和自回归条件建模。
理解这一原理的关键在于把握三个要点:块内条件独立使并行去噪成为可能,块间因果依赖使自回归建模得以保留,离散转移矩阵使扩散过程在有意义的token状态空间中运行。实际应用中,块大小、去噪步数和转移类型的选择会直接影响生成质量与推理效率,需要根据具体场景进行权衡。对于开发者而言,这一范式提供了一个在自回归与扩散之间寻找平衡点的通用框架,其设计思路也可迁移到其他需要并行生成与因果约束并存的序列建模任务中。