[GenAI] Temperature、Top P 很難懂?吃個”營養午餐” 給你懂

Joe Huang
Jul 4, 2024

--

調參三兄弟,你知道我們的存在嗎?

或許你知道在做GPT 它的底層都是透過Transformer的架構來去做文字的接龍生成,而這些字其實都是”機率的概念” [1][5] ,使用者們對於每一次的使用情境會有不同

  • 情境1) → 想要”創意性”
  • 情境2) 有時又要精確一點,不要太發散

因此如何調整LLM,進而去影響結果是一門學問,這個時候我們可以做的事就是運用這三個值分別是大哥Temperature二哥Top P小弟Top K

[1] Transformer 選token 是一種機率分佈

AWS Bedrock playground 可能你有發現過它們的存在

  • 可能你也看了文章看了官方文檔,但差異很難說個清楚,我們就用圖解方法來說明,如果文檔看不懂可以參考我的比喻

各家LLM playground

[2] AWS Bedrock playground
[3] GPT playground

Temperature、Top P 很難懂?透過”營養午餐”說給你你聽

用一個國中生容易理解的例子來說明 Temperature、Top P 和 Top K 的差異,午餐是一個難題,從學生到上班族到是一個難題,所以校方設計了一個飛輪轉盤,學生們可以選擇主食的情境,因此,能吃到什麼都是機率問題!

而你想吃什麼,跟不想吃什麼,可以交給機率 也可以掌握在你手上!😎
怎麼做呢?控制轉動的力道 💪

1) Temperature(溫度)

  • 想像你有一個轉盤,上面有不同的餐點選擇,共有六種餐點
  • 🔻 低 Temperature:轉盤幾乎停在你最喜歡的餐點上(如總是愛吃炒飯),那技巧上可以怎麼做?很簡單,學生只要轉 ”很小力”,它總是會停留在炒飯
  • ✅ 高 Temperature:轉盤可能停在任何餐點上,甚至是你平常不太吃的白飯,因為你是轉”很大力”,任何可能都存在

2) Top K

  • 另外這個學生比較好養,但也只愛三種主餐,因此假設你有一個最喜歡的 K 種餐點清單,設計如下
  • ✅ 低 K 值(如 3):你只從最喜歡的 3 種餐點中選擇(如漢堡、披薩、炒麵)
  • ✅ 高 K 值(如 4):增加一點趣味性,你可以從更多種類的餐點中選擇,包括一些你不常吃的

3) Top P:

  • 設想餐廳有一個按受歡迎程度排序的菜單
  • 低 P 值(如 0.3):你只考慮最受歡迎的 30% 的餐點
  • 高 P 值(如 0.9):你會考慮 90% 的餐點,可能包括一些比較少見的選擇

比喻過完,講實際應用場景怎麼用阿?

「確定性」與「隨機性」的兩大參數就是微調的2大參數,因此我把它分二類

  1. 保守選擇(低隨機性)
  • 低 Temperature:幾乎每次都選擇漢堡。
  • 低 K(如 3):只在漢堡、披薩和炒麵中選擇。
  • 低 P(如 0.2):只考慮最受歡迎的兩三種餐點。

2.冒險嘗試(高隨機性)

  • 高 Temperature:可能突然選擇一道你從未嘗試過的異國料理。
  • 高 K(如 15):從更多種類的餐點中選擇,可能嘗試新的組合。
  • 高 P(如 0.8):考慮大部分的餐點選擇,包括一些不太常見的選項。

⛑️ 6 大場景使用

  • 開頭提到場景不同會有「確定性」與「隨機性」二種的trade off,但場景若是固定的我們可以去調配我們的最適合Temperature、Top P。以下是江湖英雄好漢整理的參數值給大家參考[4]表格,那您的Temperature跟Top P跟使用情景是什麼呢? 歡迎底下留言
https://dropchat.co/blog/controlling-gpt-4s-creative-thermostat-understanding-temperature-and-top_p-sampling

References

--

--

Joe Huang

雲端架構師,年輕的軀殼裝著老靈魂,喜歡配著音樂閱讀,生活不能沒有思考和遊蕩