溫度Temperature
也常被稱為:Temperature、溫度參數
一句話解釋
控制模型生成隨機程度的參數,低則穩定保守,高則多樣發散。
它在做什麼
模型每生成一個 token,實際上是先算出「所有可能的下一個 token 各自的機率」,再從中挑一個。
Temperature 控制的是挑選時要多忠於這個機率分布:
- 低(接近 0):幾乎總是挑機率最高的那個。結果穩定、保守、可預測。
- 中(0.7 上下):大致依機率挑選,偶爾選到次高的。平衡多樣性與合理性。
- 高(1.5 以上):把低機率的選項也拉進來。變化多,但容易離題或語句不通。
該怎麼設
| 任務 | 建議範圍 | 原因 |
|---|---|---|
| 資料抽取、分類 | 0 – 0.2 | 要的是一致與正確,不要變化 |
| 程式碼生成 | 0 – 0.3 | 語法錯一個字就不能跑 |
| 翻譯、摘要 | 0.2 – 0.5 | 需要一點彈性,但不能偏離原意 |
| 一般問答、寫作 | 0.5 – 0.8 | 自然流暢,同時保持可靠 |
| 發想、腦力激盪 | 0.8 – 1.2 | 要的就是不同的可能性 |
相關的其他參數
Top-p(nucleus sampling):只從累積機率達到 p 的候選中挑選。和 temperature 效果相近,但更能避免挑到極低機率的怪字。一般建議兩者調一個就好,同時調很難預測結果。
Top-k:只從機率最高的 k 個候選中挑。概念更直觀,但因為候選數固定,在不同情境下表現不如 top-p 穩定。
實務建議:先只調 temperature,把 top-p 留在預設值。兩個一起動,你會分不清楚是哪個造成的差異。
常見問題
- Temperature 設 0 就一定每次都一樣嗎?
- 幾乎一樣,但不保證完全相同。設 0 表示每次都挑機率最高的 token,理論上是決定性的,但實務上浮點運算順序、硬體差異、批次組成都可能造成極小的差別。需要嚴格可重現時,還要一併固定 seed,而且不是所有服務都支援。
- 在 ChatGPT 或 Claude 的網頁介面可以調嗎?
- 一般不行,網頁介面通常用固定的預設值。要調整得透過 API 或開發者工具。這也是為什麼同樣的問題,在網頁上問和用 API 問,得到的答案風格可能不太一樣。
相關術語
更新於 .全部術語