Agentic Research

Top-p(核取樣)

又稱:核取樣 · nucleus sampling · top_p · 累積機率取樣

另一種控制隨機性的方法:把候選 token 按機率由高到低排,只留累積機率達到 p(例如 0.9)的最小集合,尾巴上的選項直接淘汰,再從留下來的裡面抽。

你會在什麼時候遇到它

它幾乎總和 temperature 出現在同一份 API 文件、同一段範例程式碼裡,於是新手常兩個一起亂調,結果行為更難預測。搞懂它跟溫度的分工(一個改分佈形狀、一個截斷候選集合),你才知道該動哪一個 —— 以及為什麼多數時候只動一個就夠了。

打個比方

像只讓領跑者參加的抽獎:先按勝算排名,累積勝算湊到九成就關門,剩下的長尾選手直接取消資格,然後在入選者裡抽一個。天氣(溫度)改變每個人的勝算;這條線改變誰有資格入場 —— 機制不同,但互相影響。

最小範例

下一個 token 的候選與機率(示意):

  「好」    0.50   累積 0.50
  「不錯」  0.25   累積 0.75
  「行」    0.15   累積 0.90   ← top_p=0.9 的界線落在這裡
  「妙」    0.07   (淘汰)
  「絕妙」  0.03   (淘汰)

本輪只從前三個裡抽。若模型這一步非常確定
(例如某個選項機率 0.98),核裡可能只剩一個候選。

注意「核」的大小是動態的:模型越確定,留下的候選越少;越猶豫,留下的越多。top_p=1 等於不截斷(全部保留),多數 API 的預設就是它。

最常搞錯的地方

  • 同時調 temperature 和 top_p 來「找手感」。溫度會改變每個候選的機率,進而改變哪些候選能進核 —— 兩個參數互相耦合,一起調等於在兩個會互相移動的旋鈕上瞎猜。慣例是一次只動一個:要嘛用溫度、top_p 保持 1;要嘛固定溫度、只調 top_p。
  • 以為 top_p=0.9 是「保留前 90% 數量的候選」。是累積機率 90%,不是數量 90% —— 詞彙表可能有好幾萬個候選 token,核裡通常只剩幾個。

相關詞條

下一步