在自然语言处理(NLP)中,大型语言模型(LLM)如Transformer进行推理时,自回归解码是一种生成文本的方式。在自回归解码中,模型在生成下一个单词时会依赖于它之前生成的单词。
使用自回归解码的公式可以表示为以下步骤:
初始化序列:设 ( x 1 , x 2 , . . . , x t ? 1 ) ( x_1, x_2, ..., x_{t-1} ) (x1?,x2?,...,xt?1?) 是目前已生成的单词序列。
计算下一个单词的概率分布:使用语言模型计算在给定上下文之后下一个单词的概率分布:
[ P ( x t ∣ x 1 , x 2 , . . . , x t ? 1 ) ] [ P(x_t | x_1, x_2, ..., x_{t-1}) ] [P(xt?∣x1?,x2?,...,xt?1?)]
这一步骤通常使用softmax函数完成,它将单词的logit转换成概率分布。
选择下一个单词:根据概率分布选择下一个单词 ( x t x_t xt? )。这可以通过不同的策略来完成,如:
贪婪解码(Greedy Decoding):选择具有最高概率的单词。
[
x
t
=
arg
?
max
?
P
(
x
t
∣
x
1
,
x
2
,
.
.
.
,
x
t
?
1
)
]
[ x_t = \arg\max P(x_t | x_1, x_2, ..., x_{t-1}) ]
[xt?=argmaxP(xt?∣x1?,x2?,...,xt?1?)]
随机抽样(Sampling):根据概率分布随机选择单词,这允许生成更多样化的文本。
束搜索(Beam Search):维护一个宽度为 ( k ) 的束(beam),在每一步选择概率最高的 ( k ) 个单词组合作为候选,然后在这些候选中选择最终的单词序列。
更新序列:将选定的单词 ( x t x_t xt? ) 添加到序列中。
重复步骤:重复步骤2-4,直到遇到序列结束标记(如)或者生成了所需长度的文本。
在实际应用中,自回归解码可能会结合使用温度调整(Temperature Scaling),抑制重复(Repetition Penalty)等技术来改善生成文本的质量和多样性。这些技术可能会影响第3步中的概率分布,但基本的自回归机制保持不变。