核心採樣 是什麼?
Nucleus Sampling:核心採樣 的完整解釋
根據累積機率選擇詞彙範圍,只從機率累計達到設定閾值(如 90%)的最少詞彙中採樣,比 Top-k 更能適應不同機率分布。
核心概念
核心採樣的核心思想是:在不同的上下文中,最可能的詞彙集合的大小可能差異很大。有時前 5 個詞彙就包含了 90% 的機率,有時需要前 100 個詞彙才能達到 90% 的累積機率。
Top-k 採樣總是選擇固定數量的詞彙,可能導致兩個極端:當機率分布高度集中時,k 個詞彙可能包含遠超 90% 的機率,低機率詞彙仍會被包含;當機率分布平坦時,k 個詞彙可能不足以達到 90% 的機率。
核心採樣透過固定機率而非詞彙數量來解決這個問題。參數 p(通常 0.8-0.95)定義了目標的累積機率。演算法選擇最少的詞彙集合,使其累積機率達到或超過 p。
運作原理
分步演算過程
步驟 1:計算機率。應用 softmax 將 logits 轉換為機率分布。
步驟 2:排序。將詞彙按機率從高到低排列。
步驟 3:累積求和。從最高機率詞彙開始,累加機率。
步驟 4:截斷。找到第一個使累積機率達到或超過 p(如 0.9)的位置。
步驟 5:掩蔽。將該位置之後的詞彙機率設為 0。
步驟 6:歸一化。對保留的詞彙的機率進行歸一化。
步驟 7:採樣。根據歸一化後的機率分布隨機選擇詞彙。
數學表達
設詞彙按機率從高到低排列,累積機率函數為 C(i) = Σ(j=1 to i) p_j。核心採樣選擇最小的 k,使得 C(k) ≥ P(其中 P 是目標累積機率,如 0.9)。
這確保選出的詞彙集合是最小的,同時滿足累積機率要求。
實際應用
應用優勢
核心採樣在實務中非常有效,因為它自動適應不同的機率分布。在 GPT-2 和 GPT-3 的官方文件中,都推薦使用 nucleus sampling(通常設 p=0.9 或 p=0.95)。
許多商業 API(包括 OpenAI 的 ChatGPT)在其預設設定中使用核心採樣。這反映了它在實務應用中的廣泛成功。
不同 p 值的效果
p=0.5:只保留最可能的詞彙,輸出高度確定且可預測 p=0.9:平衡多樣性和品質,適合大多數應用 p=0.95:保留更多詞彙,增加多樣性 p=0.99:幾乎不排除任何詞彙,接近無限制採樣
應用場景
- 對話系統:p=0.9 能提供自然且多樣的回應
- 內容生成:p=0.95 允許創意同時避免古怪輸出
- 摘要生成:p=0.85 保持重點同時避免低品質詞彙
- 機器翻譯:p=0.85-0.9 平衡準確性和流暢性
常見誤區
誤區 1:核心採樣就是 Top-p 採樣。這在技術上是正確的(nucleus 就是 Top-p),但「核心」這個名字強調了其自適應和高效性的核心特徵。
誤區 2:p 值對應於「品質百分比」。p 不是質量指標,而是機率閾值。p=0.9 不表示輸出有 90% 的品質,而是選擇的詞彙包含 90% 的累積機率。
誤區 3:核心採樣總是優於 Top-k。在某些情況下,Top-k 可能更好。例如,如果想確保選擇的詞彙數量有界(用於效能敏感的系統),Top-k 更合適。
誤區 4:核心採樣不需要調參。雖然 p=0.9 是通用起點,但最佳值取決於應用。有些任務可能需要 p=0.85,有些需要 p=0.95。
誤區 5:p 值對所有詞彙位置都相同。這是設計所致,也是其自適應性的來源。高度集中的機率分布可能只保留 5-10 個詞彙,平坦的分布可能保留 100+ 個。
與相關技術的比較
核心採樣 vs Top-k 採樣
- 核心採樣基於累積機率(動態詞彙數量)
- Top-k 基於詞彙排名(固定詞彙數量)
- 核心採樣更能適應不同的機率分布
- Top-k 更簡單,更容易預測候選集大小
- 核心採樣在實務中通常效果更好
核心採樣 vs 溫度採樣
- 溫度採樣改變機率分布的形狀
- 核心採樣限制候選詞彙的範圍
- 兩者可結合使用,先溫度後核心採樣
- 溫度更適合調整「決定論」程度
- 核心採樣更適合控制「多樣性邊界」
核心採樣 vs Beam Search
- 核心採樣是每步隨機選擇
- Beam search 同時跟蹤多個候選序列
- 核心採樣用於需要多樣化輸出的任務
- Beam search 用於需要最優序列的任務
- 實務中常結合使用
核心採樣 vs Greedy Decoding
- 核心採樣保留多樣性
- Greedy 總是選擇最優
- 核心採樣適合開放式任務
- Greedy 適合確定答案的任務
核心採樣已成為現代 LLM 推論中的標準方法,大多數商業服務都默認使用或推薦使用它。