串行与线程:一文读懂自回归与非自回归模型的本质区别
从概率公式与生成过程出发,讲清自回归(AR)与非自回归(NAR)模型的本质区别及典型代表
**概述:**在序列生成任务(如文本生成、语音合成、时间序列预测)中,模型需要根据已有的信息预测后续的输出。根据生成过程中是否逐个依赖之前生成的输出,我们可以将模型分为自回归(Autoregressive)和非自回归(Non-autoregressive)两大类。下面分别详细阐述,并给出对应的概率公式。
一、自回归模型
1. 定义与思想
自回归模型的核心思想是:序列中每个时刻的输出依赖于之前所有时刻的输出。生成过程是逐时刻递进的,即先预测第一个元素,然后将其作为已知信息预测第二个元素,再将前两个元素作为已知信息预测第三个,依此类推,直到生成整个序列。这种生成方式符合序列的因果性——未来不能影响过去。
在自然语言处理中,自回归模型通常将序列的联合概率分解为条件概率的连乘形式:
其中 表示序列中位置 t 之前的所有元素(即 )。训练时,模型学习在给定上文条件下预测下一个词的概率分布;推理(生成)时,模型循环地采样或选择最高概率的词,并将新生成的词拼接到输入中,继续预测后续词。
2. 公式表达
(1)在训练阶段,给定真实序列,模型最大化上述似然的对数:
① 符号解释
- 一个真实序列,例如一句话 “I love you”,其中每个代表一个词(或子词)
- θ:模型的所有可学习参数。
- :在给定前 个真实词的前提下,模型预测第 个词为的概率(即模型认为应该生成这个词的概率)。
- log:取自然对数,将概率转换为对数形式,方便计算和优化。
- 求和符号:对序列中每个位置 的对数概率求和。
② 物理意义
- 训练目标:我们希望模型对真实序列的预测概率尽可能大。换句话说,对于每个位置 ,模型应当给真实的分配一个很高的概率。这个公式计算的是整个序列的联合对数概率(实际上是条件概率连乘再取对数,。
- 在训练时,我们通常最大化这个 (或最小化其相反数 ,即交叉熵损失)。注意,这里用的都是真实的历史词,而不是模型自己生成的词,这被称为 Teacher Forcing。
③ 图示描述(训练阶段)
- 在每个时间步 ,模型看到前 个真实词(起始时可能有一个特殊起始符 BOS),然后输出一个概率分布,我们从中取出对应真实词的概率,并取对数。
- 所有位置的对数概率加起来,就得到 。训练就是让这个总和变大。
(2)生成阶段(以文本生成为例):
设当前已生成序列 ,模型计算下一个词的概率分布:
$P(y_t | y_{<t}) = softmax( f(y_{<t}; θ) ) 然后通过采样或贪婪搜索得到 ,继续生成。
① 符号解释
- :当前已经生成的序列(例如生成到第 t−1 个词),它是一个列表。
- :模型根据当前已生成序列计算出的logits(未归一化的分数),通常是一个维度为词表大小的向量。
- softmax:将 logits 转换为概率分布,使得所有词的概率和为 1。
- :根据概率分布采样或选择得到的下一个词(例如取概率最大的词,即贪婪搜索)。
- :将新生成的词拼接到已有序列末尾,形成新的已生成序列,用于下一步的生成。
② 物理意义
- 生成过程:模型从起始符(如
<s>)开始,根据当前已生成的词,预测下一个词的概率分布,然后选一个词,把它添加到序列末尾,重复这个过程,直到生成结束符或达到最大长度。- 这个公式描述了“一步”的生成:给定历史 ,模型输出下一个词的概率分布,然后我们根据这个分布决定 。注意,这里的 是模型自己之前生成的词,而不是真实词,所以推理时没有 teacher forcing。
③ 图示描述(生成阶段)
- 初始时,已生成序列只有起始符
[BOS]。- 模型用
[BOS]预测第一个词的概率,我们选择y1(比如“I”)。- 然后将
[BOS, y1]作为新输入,预测第二个词的概率,选择y2(比如“love”)。- 不断重复,直到遇到结束符或达到长度限制。
(3)训练 vs 生成的核心区别
| 方面 | 训练阶段 | 生成阶段 |
|---|---|---|
| 输入的历史词 | 真实历史词(来自数据集) | 自己生成的历史词(可能包含错误) |
| 损失计算 | 对每个位置,最大化真实词的概率(Teacher Forcing) | 无损失,只是根据概率选择下一个词 |
| 并行性 | 可以并行计算所有位置(因为真实历史已知) | 必须串行,因为下一步依赖上一步的输出 |
| 目标 | 学习数据的分布 | 利用学到的分布生成新序列 |
3. 特点
- 优点:生成质量高,因为每一步都利用了真实的历史信息(训练时用真实上文,推理时用生成的上文),能够保证长程一致性。
- 缺点:生成速度慢,因为必须串行生成,无法并行计算 TT 个位置的输出;此外,误差会累积,一旦某步生成错误,后续生成可能偏离。
二、非自回归模型
1. 定义与思想
非自回归模型旨在一次性并行生成整个序列,而不依赖先前生成的输出。它打破了序列生成的因果依赖关系,假设序列中各个位置的输出在一定条件下是相互独立的,或者通过某种全局信息同时预测所有位置。
为了实现这一点,非自回归模型通常引入额外的输入(如源句子的编码、长度预测、隐变量等)来提供全局上下文,使得每个位置的预测可以独立进行。联合概率不再分解为条件概率的乘积,而是近似为独立概率的乘积(或考虑部分依赖)。
2. 公式表达
基本形式(假设各位置独立):
这里的 context 可以是源句子编码、目标序列长度、全局隐变量等,不包含序列内部的自回归依赖。
更精细的建模(如考虑相邻依赖): 有些非自回归模型引入轻量级的依赖建模,例如使用迭代 refinement 或 latent variables,但整体上仍保持并行生成。
例如,在非自回归机器翻译中(如 NAT (Non-Autoregressive Transformer)),给定源句子 S,模型预测目标句子 Y 的联合概率为:
① 符号含义
- S:源句子(source sentence),例如一句英文 “I love you”。
- Y:目标句子(target sentence),例如对应的中文 “我爱你”。,其中 T 是目标句子的长度。
- z:隐变量。它可以是离散的(如一个向量,每个元素表示某个源词对应的目标词个数),也可以是连续的(如一个向量表示全局语义)。在非自回归 Transformer 中,z 通常是一个对齐矩阵或 fertility 向量(fertility 表示每个源词生成多少个目标词)。
- :对所有可能的 z 求和。由于 z 的取值空间可能非常大(例如 fertility 向量可以有多种组合),实际中通常不是真的求和,而是用近似方法处理(比如用 argmax 选取最可能的 z,或者用期望)。
- :给定源句子 S 时,隐变量 z 的概率分布。这个分布由一个模型(通常是小型神经网络)从 S 中预测得到。
- :在给定 S 和 z 的条件下,各个目标词 独立生成的概率乘积。注意这里的“独立”是指给定 S 和 z 后, 之间不再相互依赖,因此可以并行计算所有 t 的 。
② 公式的物理意义
这个公式是对目标句子 Y 的整体概率进行建模,它通过隐变量 z 将依赖关系“吸收”进来。具体来说:
- 隐变量 z 概括了生成 Y 所需的全局信息,比如目标句子的长度、每个源词对应几个目标词、词序的粗略结构等。
- 一旦 z 被确定,生成每个目标词 就只依赖于源句 S 和这个全局信息 z,而不再依赖于其他 y。因此,给定 z,所有 可以同时生成。
- 最终的 是对所有可能的 z 的加权平均,权重是 。这相当于考虑了所有可能的全局结构,然后对每种结构下生成 Y 的概率求和。
3. 举例说明(以 fertility 为例)
假设源句子 S = “I love you”,目标句子 Y = “我爱你”。在翻译中,每个英文词通常对应一个或几个中文词:
- “I” → “我” (fertility = 1)
- “love” → “爱” (fertility = 1)
- “you” → “你” (fertility = 1)
这里 fertility 向量 表示每个源词生成一个目标词。目标句子的长度 。
那么:
-
P(z∣S) 是模型根据源句预测 fertility 向量的概率。例如模型可能认为最可能的 fertility 就是 (1,1,1),但也可以有其他可能(比如 “love” 有时会翻译成 “热爱”,fertility=1 不变,但可能某些语言有不同)。
-
给定 ,我们需要生成三个目标词 ,且它们之间条件独立。模型会为每个位置 t 计算一个概率分布 ,这些分布可能依赖于源句和 fertility。比如:
- 第一个位置对应源词 “I”,所以 大概率给 “我” 很高的概率。
- 第二个位置对应 “love”,所以 大概率给 “爱”。
- 第三个位置对应 “you”,所以 大概率给 “你”。
-
然后整体概率。
注意,这里对 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-XL、XLNet(XLNet 使用排列语言建模,但本质上仍是对自回归目标的一种近似)。
- 机器翻译:
- 经典的 RNN Encoder-Decoder with Attention(如 Bahdanau 等)。
- Transformer(原始 Transformer 的解码器部分在生成时是自回归的)。
- 语音合成:
- WaveNet(基于 dilated CNN 的自回归语音生成)。
- Tacotron 2(其解码器是自回归的)。
- 图像生成:
- PixelCNN、PixelRNN(逐像素生成图像)。
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-GEN 或 Mask-Predict 用于文本 infilling。
- BART 在微调生成任务时,通常采用自回归解码,但其预训练包含去噪自编码,可以支持非自回归的变体。
- 图像生成:
- GANs(生成对抗网络)一次性生成整个图像,属于非自回归(但依赖隐变量)。
- VAEs(变分自编码器)、Flow-based models(如 Glow)也是非自回归。
混合/迭代 refinement 模型
- 有些模型介于两者之间,例如 迭代非自回归:通过多轮并行 refinement 来逼近自回归质量,如 LevT(Levenshtein Transformer)、CMLM(Conditional Masked Language Model)。

