臂、拉動、獎勵
一排老虎機
想像 K 台老虎機排成一列。每台機器支付不同的平均獎勵,但你不知道任何平均值。每一步你挑一台機器,拉它的槓桿,並觀察支付金額。你的目標:在多次拉動中最大化總獎勵。
這種設定定義了多臂老虎機問題。K = 臂的數量。一個拉動挑選一個臂。獎勵來自該臂的隱藏分佈。臂 k 的 mean_reward(k) 追蹤 k 的拉動平均值。
探索 vs 利用
兩種壓力相互拉扯:
利用 拉動觀察到最高平均獎勵的手柄。貪婪。風險:拉動 2 次後看起來很棒的手柄可能回歸到較低的真實平均值。
探索 拉動較少測試的手柄以減少不確定性。風險:花在探索的時間會損失從已知好手柄獲得的獎勵。
好的策略會混合兩者。純粹的開發會永遠鎖定早期的贏家。純粹的探索永遠無法收集回報。
ANDREA 的手臂 = 資料來源
ANDREA 將訓練框架化為老虎機。每個資料來源(hermes3-general、gutenberg、dictionary、synthetic-chat、smoltalk 等)作為一個手臂。每個訓練步驟拉一個手臂:從該來源載入文件,執行前向傳遞,觀察損失減少。每个來源的平均回報追蹤該來源平均改善損失的程度。
為什麼適合:模型在訓練期間需求會改變。早期步驟受益於廣泛曝光(多個來源)。後期步驟受益於針對性精煉(少數高回報來源)。老虎機能適應;固定的採樣比例無法。
命名各部分
UCB1 分數
Auer、Cesa-Bianchi & Fischer,2002
Peter Auer 及其同事於 2002 年發表 UCB1,作為一種具有 O(log N) 遺憾界限的有限時間 bandit 策略。UCB1 透過將手臂的目前平均獎勵與一個隨著手臂被拉動次數增加而縮小的探索獎勵相結合來選擇手臂。
公式
UCB(k) = mean_reward(k) + C * sqrt(ln(N) / n_k)
逐項解釋:
- mean_reward(k):手臂 k 所有 n_k 次拉動所觀察到的平均獎勵。利用項。
- N:到目前為止所有手臂的總拉動次數。每步都會增長。
- n_k:手臂 k 的特定拉動次數。只有當 k 被選中時才增長。
- C:探索常數。標準教科書值:1.4 (sqrt(2))。ANDREA 使用 C=0.5。
- sqrt(ln(N) / n_k):信心半徑。很少被拉的手臂有小的 n_k 並獲得大獎金;被充分拉動的手臂有大的 n_k 並獲得小獎金。
為什麼這個公式有效
ln(N) 增長緩慢(對數增長),因此分子隨著總經驗緩慢上升。分母中的 n_k 隨著特定手臂的證據累積而縮小該項。平方根軟化了反應,這防止單一未充分探索的手臂永遠主導。
每一步使用 argmax_k UCB(k) 選擇,即可自動平衡這兩種壓力。無需 epsilon 參數、無需 schedule、無需 temperature。數學會自動處理。
計算 UCB 分數
為什麼 C=0.5 而不是 1.4
教科書值
Auer, Cesa-Bianchi & Fischer 推導出一個遺憾界限,假設獎勵在 [0, 1] 範圍內。該界限對 C = sqrt(2) 約 1.414 成立。大多數教科書教導 C=1.4 作為安全的預設值。
ANDREA 的獎勵幅度
ANDREA 將每步損失改進報告為獎勵。原始改進約為 0.001(損失從 4.521 降至 4.520)。經過 1000x 縮放因子(在活動 78,獎勵歸因中涵蓋)後,縮放後的獎勵幅度接近 1.0。一個臂歷史的平均獎勵穩定在 0.5 到 3.0 的範圍內。
現在考慮 C=1.4、N=10000、n_k=100 時的探索獎勵:
1.4 sqrt(ln(10000) / 100) = 1.4 sqrt(9.21 / 100) = 1.4 * 0.303 = 0.425
0.425 位於獎勵區間內。可接受。現在 n_k=10(一個罕見的臂):
1.4 sqrt(9.21 / 10) = 1.4 0.960 = 1.344
1.344 高於大多數觀察到的平均獎勵。探索主導:罕見的臂無論其實際平均值如何都會獲勝。當有多個來源且訓練運行時間長時,這會使排程充斥低平均值的臂。
修正方法:C=0.5
0.5 sqrt(9.21 / 10) = 0.5 0.960 = 0.480
0.480 低於大多數獎勵平均值。探索仍然發生(罕見手臂仍獲得獎勵),但 mean_reward 佔主導。ANDREA 更多地利用,較少探索,並避免探索主導。
調參作為工程,而非理論
教科書界限假設獎勵在 [0, 1] 範圍內。ANDREA 的獎勵大致在 [0, 5] 範圍內。縮放常數使常數匹配獎勵大小。相同演算法,校準環境。
診斷探索主導
接下來內容
你已學會的
UCB1 選擇 upper confidence bound 最高的 arm。該 bound 結合 mean_reward (利用) 與 sqrt(ln(N) / n_k) 由 C 縮放 (探索)。ANDREA 調整 C=0.5,因為每步獎勵落在 0.5 到 3.0 的範圍內,而教科書的 1.4 會讓低均值 arm 充斥時間表。
剩餘內容
Vanilla UCB1 每次選擇一個手臂。ANDREA 每個階段選擇幾個焦點手臂,先混合隨機手臂,& 每個階段持續 7 到 42 步。那個結構(活動 77:骰子階段)防止 UCB 過度投入早期贏家,同時仍讓它集中努力。
獎勵歸因(活動 78)顯示 mean_reward(k) 實際來自何處。地板值 & 紀元懲罰(活動 79)在 UCB 輸出上層疊保護規則。
參考文獻
- Auer, Cesa-Bianchi, Fischer (2002). "Finite-time Analysis of the Multiarmed Bandit Problem." Machine Learning, 47, 235-256.
- ANDREA 白皮書,第 3.1 節與 3.4 節。