返回列表
模型理解 2026年3月19日 · 32 分钟

串行与线程:一文读懂自回归与非自回归模型的本质区别

从概率公式与生成过程出发,讲清自回归(AR)与非自回归(NAR)模型的本质区别及典型代表

**概述:**在序列生成任务(如文本生成、语音合成、时间序列预测)中,模型需要根据已有的信息预测后续的输出。根据生成过程中是否逐个依赖之前生成的输出,我们可以将模型分为自回归(Autoregressive)和非自回归(Non-autoregressive)两大类。下面分别详细阐述,并给出对应的概率公式。

一、自回归模型

1. 定义与思想

自回归模型的核心思想是:序列中每个时刻的输出依赖于之前所有时刻的输出。生成过程是逐时刻递进的,即先预测第一个元素,然后将其作为已知信息预测第二个元素,再将前两个元素作为已知信息预测第三个,依此类推,直到生成整个序列。这种生成方式符合序列的因果性——未来不能影响过去。

在自然语言处理中,自回归模型通常将序列的联合概率分解为条件概率的连乘形式:

P(x1,x2,...,xT)=P(x1)P(x2x1)P(x3x1,x2)...P(xTx1,...,xT1)P(x_1, x_2, ..., x_T) = P(x_1) * P(x_2 | x_1) * P(x_3 | x_1, x_2) * ... * P(x_T | x_1, ..., x_{T-1}) P(x1,x2,...,xT)=t=1TP(xtx1,x2,...,xt1)P(x_1, x_2, ..., x_T) = ∏_{t=1}^{T} P(x_t | x_1, x_2, ..., x_{t-1})

其中x<tx_{<t} 表示序列中位置 t 之前的所有元素(即 x1,x2,,xt1x_1,x_2,…,x_{t−1})。训练时,模型学习在给定上文条件下预测下一个词的概率分布;推理(生成)时,模型循环地采样或选择最高概率的词,并将新生成的词拼接到输入中,继续预测后续词。

2. 公式表达

(1)在训练阶段,给定真实序列,模型最大化上述似然的对数:
L=t=1TlogP(xtx1,x2,,xt1;θ)L = \sum_{t=1}^{T} \log P(x_t \mid x_1, x_2, \dots, x_{t-1}; \theta)

① 符号解释

  • x1,x2,...,xTx_1,x_2, ..., x_T 一个真实序列,例如一句话 “I love you”,其中每个xtx_t代表一个词(或子词)
  • θ:模型的所有可学习参数。
  • P(xtx1,x2,,xt1;θ)P(x_t \mid x_1, x_2, \dots, x_{t-1}; \theta):在给定前 t1t−1 个真实词的前提下,模型预测第 tt 个词为的概率(即模型认为应该生成这个词的概率)。
  • log:取自然对数,将概率转换为对数形式,方便计算和优化。
  • 求和符号t=1T\sum_{t=1}^{T}:对序列中每个位置 tt 的对数概率求和。

