調參三兄弟,你知道我們的存在嗎?
或許你知道在做GPT 它的底層都是透過Transformer的架構來去做文字的接龍生成,而這些字其實都是”機率的概念” [1][5] ,使用者們對於每一次的使用情境會有不同
- 情境1) → 想要”創意性”
- 情境2) 有時又要精確一點,不要太發散
因此如何調整LLM,進而去影響結果是一門學問,這個時候我們可以做的事就是運用這三個值分別是大哥Temperature
、二哥Top P
、小弟Top K
AWS Bedrock playground 可能你有發現過它們的存在
- 可能你也看了文章看了官方文檔,但差異很難說個清楚,我們就用圖解方法來說明,如果文檔看不懂可以參考我的比喻
各家LLM 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大參數,因此我把它分二類
- 保守選擇(低隨機性)
- 低 Temperature:幾乎每次都選擇漢堡。
- 低 K(如 3):只在漢堡、披薩和炒麵中選擇。
- 低 P(如 0.2):只考慮最受歡迎的兩三種餐點。
2.冒險嘗試(高隨機性)
- 高 Temperature:可能突然選擇一道你從未嘗試過的異國料理。
- 高 K(如 15):從更多種類的餐點中選擇,可能嘗試新的組合。
- 高 P(如 0.8):考慮大部分的餐點選擇,包括一些不太常見的選項。
⛑️ 6 大場景使用
- 開頭提到場景不同會有「確定性」與「隨機性」二種的trade off,但場景若是固定的我們可以去調配我們的最適合Temperature、Top P。以下是江湖英雄好漢整理的參數值給大家參考[4]表格,那您的Temperature跟Top P跟使用情景是什麼呢? 歡迎底下留言
References
- [圖1] Transformer 選token 是一種機率分佈
- [圖2] AWS Bedrock playground
- [圖3] GPT playground
- [4] https://dropchat.co/blog/controlling-gpt-4s-creative-thermostat-understanding-temperature-and-top_p-sampling
- [5] https://blog.csdn.net/qq_43243579/article/details/136331123