神经网络Transformer架构中的重复惩罚
-
首先,理解神经网络Transformer架构中的自回归生成。这是大型语言模型生成文本的核心方式:模型根据先前已生成的所有词元(Token),逐个预测下一个最有可能出现的词元。这个“先前已生成”的上下文限制,就是通过因果掩码来实现的。
-
在自回归生成过程中,模型在每个时间步会计算一个概率分布(称为逻辑斯或logits),表示所有可能词元的预测分数。然后,通常通过温度参数的调整来改变这个分布的尖锐或平滑程度,再使用预测采样(如贪婪采样或随机采样)来最终选择下一个词元。
-
然而,标准的采样方法有时会导致不良的重复模式。模型可能陷入一个循环,反复生成相同的短语或句子片段。这是因为模型在生成一个词元序列后,这个序列本身会成为新的上下文;如果这个上下文恰好引导模型再次生成相同的序列,就会形成重复循环。这不仅是内容质量的问题,也降低了文本的信息量和多样性。
-
重复惩罚(Repetition Penalty)就是为了直接缓解上述问题而设计的一种简单有效的解码时干预技术。它的核心思想是:对已经在本轮生成过程中出现过的词元,在后续的预测步骤中,主动降低其得分,从而降低它们被再次选中的概率。
-
具体操作通常在计算Softmax概率之前进行。假设我们有一个词元的逻辑斯分数列表。在生成第
t个词元时,我们会扫描当前已生成的词元序列(从第一个到第t-1个),对于在这个序列中出现的每一个唯一词元,在其原始逻辑斯分数上乘以一个小于1的惩罚系数(例如0.9),或者直接减去一个固定的惩罚值。这意味着,一个词元在已生成文本中出现的频率越高,它在下一步被惩罚的幅度可能就越大(取决于具体实现)。 -
重复惩罚的一个常见且更精细的变体是重复N-gram惩罚。它不仅仅惩罚单个重复的词元,而是惩罚重复出现的词元序列(如二元组、三元组等)。例如,设置“no_repeat_ngram_size=3”意味着在生成过程中,任何与最近已生成的3个词元完全相同的3词元序列,其最后一个词元的概率将被设为极低(如负无穷),从而被完全禁止。这能更有效地防止短语或句子片段的循环。
-
重复惩罚技术需要谨慎调节其强度。惩罚系数过大或惩罚范围过广(如N-gram的N值过大),可能会过度限制模型的创造力,导致生成内容生硬、不自然,甚至阻碍模型说出必要的重复性表达(例如在某些修辞或固定搭配中)。因此,它通常作为一个可调节的超参数,在保证生成流畅性和多样性之间寻找平衡。它与预测采样、温度参数、峰值抑制以及束搜索等技术共同构成了Transformer解码阶段生成策略工具箱的一部分。