Top-k sampling 把模型的下個 token 選擇限制在機率前 k 高的 token,然後從這個子集合取樣(常按機率加權)。k=1 等於每次都挑機率最高的——跟 greedy / temperature 0 一樣。k=50 永遠考慮機率前 50 高的選項,不管機率分布多不平均。 它重要的原因是:這是限制輸出隨機性最簡單的方法。沒有任何 cap 時,連 0.0001% 機率的 token 偶爾也會被取樣,可能產生怪 token 或崩壞。Top-k 把這些濾掉。 舉個例子:續寫「once upon a time, there was a」。Temperature 1 沒有 top-k 時,偶爾可能取樣到冷門或語法錯的 token。Top-k 40 確保你只從前 40 個最可能的後續挑——「king」「princess」「young」「little」等,都合理。 相對於 top-p 的弱點:top-k 不管模型多有信心都用同樣數量的候選。模型強烈知道下個字時(「capital of France is...」),top-k 50 浪費在不可能的 token 上。模型真的不確定時(開放式創意寫作),top-k 50 可能太限制。多數現代 API 預設用 top-p,但有些兩個都用。延伸閱讀:top-p、temperature、sampling、decoding。