臂、拉动、奖励
一排老虎机
想象 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 参数,没有调度,没有温度。数学会处理它。
计算 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 选择具有最高上置信界的臂。该界结合 mean_reward(利用)与 sqrt(ln(N) / n_k) 乘以 C(探索)。ANDREA 调整 C=0.5,因为每步奖励在 0.5 到 3.0 范围内,而教科书的 1.4 会让低均值臂充斥调度。
剩余内容
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 节。