腕、引き、報酬
一列に並んだスロットマシン
K台のスロットマシンが一列に並んでいるのを想像してください。各マシンは異なる平均報酬を支払いますが、その平均はわかりません。毎ステップで1台のマシンを選び、レバーを引き、支払いを観察します。目標:多くの引きで総報酬を最大化することです。
この設定が多腕バンディット問題を定義します。K = 腕の数。引きは1つの腕を選択します。報酬はその腕の隠れた分布から得られます。腕kのmean_reward(k)はkの引きの走行平均を追跡します。
探索 vs 活用
2つの相反する圧力が働きます:
活用 は、観測された平均報酬が最も高いアームを引き抜きます。貪欲です。リスク:2回引いた後に優良に見えたアームが、真の低い平均に回帰する可能性があります。
探索 は、不確実性を減らすためにあまりテストされていないアームを引き抜きます。リスク:探索に費やした時間が、既知の優良アームから得られた報酬を失うことになります。
良いポリシーは両方を組み合わせます。純粋な活用は初期の勝者を永遠に固定します。純粋な探索は報酬を決して集めません。
ANDREAの腕 = データソース
ANDREAはトレーニングをbanditとしてフレームします。各データソース(hermes3-general, gutenberg, dictionary, synthetic-chat, smoltalkなど)が腕として機能します。各トレーニングステップで1つの腕を引き:そのソースからドキュメントをロードし、前方パスを実行し、損失減少を観測します。ソースごとの平均報酬は、そのソースが平均的に損失をどれだけ改善するかを追跡します。
これが適合する理由:トレーニング中にモデルのニーズは変化します。初期ステップは広範な露出(多くのソース)から利益を得ます。後期ステップは標的の洗練(少数の高報酬ソース)から利益を得ます。Banditは適応します;固定サンプリング比率はできません。
部品の命名
UCB1スコア
Auer, Cesa-Bianchi & Fischer, 2002
Peter Auerと同僚らは2002年にUCB1を公開した。これはO(log N)のregret boundを持つ有限時間banditポリシーである。UCB1はarmの現在の平均報酬に、armが引き取られるほど縮小するexplorationボーナスを組み合わせることでarmを選択する。
数式
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) を選ぶことで、両方の圧力を自動的にバランスさせます。εパラメータも、スケジュールも、温度も不要です。数学がそれを処理します。
UCBスコアを計算する
C=0.5を使う理由(1.4ではなく)
教科書の値
Auer, Cesa-Bianchi & Fischer は、報酬が [0, 1] の範囲にあることを仮定して regret bound を導出しています。その bound は C = sqrt(2) ≈ 1.414 で成り立ちます。ほとんどの教科書では C=1.4 を安全なデフォルトとして教えています。
ANDREAの報酬の大きさ
ANDREA はステップごとの損失改善を報酬として報告します。生の改善値は約 0.001(損失が 4.521 から 4.520 に低下)です。1000倍のスケーリング係数(アクティビティ 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は最高の上限信頼区間を持つ腕を選択します。この区間はmean_reward(搾取)とsqrt(ln(N) / n_k)をC(探索)でスケーリングしたものを組み合わせます。ANDREAはC=0.5に調整します。なぜならステップごとの報酬が0.5〜3.0の範囲にあり、教科書の1.4では低平均腕がスケジュールを埋め尽くすからです。
残るもの
Vanilla UCB1は一度に1つの腕を選択します。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 whitepaper、セクション 3.1 & 3.4。