② 物理意义

  • 训练目标:我们希望模型对真实序列的预测概率尽可能大。换句话说,对于每个位置 tt,模型应当给真实的xtx_t分配一个很高的概率。这个公式计算的是整个序列的联合对数概率(实际上是条件概率连乘再取对数,logP=logP\log∏P=\sum \log P
  • 在训练时,我们通常最大化这个 LL(或最小化其相反数 L−L,即交叉熵损失)。注意,这里用的都是真实的历史词x1,x2,...,xtx_1,x_2, ..., x_t,而不是模型自己生成的词,这被称为 Teacher Forcing

③ 图示描述(训练阶段) 自回归模型训练阶段图示

  • 在每个时间步 tt,模型看到前 t1t−1 个真实词(起始时可能有一个特殊起始符 BOS),然后输出一个概率分布,我们从中取出对应真实词xtx_t的概率,并取对数。
  • 所有位置的对数概率加起来,就得到 LL。训练就是让这个总和变大。
(2)生成阶段(以文本生成为例):

​ 设当前已生成序列 y<ty<t,模型计算下一个词的概率分布:

$P(y_t | y_{<t}) = softmax( f(y_{<t}; θ) )

​ 然后通过采样或贪婪搜索得到 yt+1=[y<t,yt]y_{t+1} = [y_{<t},y_t],继续生成。

① 符号解释

  • y<ty_{<t}:当前已经生成的序列(例如生成到第 t−1 个词),它是一个列表。
  • f(y<t;θ)f(y_{<t}; θ):模型根据当前已生成序列计算出的logits(未归一化的分数),通常是一个维度为词表大小的向量。
  • softmax:将 logits 转换为概率分布,使得所有词的概率和为 1。
  • yty_{t}:根据概率分布采样或选择得到的下一个词(例如取概率最大的词,即贪婪搜索)。
  • y<t+1=[y<t,yt]y_{<t+1} = [y_{<t},y_t]:将新生成的词拼接到已有序列末尾,形成新的已生成序列,用于下一步的生成。

② 物理意义

  • 生成过程:模型从起始符(如 <s>)开始,根据当前已生成的词,预测下一个词的概率分布,然后选一个词,把它添加到序列末尾,重复这个过程,直到生成结束符或达到最大长度。
  • 这个公式描述了“一步”的生成:给定历史 y<ty<t,模型输出下一个词的概率分布,然后我们根据这个分布决定 yty_t。注意,这里的 y<ty_{<t}模型自己之前生成的词,而不是真实词,所以推理时没有 teacher forcing。

③ 图示描述(生成阶段) 自回归模型生成阶段图示

  • 初始时,已生成序列只有起始符 [BOS]
  • 模型用 [BOS] 预测第一个词的概率,我们选择 y1(比如“I”)。
  • 然后将 [BOS, y1] 作为新输入,预测第二个词的概率,选择 y2(比如“love”)。
  • 不断重复,直到遇到结束符或达到长度限制。
(3)训练 vs 生成的核心区别
方面训练阶段生成阶段
输入的历史词真实历史词(来自数据集)自己生成的历史词(可能包含错误)
损失计算对每个位置,最大化真实词的概率(Teacher Forcing)无损失,只是根据概率选择下一个词
并行性可以并行计算所有位置(因为真实历史已知)必须串行,因为下一步依赖上一步的输出
目标学习数据的分布利用学到的分布生成新序列

3. 特点

  • 优点:生成质量高,因为每一步都利用了真实的历史信息(训练时用真实上文,推理时用生成的上文),能够保证长程一致性。
  • 缺点:生成速度慢,因为必须串行生成,无法并行计算 TT 个位置的输出;此外,误差会累积,一旦某步生成错误,后续生成可能偏离。

二、非自回归模型

1. 定义与思想

非自回归模型旨在一次性并行生成整个序列,而不依赖先前生成的输出。它打破了序列生成的因果依赖关系,假设序列中各个位置的输出在一定条件下是相互独立的,或者通过某种全局信息同时预测所有位置。

为了实现这一点,非自回归模型通常引入额外的输入(如源句子的编码、长度预测、隐变量等)来提供全局上下文,使得每个位置的预测可以独立进行。联合概率不再分解为条件概率的乘积,而是近似为独立概率的乘积(或考虑部分依赖)。

2. 公式表达

基本形式(假设各位置独立):

P(x1,x2,...,xT)t=1TP(xtcontext)P(x_1, x_2, ..., x_T) ≈ ∏_{t=1}^{T} P(x_t | context)

这里的 context 可以是源句子编码、目标序列长度、全局隐变量等,不包含序列内部的自回归依赖。

更精细的建模(如考虑相邻依赖): 有些非自回归模型引入轻量级的依赖建模,例如使用迭代 refinement 或 latent variables,但整体上仍保持并行生成。

例如,在非自回归机器翻译中(如 NAT (Non-Autoregressive Transformer)),给定源句子 S,模型预测目标句子 Y 的联合概率为:

P(YS)=zP(zS)t=1TP(ytS,z)P(Y | S) = ∑_{z} P(z | S) ∏_{t=1}^{T} P(y_t | S, z)

① 符号含义

  • S:源句子(source sentence),例如一句英文 “I love you”。
  • Y:目标句子(target sentence),例如对应的中文 “我爱你”。Y=(y1,y2,,yT)Y=(y_1,y_2,…,y_T),其中 T 是目标句子的长度。
  • z:隐变量。它可以是离散的(如一个向量,每个元素表示某个源词对应的目标词个数),也可以是连续的(如一个向量表示全局语义)。在非自回归 Transformer 中,z 通常是一个对齐矩阵fertility 向量(fertility 表示每个源词生成多少个目标词)。
  • z∑_z:对所有可能的 z 求和。由于 z 的取值空间可能非常大(例如 fertility 向量可以有多种组合),实际中通常不是真的求和,而是用近似方法处理(比如用 argmax 选取最可能的 z,或者用期望)。
  • P(zS)P(z∣S):给定源句子 S 时,隐变量 z 的概率分布。这个分布由一个模型(通常是小型神经网络)从 S 中预测得到。
  • t=1TP(ytS,z)∏_{t=1}^{T} P(y_t | S, z):在给定 Sz 的条件下,各个目标词 yty_t 独立生成的概率乘积。注意这里的“独立”是指给定 Sz 后,yty_t 之间不再相互依赖,因此可以并行计算所有 tP(ytS,z)P(y_t | S, z)

② 公式的物理意义

这个公式是对目标句子 Y 的整体概率进行建模,它通过隐变量 z 将依赖关系“吸收”进来。具体来说:

  • 隐变量 z 概括了生成 Y 所需的全局信息,比如目标句子的长度、每个源词对应几个目标词、词序的粗略结构等。
  • 一旦 z 被确定,生成每个目标词 yty_t 就只依赖于源句 S 和这个全局信息 z,而不再依赖于其他 y。因此,给定 z,所有 yty_t 可以同时生成。
  • 最终的 P(YS)P(Y∣S)对所有可能的 z 的加权平均,权重是 P(zS)P(z∣S)。这相当于考虑了所有可能的全局结构,然后对每种结构下生成 Y 的概率求和。

3. 举例说明(以 fertility 为例)

假设源句子 S = “I love you”,目标句子 Y = “我爱你”。在翻译中,每个英文词通常对应一个或几个中文词:

  • “I” → “我” (fertility = 1)
  • “love” → “爱” (fertility = 1)
  • “you” → “你” (fertility = 1)

这里 fertility 向量 z=(1,1,1)z=(1,1,1) 表示每个源词生成一个目标词。目标句子的长度 T=zi=3T=∑z_i=3

那么:

  • P(zS) 是模型根据源句预测 fertility 向量的概率。例如模型可能认为最可能的 fertility 就是 (1,1,1),但也可以有其他可能(比如 “love” 有时会翻译成 “热爱”,fertility=1 不变,但可能某些语言有不同)。

  • 给定 z=(1,1,1)z=(1,1,1),我们需要生成三个目标词 y1,y2,y3y_1,y_2,y_3,且它们之间条件独立。模型会为每个位置 t 计算一个概率分布 P(ytS,z)P(y_t∣S,z),这些分布可能依赖于源句和 fertility。比如:

    • 第一个位置对应源词 “I”,所以 P(y1S,z)P(y1∣S,z)大概率给 “我” 很高的概率。
    • 第二个位置对应 “love”,所以 P(y2S,z)P(y2∣S,z) 大概率给 “爱”。
    • 第三个位置对应 “you”,所以 P(y3S,z)P(y3∣S,z) 大概率给 “你”。
  • 然后整体概率P(YS)=zP(zS)×P(“我”S,z)×P(“爱”S,z)×P(“你”S,z)P(Y∣S)=∑zP(z∣S)×P(“我”∣S,z)×P(“爱”∣S,z)×P(“你”∣S,z)

注意,这里对 z 求和考虑了所有可能的 fertility 分配(例如 “I love you” 可能在某些上下文中被翻译成 “我爱着你”,此时 “love” 对应两个词 “爱着”,fertility 就变成了 (1,2,1))。模型需要综合所有可能性。

4. 特点

  • 优点:生成速度极快,因为可以并行计算,时间复杂度从自回归的 O(T)O(T) 降至 O(1)O(1)(若考虑迭代 refinement 则为常数轮)。
  • 缺点:生成质量通常低于自回归模型,因为缺乏细粒度的历史依赖,容易产生重复、遗漏或不连贯的问题。需要额外的技巧(如知识蒸馏、迭代 refinement)来提升质量。

三、 图示帮助理解

自回归生成(串行)

源句 S:  [ I love you ]

生成 y1: [我]  ← 依赖 S 和起始符

生成 y2: [我 爱] ← 依赖 S 和 y1

生成 y3: [我 爱 你] ← 依赖 S 和 y1,y2

非自回归生成(并行)

源句 S: [ I love you ]

预测 z:  [ fertility=(1,1,1) ]  (或其他)

并行生成所有目标词:
位置1:  P(y1|S,z) → [我]
位置2:  P(y2|S,z) → [爱]
位置3:  P(y3|S,z) → [你]

四、自回归与非自回归模型的典型代表

1. 自回归模型

  • 语言模型类
    • GPT 系列(GPT, GPT-2, GPT-3, GPT-4)——基于 Transformer 解码器,因果掩码。
    • ELMo(虽然双向LSTM,但语言模型部分是前向和后向自回归的乘积)。
    • Transformer-XLXLNet(XLNet 使用排列语言建模,但本质上仍是对自回归目标的一种近似)。
  • 机器翻译
    • 经典的 RNN Encoder-Decoder with Attention(如 Bahdanau 等)。
    • Transformer(原始 Transformer 的解码器部分在生成时是自回归的)。
  • 语音合成
    • WaveNet(基于 dilated CNN 的自回归语音生成)。
    • Tacotron 2(其解码器是自回归的)。
  • 图像生成
    • PixelCNNPixelRNN(逐像素生成图像)。

2. 非自回归模型

  • 机器翻译
    • Non-Autoregressive Transformer (NAT)(Gu et al., 2018)——首次提出并行翻译。
    • Mask-Predict(在迭代 refinement 中并行预测 masked tokens)。
    • GLAT(Glancing Language Model,通过瞥一眼未来词来辅助训练)。
    • CTC(Connectionist Temporal Classification)在语音识别中用于序列对齐,也可视为非自回归的一种形式。
  • 语音合成
    • FastSpeech 系列(基于 Transformer 的非自回归语音合成,使用时长预测器)。
    • Parallel WaveNet(利用逆自回归流实现并行生成)。
  • 文本生成(其他任务):
    • BERT 在预训练阶段虽然使用双向上下文,但生成任务中可通过 Masked LM 并行预测多个 [MASK],如 BERT-GENMask-Predict 用于文本 infilling。
    • BART 在微调生成任务时,通常采用自回归解码,但其预训练包含去噪自编码,可以支持非自回归的变体。
  • 图像生成
    • GANs(生成对抗网络)一次性生成整个图像,属于非自回归(但依赖隐变量)。
    • VAEs(变分自编码器)、Flow-based models(如 Glow)也是非自回归。

混合/迭代 refinement 模型

  • 有些模型介于两者之间,例如 迭代非自回归:通过多轮并行 refinement 来逼近自回归质量,如 LevT(Levenshtein Transformer)、CMLM(Conditional Masked Language Model)。