生成式AI與大型語言模型

top-k 與 top-p 取樣(top-k and top-p sampling)

/ TOP-KAY and TOP-PEE SAM-pling /

top-k 與 top-p,是兩種辦法,用來決定「在每一步,語言模型究竟被允許從哪些候選詞裡挑」——一份候選短名單,隨後才由機率做出最終選擇。模型每一步都會產出一份完整、帶機率的候選詞排行榜,但榜尾大多是廢話。這兩種方法把榜尾剪掉,好讓模型既能有創意,又不至於偶爾脫口說出真正的胡話。

top-k 是簡單粗暴的那種:只留下最可能的 k 個詞(比如前40個),其餘一概不理,再在這些裡取樣。top-p(又叫核取樣)更聰明些:留下「機率累加恰好夠到閾值 p(比如0.9)」的那一小撮排在前頭的詞,再在其中取樣。top-p 的妙處在於,這份短名單會自動伸縮——當模型很篤定(某一個詞獨占鰲頭)時,名單極短;當它確實拿不準時,名單便擴寬,納入更多選項。實際中,這兩者常與溫度搭配:溫度重塑賠率,top-k/top-p 修剪選項。

要保持誠實:這些都是關於「文風與風險」的旋鈕,而非關於「真理」的旋鈕。它們降低了某個離奇詞把文字帶偏的機率,可模型挑的,仍是它認為「說得通」的詞——而說得通,並不等於正確。剪掉榜尾,讓輸出更乾淨、聽起來更穩妥;它並不能給模型更好的事實或判斷。

在寫「我最愛的水果是___」時,模型排出:蘋果30%、芒果20%、香蕉15%……再往下很遠,「電話」0.001%。top-p 取0.9,只留下那些機率累加到90%的水果,把又長又荒唐的尾巴丟掉——於是它能在蘋果、芒果、香蕉之間變換,卻永遠不會挑「電話」。

top-p 保留一份自動伸縮的短名單;荒唐的尾巴被剪掉。

top-k 用一個固定的截斷(永遠取 k 個詞);top-p 用一份「機率預算」,於是當模型拿不準時短名單自動擴大、篤定時則收窄。它們通常與溫度組合使用,而其中沒有任何一個能提升答案的事實準確度。

又稱
nucleus samplingtop-k samplingtop-p sampling核采样核取樣