Skip to content
🔗 分享本题
查看我的学习进度 →

重复惩罚动漫知识图:通过调整已出现 Token 的 Logits、按频次惩罚或禁止重复 n-gram 抑制复读,但惩罚过强会损伤语义和流畅度

🧠 图解记忆:先调 Logits 抑制重复,惩罚过强会伤流畅度;点击图片可查看原图。

定义

重复惩罚 = 对已经出现过的 Token 的 Logits 进行惩罚,降低它再次被选中的概率,从而减少重复。

实现原理

python
# 伪代码:出现过的token,logits除以惩罚系数
for token in seen_tokens:
    if logits[token] > 0:
        logits[token] /= repetition_penalty   # 比如 1.15
    else:
        logits[token] *= repetition_penalty

参数建议

效果
1.0不惩罚(默认)
1.05-1.2轻度惩罚,抑制复读
>1.3强惩罚,可能影响语义流畅度

其他防重复手段

  • Frequency Penalty / Presence Penalty(OpenAI 风格):按出现频次/是否出现惩罚
  • No Repeat Ngram Size:禁止 N-gram 完全重复
  • Beam 内加多样性惩罚:多条候选路径互相抑制

面试话术

"复读机是解码阶段的常见问题,我用 repetition_penalty 对已出现 Token 的 Logits 做惩罚,一般设 1.1-1.2 兼顾流畅和多样;如果再配合 no_repeat_ngram 和频率惩罚,效果更好。"