核心要点
能讲成因:贪心/低温解码倾向选高概率 token,自回归正反馈把高频片段越放越大,叠加训练分布导致循环重复
能用惩罚类手段:repetition penalty、frequency/presence penalty 对已出现 token 降权,no-repeat-ngram 直接禁止重复 n-gram
能用采样类手段:适度提高 temperature、用 top-p(nucleus)引入随机性打破确定性循环
能用提示/结构约束:在 prompt 中明确去重要求、限定输出长度或结构,从生成目标上抑制啰嗦重复
标准回答
成因
自回归模型逐 token 生成,贪心或低温解码总挑概率最高的 token;一旦进入某个高概率片段,重复出现会进一步抬高其条件概率,形成正反馈循环。训练数据分布与最大似然目标也使模型对"安全的重复"有偏好。
缓解方法
- 惩罚类:repetition penalty 对历史已出现的 token logits 降权;frequency/presence penalty 分别按出现次数和是否出现过惩罚;no-repeat-ngram 强制禁止生成重复的 n-gram。
- 采样类:提高 temperature 平滑分布、用 top-p 截断采样引入随机性,打破确定性循环。
- 提示与结构约束:在 prompt 中要求不要重复、给定输出格式或长度上限,从目标层面减少冗余。
取舍
惩罚和温度过高会损害连贯性与事实性,需按任务调参;确定性任务可只加轻度 no-repeat-ngram。
常见误区
⚠️ 常见踩坑
只靠无脑调高 temperature 解决重复——温度过高会牺牲连贯与准确,引入幻觉;应优先用 repetition/no-repeat-ngram 等针对性惩罚,再小幅配合采样。
追问
追问 1:repetition penalty 与 no-repeat-ngram 有什么区别?
repetition penalty 是软约束,对已出现 token 的 logits 乘以惩罚系数降低其概率,仍可能再次出现。no-repeat-ngram 是硬约束,直接把会导致重复 n-gram 的候选概率置零,彻底禁止该 n-gram 复现。前者更柔和、后者更强硬,常配合使用。
追问 2:为什么贪心解码更容易重复?
贪心每步只取概率最高的 token,没有随机性,一旦模型对某片段赋予高概率就会被反复选中,且自回归正反馈不断强化,极易陷入循环。引入 top-p/温度采样能打破这种确定性,但需权衡稳定性。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。