重複懲罰 是什麼?

Repetition Penalty:重複懲罰 的完整解釋

在生成過程中對已經出現的詞彙施加機率懲罰,抑制模型重複使用相同詞彙或短語,提高文本多樣性。

核心概念

大型語言模型有一個常見問題:生成時傾向於重複詞彙或短語。這可能源於多個原因:訓練數據中的重複模式、較低的溫度設定、或簡單的機率最大化邏輯。

重複懲罰透過改變詞彙的機率分布來應對此問題。如果一個詞彙已經在生成序列中出現過,它的機率會被衰減。懲罰強度由參數控制,允許調整抑制程度。

數學上,如果詞彙已出現,其機率被修改為 p' = p / penalty_coef,其中 penalty_coef > 1。這確保已出現詞彙的相對排名下降,較新的詞彙更有可能被選中。

運作原理

基本步驟

步驟 1:在每個生成步驟,計算下一個詞彙的條件機率分布。

步驟 2:掃描當前序列,識別所有已出現的詞彙。

步驟 3:對於每個已出現的詞彙,應用懲罰係數,降低其機率。

步驟 4:歸一化修改後的機率分布,確保機率和為 1。

步驟 5:根據修改後的分布採樣或選擇下一個詞彙。

懲罰機制

標準懲罰公式:p_penalized = p_original / penalty_coef^(出現次數)

一些實現使用更複雜的公式:

  • 按出現時間加權:最近出現的詞彙懲罰更強
  • 長距離懲罰:只對最近 N 個詞彙內的重複進行懲罰
  • 部分詞彙豁免:不對停用詞(「the」「is」等)應用懲罰

參數選擇

懲罰係數通常在 1.0 到 2.0 之間。

係數 1.0:無懲罰(相當於關閉特性) 係數 1.2:溫和懲罰,輕微抑制重複 係數 1.5:中等懲罰,明顯增加詞彙多樣性 係數 2.0 以上:強懲罰,強烈避免重複

實務中,1.2-1.5 是常用範圍。過高的懲罰係數可能導致語言不自然,因為某些詞彙在語法上可能需要重複。

實際應用

應用場景

長文本生成:詩歌、故事、論文生成中,重複懲罰能提高文本的詞彙豐富性。

對話系統:避免機器人重複同樣的短語,使對話更自然。

摘要生成:防止摘要過度重複原文中的關鍵詞。

創意寫作:增加創意輸出中的表現多樣性。

與其他技術的組合

重複懲罰通常與採樣或集束搜尋結合使用。在採樣方法中(如 top-k 或核心採樣),重複懲罰在採樣前應用,改變機率分布。在集束搜尋中,懲罰可應用於評分機制,調整序列的排名。

溫度調整與重複懲罰也可結合:低溫度使機率分布尖銳,重複懲罰的效果更明顯;高溫度平坦化分布,重複懲罰的相對影響較小。

常見誤區

誤區 1:重複懲罰可以完全消除重複。實際上,某些重複(如人名、地名、技術術語)在自然語言中是必要的。完全禁止重複會導致語言不自然。

誤區 2:所有詞彙都應該等同懲罰。實務中應該區分不同類型的詞彙。內容詞(名詞、動詞)的重複更值得懲罰,而功能詞(冠詞、介詞)的重複可能是語法必要的。

誤區 3:懲罰係數越高越好。過高的懲罰強制模型避免所有重複,導致輸出機械和不自然。最佳值通常在 1.2-1.5 之間。

誤區 4:重複懲罰無法應用於多詞短語。有些實現支持對常見短語(如「I don't know」)的懲罰,超越單詞層面。

誤區 5:重複懲罰在所有模型上效果相同。不同的模型有不同的重複傾向。微調過的模型可能已內化了減少重複的訓練信號,額外的懲罰可能效果有限。

與相關技術的比較

重複懲罰 vs 高溫度採樣

  • 高溫度增加整體隨機性,包括首次出現的詞彙
  • 重複懲罰針對性地抑制已出現詞彙
  • 兩者可結合,高溫度提供多樣性,重複懲罰進一步避免重複

重複懲罰 vs 核心採樣

  • 核心採樣限制候選詞彙集合大小
  • 重複懲罰修改已出現詞彙的相對排名
  • 核心採樣更關注詞彙機率大小,重複懲罰關注出現歷史

重複懲罰 vs 詞彙約束

  • 重複懲罰動態調整機率
  • 詞彙約束硬性限制可選詞彙
  • 重複懲罰更靈活,詞彙約束更嚴格

重複懲罰是現代 LLM 系統的標準組件。許多開源和商業實現都包含此特性,通常作為可配置參數暴露給用戶。

常見問題