Top-p 采樣是大語言模型、文本生成、解碼策略、生成式人工智能和模型推理中常見的一個術語,也稱為 Nucleus Sampling,通常譯為“核采樣”。它用來描述一種根據累計概率動態選擇候選 token 集合,再從候選集合中隨機采樣的方法。換句話說,Top-p 采樣是在回答:模型生成下一個 token 時,應該從哪些“足夠可能”的候選中選擇,而不是在整個詞表中盲目隨機。
如果說控制的是概率分布的“尖銳程度”,Top-k 控制的是固定保留前 k 個候選,那么 Top-p 控制的是“累計概率達到 p 的候選集合”。它不是固定保留多少個 token,而是根據當前概率分布動態決定候選數量。
因此,Top-p 采樣常用于大語言模型聊天、創意寫作、故事續寫、開放式問答、代碼輔助、廣告文案、頭腦風暴和多樣化文本生成中,是理解生成式模型輸出穩定性與多樣性的重要解碼策略。
一、基本概念:什么是 Top-p 采樣
Top-p 采樣是一種限制采樣候選范圍的解碼方法。
在大語言模型生成文本時,模型每一步都會給出所有候選 token 的概率分布。
例如,輸入:
人工智能正在模型可能給出下一個 token 的概率:
其他:0.07如果使用 Top-p 采樣,并設置:
p = 0.8模型會從概率最高的 token 開始累加,直到累計概率達到或超過 0.8。
例如:
累計概率 = 0.80于是,候選集合就是:
改變 / 發展 / 影響然后模型只在這個集合中重新歸一化概率并隨機采樣。
從通俗角度看:Top-p 采樣不是“所有詞都可能選”,而是先劃出一個“高概率核心區域”,再在這個核心區域里隨機選擇。
這也是它被稱為 Nucleus Sampling 的原因。這里的 Nucleus 可以理解為“核心候選集合”。
二、為什么需要 Top-p 采樣
Top-p 采樣之所以重要,是因為直接從完整詞表中采樣可能帶來不穩定結果。
大語言模型的詞表可能包含幾萬甚至更多 token。即使某些 token 概率很低,如果完全不加限制地采樣,它們仍然有很小概率被選中。
這些低概率 token 有時會導致:
? 輸出跑題
? 語義跳躍
? 句子不連貫
? 事實錯誤增加
? 出現奇怪詞語
? 格式控制變差
另一方面,如果每次都選概率最高的 token,輸出又可能太保守、重復、缺少變化。
Top-p 采樣正是為了在二者之間取得平衡。它的目標是:
? 去掉長尾低概率 token
? 保留足夠可能的候選
? 允許一定隨機性
? 提高輸出多樣性
? 避免過度發散
從通俗角度看:Top-p 采樣像是在答題時先排除明顯不靠譜的選項,再從剩下的合理選項中隨機挑一個。
因此,它特別適合開放式生成任務,例如寫作、對話、創意表達和多方案生成。
三、Top-p 采樣的基本過程
Top-p 采樣通常包括五步:計算 logits → 轉成概率 → 按概率排序 → 選擇累計概率達到 p 的候選 → 重新歸一化并采樣。
![]()
圖 1:Top-p 采樣的基本過程
1、計算 logits
模型先根據上下文計算每個候選 token 的原始分數。這些分數通常稱為 。
logits 不是概率,需要經過 softmax 轉換。
2、轉換成概率
使用 softmax 將 logits 轉為概率分布:
其中:
? p? 表示第 i 個 token 的概率
? z? 表示第 i 個 token 的 logit 分數
? ∑? 表示對所有候選 token 求和
? exp 表示指數函數
3、按概率從高到低排序
模型會把候選 token 按概率從高到低排列。
例如:
G:0.034、選擇累計概率達到 p 的最小集合
如果 p = 0.8,則從高到低累加:
A + B + C:0.80因此候選集合為:
{A, B, C}一般可以寫為:
其中:
? V_p 表示 Top-p 候選集合
? V' 表示按概率從高到低選出的候選集合
? p? 表示第 i 個 token 的概率
? p 表示累計概率閾值
5、重新歸一化并采樣
選出候選集合后,會把集合外 token 的概率設為 0,再對候選集合內的概率重新歸一化。然后在候選集合內隨機采樣。
從通俗角度看:Top-p 先決定“哪些 token 有資格被選”,再決定“這次具體選哪個”。
四、Top-p 為什么是動態候選集合
Top-p 采樣的關鍵特點是:候選集合大小不是固定的。它會隨概率分布變化而變化。
1、概率分布很集中時
如果模型非常確定,下一個 token 的概率可能是:
其他:0.06當 p = 0.8 時,只需要:
累計概率 = 0.85候選集合可能只有 2 個 token。
這說明模型越確定,Top-p 候選集合越小。
2、概率分布很平緩時
如果模型不太確定,概率可能是:
其他:0.17當 p = 0.8 時,需要更多 token 才能累計到 0.8。候選集合可能包含 6 個或更多 token。
這說明模型越不確定,Top-p 候選集合越大。
從通俗角度看:Top-p 會根據模型當前的“確定程度”自動調節候選范圍。
模型很確定時,它少給選擇。
模型不確定時,它允許更多合理選擇。
這就是 Top-p 相比 Top-k 更靈活的地方。
五、Top-p 與 Top-k 的區別
Top-p 和 Top-k 都用于限制采樣候選范圍,但方式不同。
1、Top-k:固定候選數量
Top-k 每一步固定保留概率最高的 k 個 token。
例如:
k = 5表示每一步都只在概率最高的 5 個 token 中采樣。無論模型是否確定,候選數量都是 5。
從通俗角度看:Top-k 是“固定人數入圍”。
2、Top-p:固定累計概率
Top-p 保留累計概率達到 p 的最小候選集合。
例如:
p = 0.9表示候選集合的累計概率至少達到 0.9。候選數量不是固定的。
從通俗角度看:Top-p 是“按總把握程度入圍”。
3、二者的核心區別
可以概括為:
? Top-k:固定保留前 k 個候選
? Top-p:動態保留累計概率達到 p 的候選集合
![]()
圖 2:Top-p 與 Top-k 的區別
例如:
? 當概率分布很集中時,Top-p 可能只保留很少 token
? 當概率分布很分散時,Top-p 可能保留更多 token
? Top-k 不管分布形狀如何,始終保留 k 個 token
因此,Top-p 通常比 Top-k 更自適應。
不過,在實際應用中,Top-p 和 Top-k 也可以一起使用。
例如,先用 Top-k 限制最大候選數量,再用 Top-p 保留核心概率集合。
六、Top-p 與溫度的關系
Top-p 經常和一起使用,但二者作用不同。
![]()
圖 3:Top-p、溫度與解碼策略的關系
1、溫度改變概率分布形狀
溫度會調整 logits 進入 softmax 前的比例:
其中:
? T 表示溫度
? T < 1 時,分布更尖銳
? T > 1 時,分布更平滑
從通俗角度看:溫度決定概率分布是“集中”還是“分散”。
2、Top-p 限制候選集合范圍
Top-p 不直接改變 logits,而是根據概率分布選擇候選集合。
從通俗角度看:Top-p 決定“哪些 token 可以進入候選池”。
3、二者如何配合
可以概括為:
? 溫度:調整概率分布形狀
? Top-p:截取核心候選集合
? Sampling:從候選集合中隨機選擇
例如:
? 低溫 + 低 Top-p:非常穩定,但可能保守
? 低溫 + 高 Top-p:仍較穩定,但允許少量變化
? 中溫 + Top-p 0.8~0.95:常見平衡設置
? 高溫 + 高 Top-p:多樣性強,但更容易跑偏
從實踐角度看,溫度和 Top-p 應一起調節,而不是孤立理解。
七、Top-p 的參數設置建議
Top-p 的取值通常在 0 到 1 之間。
數值越小,候選集合越窄;數值越大,候選集合越寬。
1、較低 Top-p
例如:
top_p = 0.5 ~ 0.7特點是:
? 候選集合較小
? 輸出更穩定
? 發散性較弱
? 創意空間較小
適合:
? 技術解釋
? 摘要
? 翻譯
? 結構化輸出
? 事實性問答
2、中等 Top-p
例如:
top_p = 0.8 ~ 0.95特點是:
? 穩定性和多樣性較平衡
? 保留多數合理候選
? 不容易過度隨機
適合:
? 普通對話
? 教學解釋
? 內容改寫
? 標題生成
? 多方案構思
3、較高 Top-p
例如:
top_p = 0.95 ~ 1.0特點是:
? 候選集合更寬
? 輸出更多樣
? 隨機性更強
? 可能更容易跑偏
適合:
? 創意寫作
? 角色對話
? 故事續寫
? 頭腦風暴
需要注意:top_p = 1.0 通常表示不使用 Top-p 截斷,或者幾乎保留所有候選。這時輸出隨機性主要由溫度和其他采樣策略控制。
八、Top-p 的優勢、局限與使用注意事項
1、Top-p 的主要優勢
Top-p 最大的優勢是自適應。
它會根據當前概率分布動態選擇候選 token 數量。
當模型很確定時,候選集合較小,輸出更穩。
當模型不確定時,候選集合較大,允許更多變化。
其次,Top-p 可以減少低概率 token 帶來的噪聲。
它通過截斷長尾候選,降低生成奇怪詞語或跑題內容的概率。
再次,Top-p 適合開放式生成。
相比每次都選擇最高概率 token,它能產生更自然、多樣的回答。
從通俗角度看:Top-p 的優勢在于,它不是隨便亂選,而是在“合理范圍內隨機”。
2、Top-p 的主要局限
Top-p 也有局限。
首先,Top-p 不能保證事實正確。
它只控制候選 token 范圍,不負責驗證知識是否真實。
其次,Top-p 不能提升模型本身能力。
如果模型不會某個問題,把 top_p 調高或調低都不能真正補足知識。
再次,Top-p 設置不當會影響輸出質量。
如果 top_p 太低,輸出可能保守、重復、缺少變化。
如果 top_p 太高,輸出可能發散、跑題、格式不穩定。
此外,不同模型對同一 top_p 的表現可能不同。
某個模型 top_p = 0.9 的效果,不一定等同于另一個模型的 top_p = 0.9。
3、使用 Top-p 時需要注意的問題
使用 Top-p 時,需要注意:
? Top-p 控制候選集合,不控制事實正確性
? top_p 越小,候選集合越窄
? top_p 越大,候選集合越寬
? Top-p 常與 temperature 搭配使用
? 技術任務通常適合較低或中等 Top-p
? 創意任務可以適當提高 Top-p
? 嚴格格式輸出不宜設置過高 Top-p
? Top-p 與 Top-k 可以結合使用
? 不同模型的最佳參數可能不同
從實踐角度看,Top-p 是生成控制參數,而不是質量保證參數。對于高風險或事實性任務,仍需要 RAG、工具調用、事實校驗和人工審核等機制。
九、Top-p 的常見誤解
誤解一:Top-p 越高,回答越好
不對。
Top-p 越高,候選范圍越寬,輸出可能更豐富,但不一定更準確。
對于技術解釋、事實問答、數據抽取等任務,過高 Top-p 可能降低穩定性。
誤解二:Top-p 越低,回答越正確
也不對。
Top-p 較低只會讓模型更集中地從高概率候選中選擇。
如果高概率候選本身是錯誤的,模型仍然可能穩定地輸出錯誤答案。
誤解三:Top-p 和 temperature 是一回事
不對。
溫度改變概率分布的形狀。
Top-p 根據概率分布截取候選集合。
二者常一起使用,但作用不同。
誤解四:Top-p 可以替代 RAG
不對。
Top-p 是解碼策略,RAG 是外部知識增強方法。
如果模型缺少某份文檔、最新信息或精確事實,Top-p 不能把這些知識變出來。
十、Python 示例
下面給出幾個簡單示例,用來幫助理解 Top-p 采樣的基本過程。
示例 1:手動理解 Top-p 候選集合
輸出結果中,候選集合會保留從高到低累加到 top_p 的 token。
這個例子說明:Top-p 不是固定選幾個,而是按累計概率選。
示例 2:用 PyTorch 實現簡化 Top-p 過濾
這個例子展示了 Top-p 的核心步驟:
? 排序
? 累加概率
? 截斷長尾
? 重新歸一化
示例 3:Top-p 采樣
這個函數實現了一個簡化版 Top-p 采樣。真實大語言模型在每一步生成 token 時,都會進行類似的候選過濾和采樣過程。
示例 4:Top-p 與溫度結合
這個例子說明:
? temperature 先改變概率分布形狀
? Top-p 再根據概率分布截取候選集合
? 最后從候選集合中隨機采樣
示例 5:不同 Top-p 下候選集合大小
通常會看到:
? top_p 越小,候選集合越小
? top_p 越大,候選集合越大
這正是 Top-p 控制候選范圍的直觀效果。
小結
Top-p 采樣是一種根據累計概率動態選擇候選 token 集合的解碼策略。它先按概率從高到低排序,再保留累計概率達到 p 的最小候選集合,最后在該集合中重新歸一化并采樣。相比 Top-k,Top-p 更自適應;相比 greedy,它更有多樣性。對初學者而言,可以把 Top-p 理解為:先選出模型認為“足夠可能”的核心候選,再在這些候選中隨機生成。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.