CS234 L11 · 快速强化学习 I:探索与多臂老虎机 · 全片速览

65 镜一次看完 · Ctrl+F 可搜全文 · Ctrl+P 可存成 PDF · 想看动画回放映厅

1 · 开场2 · 1 · 判据换了:从「能不能学到3 · 2 · 遗憾:累积4 · 3 · 贪心和固定 ε-贪心都是5 · 4 · 下界:常数遗憾做不到,<6 · 5 · 乐观面对不确定:一次乐观7 · 6 · Hoeffding 给出8 · 7 · 两情形引理:把不可9 · 8 · 并集界与 δ/t²:Ba10 · 9 · 最终界:n 和 t11 · 完
知识点 1

开场

1 / 65
讲解
前十讲问的都是同一类问题:这个算法能不能学到最优策略?收敛吗?无偏吗?单调吗? 这一讲换问题:要多少数据才能学到。 换问题的理由很具体。DQN 在 Pong 上要打几百万帧才打得好——这完全没关系,因为那是模拟器,帧不要钱。但如果你的每一个数据点是一个人——一个病人、一个学生、一个看到广告的用户——那「几百万个样本」就不是工程问题,是伦理问题。 判据换了,工具也跟着换。这一讲把 RL 缩到最小的形状——一个状态、没有转移、m 个臂——因为在这个最小形状里,「要多少数据」这个问题第一次有了干净的答案。 本讲的技术核心是一个在板上从头证完的定理:UCB 的遗憾是 O(√(mT log(T²/δ)))。证明由三块拼成,每一块本片各占一集。 还有一句讲师自己的提醒要先记下来:「I'll be a little loose with constants, but definitely catch me on them.」——这个界里的常数没有被追踪,中途还有学生当场补了一个漏掉的因子 2。不要把最终式子里的任何数字常数当成验过的。
知识点 2

1 · 判据换了:从「能不能学到」到「要多少数据」

2 / 65
✓Pong几百万帧✕病人几百万个?同一个数字,两种含义
DQN 在 Pong 上要几百万帧。那完全没关系 —— 因为帧不要钱。
讲解
从一个具体的对比开始。 DQN 在 Pong 上要打几百万帧才打得好。这完全没关系——那是模拟器,一帧不要钱,你可以并行开一千个。 但把「帧」换成「病人」,同一个数字就变成另一回事。几百万个病人不是工程问题,是伦理问题。学生、广告受众、临床试验参与者,都是一样。 这一整块课(L11 到 L13)就建立在这个区分上:当每一个数据点是一个人的时候,样本效率不是优化目标之一,它是唯一的目标。
3 / 65
能学到就行收敛性保证我们已经有了
前十讲的保证全是渐近的 —— 没有一条说「要多少样本」。
讲解
这个错误模型不是凭空来的——它就是前十讲的默认立场,而且在那十讲里是对的。 但把前十讲的保证摊开来看,它们有一个共同的形状: 值迭代收敛到 V*——迭代次数足够多的时候。 MC 估计无偏——回合数趋于无穷的时候。 Q 学习收敛——在 Robbins-Monro 条件下,步数趋于无穷的时候。 TRPO单调改进——每一步都对,但没说需要多少轨迹才能估准那一步。 全是渐近的。没有一条回答「我手上只有 200 个病人,能做到什么」。
4 / 65
✓一个状态没有转移✓m 个臂分布未知✓拉一次得一个奖励✓独立同分布没有延迟RL 的最小形状
要问「要多少数据」,先把问题缩到还剩下探索、但别的都没有。
讲解
要问清楚「要多少数据」,先得把别的困难都关掉。 多臂老虎机:一个状态,没有转移,m 个臂;每个臂有一个固定但未知的奖励分布;每次拉一个臂,得一个独立同分布的奖励。 对照 L01 那四个轴:优化在,探索在,延迟后果没了(没有转移,这次的动作不影响下次的处境),泛化也没了(状态只有一个)。 这不是玩具。它是把「探索」单独隔离出来的最小实验装置——在这个装置里,「要多少数据」第一次有了能写成一行的答案。
5 / 65
✕计算效率前十讲✓样本效率这一块判据换了,算法也会换
判据一换,前十讲那些「收敛就好」的算法会当场出局。
讲解
换判据不是换一个衡量角度,它会换掉你造出来的算法。 这一点下面几集会反复看到,先把结论摆出来:贪心、固定 ε 的 ε-贪心、均匀随机探索——这三个在「收敛」的判据下全都及格,在「遗憾」的判据下全都不及格。 它们不及格不是因为学不到,而是因为学得太慢,而且慢的代价被永久记在账上。 这就是为什么这一块要新造一个数:光看「最后学到没有」,看不出它们的差别;必须有一个数,能把「早期犯的错」算进去。
6 / 65
✕能不能学到前十讲✓要多少数据这一块✓最小装置老虎机每个数据点是一个人
指名反驳:不是「能学到就行」。问题换成了要多少数据。
讲解
指名回去:「能学到就行」在前十讲是对的,在这一块不够了。 理由不是数学上的,是应用上的:当每一个数据点是一个人的时候,渐近保证等于没有保证。「样本数趋于无穷时收敛」这句话,对一个只有 200 个病人的试验说不出任何有用的东西。 于是这一块做三件事:把问题缩到最小装置(老虎机)、造一个能记录「学得多快」的数(遗憾)、然后找一个在这个数上能证明的算法(UCB)。 下一集造那个数。它比看上去讲究——关键在于它是累积的。
7 / 65

知识点 1 · 总结

判据从「能不能学到」换成「要多少数据」

核心结论

前十讲的保证全是渐近的:迭代次数 / 回合数 / 步数趋于无穷。没有一条回答「我只有 200 个病人能做到什么」。

底层机制

理由是应用上的:每一个数据点是一个人(病人、学生、广告受众)。Pong 要几百万帧没关系 —— 帧不要钱。

常见误解

误解:「能学到就行,收敛性我们已经有了」。这在前十讲是对的;判据一换,贪心、固定 ε-贪心、均匀随机会当场出局。

与你的考试

工具:多臂老虎机 —— 一个状态、无转移、m 个臂、独立同分布。对照 L01 四轴:优化在、探索在、延迟后果与泛化都关掉了。这是隔离「探索」的最小装置。

8 / 65

知识点 1 · 检验

为什么这一讲要把 RL 缩成「一个状态、没有转移」的多臂老虎机?

知识点 3

2 · 遗憾:累积的机会损失,不是当前有多好

9 / 65
怎么把「学得快」写成一个数要能把早期的错记在账上
要比较算法,先得有一个数。而这个数必须是累积的。
讲解
上一集说判据要换,这一集把新判据写出来。 需求很具体:这个数要能区分「一开始就做对」和「折腾很久才做对」。两个算法最终都找到最优臂,但一个花了 100 步,一个花了 10000 步——这个差别必须体现在数里。 所以它不能只看当前的表现。它必须把过程中每一步的损失加起来。 这个数就是遗憾。
10 / 65
看平均奖励就行拿到的奖励高,就是学得好
平均奖励会被后期的好表现冲淡,早期的代价看不见了。
讲解
为什么不直接看拿到的平均奖励? 两个问题。 第一,它和「最好能拿多少」脱钩。0.42 的平均奖励是好是坏,取决于最优臂是 0.43 还是 0.95。不减掉基准,这个数没法跨问题比较。 第二,也是更要紧的——平均会冲淡。一个算法前 1000 步全在乱试,之后 99000 步全对,它的平均奖励几乎等于最优。那 1000 步的代价被除掉了。 而如果那 1000 步里每一步是一个病人,那个代价不该被除掉。
11 / 65
Δa=Q(a∗)−Q(a)Regret(T)=∑t=1TΔat
差距把差距加起来
差距 Δ_a:这个臂比最优臂差多少。遗憾:把每一步的差距加起来。
讲解
两个定义。 差距 Δ_a = Q(a*) − Q(a):这个臂的期望奖励比最优臂低多少。最优臂自己的差距是 0。 遗憾 Regret(T) = Σ_{t=1}^{T} Δ_{a_t}:把你实际拉过的每一个臂的差距,从第 1 步到第 T 步全部加起来。 换句话说:遗憾是累积的机会损失——相对于「从第一步起就一直拉最优臂」这个不可能的基准,你一共亏了多少。 标一处记号陷阱:板上把「单步的差距」和「累积的和」都写作 regret,没有一致的下标。看到这个词时先确认它指的是哪一个。
12 / 65
10³5×10³2×10⁴5×10⁴50.150.050.050.0均匀随机的每千步遗憾
每千步遗憾平不下来,累积遗憾就是一条直线 —— 这叫线性遗憾。
讲解
看什么:四根柱子一样高,从一千步到五万步一点没降。每步的损失不降,累积起来就是一条直线 —— 这就是「线性遗憾」的全部含义,也是这一讲判所有天真做法出局的那把尺子。 —— 用「每千步遗憾」这个量来看,最直观。 均匀随机探索,三个臂 (0.5, 0.45, 0.4),200 次独立重复: T=10³ → 50.06 T=5×10³ → 49.98 T=2×10⁴ → 50.03 T=5×10⁴ → 50.01 完全不动。而且这个数可以手算对上:均匀随机每步的期望差距 = (0 + 0.05 + 0.10)/3 = 0.05,每千步就是 50.0。实测四个数全在 50.0 上下 0.1 以内。 每步损失不降,累积遗憾就是一条直线。这叫线性遗憾——而它意味着:时间再长也追不上,亏损的绝对量随 T 无限增长,占比也不降。 这把尺子下一集就要用来判三个最自然的做法。
13 / 65
✕最终多好渐近判据✓多快变好遗憾✓早期的错永久记账平均会冲淡,求和不会
指名反驳:遗憾量的是多快变好,不是最终多好。
讲解
指名回去:平均奖励量的是最终多好,遗憾量的是多快变好。 差别全在「求和」这个动作上:平均会把早期的错除掉,求和不会。遗憾把每一步的损失永久记在账上,这正是我们要的——因为那些步里的每一个,都是一个真实的人。 判据于是变成一句话:遗憾要是次线性的。次线性意味着每步的平均损失趋于零,也就是说算法真的越来越接近最优,而不只是「最终会」。 下一集把这把尺子架到三个最自然的做法上。结果会有点难看——三个全不及格,包括那个大家都以为「已经在探索了」的。
14 / 65

知识点 2 · 总结

遗憾 = 累积的机会损失,量的是「多快变好」

核心结论

差距 Δ_a = Q(a*) − Q(a);遗憾 Regret(T) = Σ_{t=1}^T Δ_{a_t}。相对「一直拉最优臂」这个不可能的基准,一共亏了多少。

底层机制

为什么必须求和而不是平均:平均会把早期的错除掉;而如果那些步里每一步是一个病人,那个代价不该被除掉。

常见误解

误解:「看平均奖励就行」。两个毛病:不减基准就无法跨问题比较;且后期的好表现会冲淡早期的代价。

与你的考试

判据:遗憾要次线性。实测均匀随机的每千步遗憾 50.06/49.98/50.03/50.01 —— 平不下来,手算基准 (0+0.05+0.10)/3×1000 = 50.0 对上。

15 / 65

知识点 2 · 检验

为什么用「累积遗憾」而不是「平均奖励」来衡量算法?

知识点 4

3 · 贪心和固定 ε-贪心都是线性遗憾 —— 有探索不等于够

16 / 65
✕贪心总拉均值最高的✕ε-贪心偶尔随机✕均匀随机一直乱拉三个都线性
三个最自然的做法,用上一集那把尺子一量 —— 全不及格。
讲解
把遗憾这把尺子架到三个最自然的做法上。 贪心:总拉当前经验均值最高的臂。 ε-贪心:以 ε 的概率随便拉一个,其余时候贪心。ε 固定。 均匀随机:一直随便拉。 结果:三个全是线性遗憾。 均匀随机线性,这不意外——它压根不学。贪心线性,也容易接受——它不探索。 意外的是中间那个。ε-贪心一直在探索,而它仍然是线性的。这一集就是要说清这件事。
17 / 65
ε-贪心已经在探索了有探索就够了吧
「有探索」和「探索得对」是两件事。固定的 ε 永远不停。
讲解
这是这一讲最值得停下来的错误模型,因为 ε-贪心几乎是所有人写的第一个探索算法,而且它确实会收敛到最优臂。 它的毛病不在「学不到」,在「学到之后还在乱拉」。 固定的 ε 意味着:哪怕你已经把三个臂的均值估到小数点后四位、已经百分之百确定哪个最好,你仍然会以 ε 的概率随机挑一个。第一百万步和第十步,探索的力度一模一样。 下一镜算出这个代价的确切大小——它是一个不随 T 衰减的正数。
18 / 65
每步遗憾 ⟶ εm∑aΔa > 0
这是个正数,不是 0
固定 ε 的每步遗憾收敛到一个正数 —— 于是累积遗憾是直线。
讲解
把 ε-贪心的渐近每步遗憾算出来。 等到均值估准之后,贪心那部分不再犯错,损失全部来自随机探索的那 ε 份。随机探索均匀地落在 m 个臂上,所以每步的期望损失是 (ε/m)·Σ_a Δ_a。 代进这一集的三个臂 (0.5, 0.45, 0.4)、ε=0.1: (0.1/3) × (0 + 0.05 + 0.10) = 0.005 每步,也就是每千步 5.00。 关键在于它是一个正数,而且不随 T 变。每步损失不趋于零,累积起来就是斜率 0.005 的直线。 这就是「固定 ε 是线性遗憾」的全部内容——不是它学不到,是它学到之后仍然按同样的力度在犯错。
19 / 65
10⁴5×10⁴2×10⁵5×10⁵6.5885.3185.0705.034ε-贪心的每千步遗憾
降、降、停住 —— 停在 5.034,而理论值是 5.00。
讲解
看什么:看四根柱子先降后停。前两根明显在降,第三第四根几乎一样高 —— 它停在了 5.03 附近,而不是继续往 0 去。停住的那个高度正是上一镜手算的 ε/m·ΣΔ = 5.00。柱子不再下降的那一刻,就是「线性」被看见的那一刻。 —— 实测。40 次独立重复,三个臂 (0.5, 0.45, 0.4),ε=0.1,看每千步遗憾: T=10⁴ → 6.588 T=5×10⁴ → 5.318 T=2×10⁵ → 5.070 T=5×10⁵ → 5.034 停住了。而且停在 5.00——正是上一镜手算的 (ε/m)·ΣΔ。 这里有一个陷阱值得说:如果你只跑到 T=10⁴ 就看,会看到 6.588 这个数还在往下走,很容易误判成「在收敛到零」。必须跑到足够长,才看得出它是停住还是继续降。这也是为什么这一讲需要一个定理而不只是几条实验曲线。 对照:同一组实验里,UCB 在这四个时刻是 12.981 / 4.538 / 1.588 / 0.724——一路降,没有停。注意 T=10⁴ 时 UCB 还比 ε-贪心差一倍,它是后来居上的。
20 / 65
✕贪心45% 锁死✕固定 ε停在正数✓要的是探索会收探索要随把握变小
指名反驳:不是「有没有探索」,是探索会不会随把握变小。
讲解
指名回去:问题不在「有没有探索」,在探索会不会随着把握增加而收缩。 三个做法的毛病各不相同: 贪心:探索为零,会锁死。实测 2000 次独立重复、T=3000,有 899 次(45.0%)最终把大多数拉动给了次优臂。而这个比例不随 T 衰减——锁死就是永久的,所以期望遗憾里始终留着一份线性项。 均匀随机:探索恒为 1,永不收缩。 固定 ε:探索恒为 ε,同样永不收缩。 它们在光谱的两端和中间,但犯的是同一个错:探索的力度是一个与把握无关的常数。 所以要的东西现在清楚了:一个探索力度随不确定性自动收缩的规则。 但在去找它之前,下一集先问一个该先问的问题:最好能做到多好?如果理论上限本来就是线性,上面这些批评就没有意义了。
21 / 65

知识点 3 · 总结

贪心、固定 ε-贪心、均匀随机 —— 三个全是线性遗憾

核心结论

固定 ε 的每步遗憾收敛到 (ε/m)·Σ_a Δ_a > 0,不是收敛到 0。三臂 (0.5,0.45,0.4)、ε=0.1 时 = 0.005/步 = 每千步 5.00。

底层机制

实测每千步遗憾 6.588 → 5.318 → 5.070 → 5.034(T 到 5×10⁵,40 次重复):停住了,正好停在手算值上。

常见误解

误解:「ε-贪心已经在探索了,够了」。它确实收敛到最优臂 —— 毛病是学到之后仍按同样力度乱拉,第一百万步和第十步一模一样。

与你的考试

三者犯的是同一个错:探索力度是与把握无关的常数(0 / ε / 1)。贪心还会锁死:2000 次重复里 45.0% 停在次优臂,且比例不随 T 衰减。陷阱:只跑到 T=10⁴ 会看到 6.588 仍在降,误以为次线性。

22 / 65

知识点 3 · 检验

固定 ε 的 ε-贪心为什么是线性遗憾?

知识点 5

4 · 下界:常数遗憾做不到,log T 是能指望的最好结果

23 / 65
线性做不得那最好能到多好先问上限,再去找算法
批评完三个做法,该问一句:理论上限本来是多少?
讲解
上一集判了三个做法出局。但在去造新算法之前,有一个该先问的问题: 最好能做到多好? 这个顺序很重要。如果理论上限本来就是线性遗憾,那上一集那些批评就毫无意义——不是算法不行,是问题本身不允许。 所以先找下界。下界告诉你两件事:哪些目标是白费力气,以及哪个目标值得去追。 这一集只做这一件事。
24 / 65
前期探索完就一直贪心这样遗憾应该是常数
常数遗憾做不到。任何算法都会被一对足够接近的臂骗到。
讲解
最自然的期望是:先花固定的若干步把每个臂都试够,估准了,之后一直拉最好的。这样总遗憾就是那段探索期的代价——一个常数,不随 T 增长。 听上去无懈可击。但它做不到。 原因在于「估准」这件事没有终点。给定任何固定的探索预算,总存在一对足够接近的臂,用这个预算区分不开。而一旦你选错了,之后的每一步都在亏——线性地亏。 下一镜把这个「区分不开」量化成一个公式。
25 / 65
lim infT→∞Regret(T)log⁡T ≥ ∑a:Δa>0ΔaKL(Ra‖Ra∗)
差距在分子可区分度在分母
Lai–Robbins 下界:遗憾至少随 log T 增长,系数由差距和 KL 决定。
讲解
下界的形状是这样的:任何「合理」的算法,遗憾除以 log T 的下极限,不小于一个由问题本身决定的常数。 那个常数是对每个次优臂求和,每一项是 Δ_a 除以 KL(R_a ‖ R_{a*})。 两个部分各有含义: 分子 Δ_a:拉错这个臂一次亏多少。 分母 KL:这个臂的奖励分布和最优臂的有多好区分。KL 越小越难区分,需要的样本越多。 于是整项就是「区分它需要的样本数 × 每次亏的量」。 注意最要紧的一点:右边是一个正数,左边除的是 log T。这意味着遗憾至少要随 log T 增长——常数遗憾被明确排除了。
26 / 65
Δ=.20Δ=.10Δ=.05Δ=.022.434.979.9824.99下界系数 Δ/KL
差距减半,下界系数就翻倍 —— 越接近的臂越难分开。
讲解
看什么:从左到右差距一路变小,柱子却一路变高。这是反直觉的地方:两个臂越像,区分它们越贵。看数字 —— 差距每减半(.20→.10→.05),系数就翻倍(2.43→4.97→9.98)。 —— 把伯努利臂代进去算。最优臂 0.5,看不同差距的次优臂: Δ=0.20 → 系数 2.43 Δ=0.10 → 系数 4.97 Δ=0.05 → 系数 9.98 Δ=0.02 → 系数 24.99 差距减半,系数翻倍。 这个反比关系有一个干净的解释:KL 在 p 附近约等于 Δ²/(2p(1−p)),所以 Δ/KL ≈ 2p(1−p)/Δ。代 p=0.5:2×0.25/Δ = 0.5/Δ。四个数分别是 2.50、5.00、10.00、25.00——和精确值 2.43、4.97、9.98、24.99 几乎重合。 直觉是:亏得少(Δ 小)不等于好办,因为你也更难发现自己亏了。两个效应的比值恰好让难度随 Δ 反比增长。
27 / 65
✕常数遗憾被排除✕线性遗憾太差✓log T值得去追下界在指路
指名反驳:常数做不到;但 log T 没被禁止 —— 于是值得去找。
讲解
指名回去:「探索完就一直贪心」给不出常数遗憾,因为总有一对臂用固定预算区分不开。 但下界真正的价值在另一面:它没有禁止 log T。 于是目标清楚了:找一个遗憾是 log T 量级的算法。这个目标不是拍脑袋定的,是下界画出来的。 这一讲最后证出来的 UCB 界是 O(√(mT log(T²/δ))),形状上比 log T 差——它是不依赖差距的界,对所有问题一致成立,代价是比逐问题的 log T 松。两种界各有用处,别把它们当成一回事。 说一句实测的对照,顺便纠正一个容易犯的误读:三臂 (0.5, 0.45, 0.4) 的下界系数合计是 14.95。T=5×10⁵ 时下界约 196,实测 UCB 是 362——1.85 倍,同一量级。但在 T=10⁴ 时实测 129.8 反而低于下界的 137.7——这不是矛盾:Lai–Robbins 是 T→∞ 的下极限,有限 T 上本来就可以在它之下。 下一集去找那个算法。它的想法只有一句话。
28 / 65

知识点 4 · 总结

常数遗憾做不到;log T 是能指望的最好结果

核心结论

liminf Regret(T)/log T ≥ Σ_{Δ_a>0} Δ_a / KL(R_a‖R_{a*})。分子 = 拉错一次亏多少,分母 = 两个分布有多好区分。

底层机制

差距减半系数就翻倍:Δ=.20/.10/.05/.02 → 2.43/4.97/9.98/24.99。因为 KL ≈ Δ²/(2p(1−p)),所以 Δ/KL ≈ 2p(1−p)/Δ。

常见误解

误解:「前期探索完就一直贪心 = 常数遗憾」。给定任何固定预算,总有一对臂区分不开;一旦选错,之后每步都线性地亏。

与你的考试

下界真正的价值是它没禁止 log T。实测:三臂下界系数 14.95,T=5×10⁵ 时下界 196、UCB 362(1.85 倍)。T=10⁴ 时实测 129.8 低于下界 137.7 并不矛盾 —— Lai–Robbins 是 T→∞ 的下极限。

29 / 65

知识点 4 · 检验

Lai–Robbins 下界里 Δ_a / KL(R_a‖R_{a*}) 这一项,为什么差距越小反而越大?

知识点 6

5 · 乐观面对不确定:一次乐观的拉动两难都赢

30 / 65
乐观面对不确定整个算法就这一句
下界说 log T 可以争取。这一集的想法只有一句话。
讲解
目标有了:找一个遗憾是对数量级的算法。 想法只有一句话:乐观面对不确定(optimism in the face of uncertainty)。 具体做法也只有一句:不要拉均值最高的臂,要拉上置信界最高的臂。 这一集说清两件事:为什么这一句就够,以及它凭什么比贪心好。
31 / 65
拉均值最高的臂用最好的估计做决定,这才理性
点估计扔掉了「我有多不确定」—— 而那恰恰是该用来决策的信息。
讲解
这个错误模型听起来像纯粹的理性:手上有对每个臂的最好估计,就按最好的估计行动。 毛病在于点估计扔掉了信息。 两个臂,经验均值都是 0.6。第一个拉过 1000 次,第二个拉过 3 次。贪心看这两个臂完全一样。 但它们显然不一样:第一个几乎确定就是 0.6,第二个可能是 0.9 也可能是 0.2。那个不确定性本身是有价值的——它标出了「这里可能藏着更好的东西」。 贪心把它扔了。下一镜看怎么把它捡回来。
32 / 65
at=arg⁡maxa [Q^t(a)+ut(a)]
点估计不确定的半径
规则:拉 估计 + 半径 最大的臂 —— 拉过越少的臂,半径越宽。
讲解
规则写出来只有一行:每一步,拉「经验均值 加上 一个不确定半径」最大的那个臂。 这个和数叫上置信界,记作 U_t(a)。半径 u_t(a) 随这个臂被拉的次数增加而收缩。 回到上一镜那两个臂:均值都是 0.6,但拉过 3 次那个的半径宽得多,于是它的上置信界更高,于是它会被选中。 注意这条规则同时做了两件事,而且没有分成两个模式: 它不是「有时探索、有时利用」。它只有一个判据。探索和利用被合并进了同一个数里——均值高(利用)和没怎么试过(探索)都会把这个数抬高。 这是它比 ε-贪心高明的地方:ε-贪心的探索是外挂的、随机的、恒定的;UCB 的探索是内生的、定向的、会自动收缩的。
33 / 65
✓乐观拉一下两种结局✓它真好不亏✓它不好界会收缩两难都赢
为什么这一句就够:乐观的拉动只有两种结局,两种都可以接受。
讲解
为什么「拉上置信界最高的」这一条规则就够? 因为一次乐观的拉动只有两种结局,而两种都可以接受: 结局一:它真的好。那你拉对了,这一步几乎没有遗憾。 结局二:它其实不好。那你亏了这一步——但你拿到了一个样本,它的均值会被拉下来、半径会收缩,于是这个臂的上置信界下降,以后不会再被反复选中。你为这一步付了钱,买到了信息。 关键在于结局二的代价是有限的:一个臂的上置信界只能被「骗」有限多次,因为每次被拉半径都在缩。错误是自限的。 对比贪心:贪心犯的错不自限——它一旦锁死在次优臂上,就没有任何机制让它回头。这就是上一集那 45% 锁死率的来源。 这个「两难都赢」的论证,就是后面四集那个证明的直觉版本。证明要做的事,是把「两种都可以接受」翻译成一个可以求和的不等式。
34 / 65
✕贪心错误不自限✕固定 ε探索不收缩✓乐观两者都解决不确定性当理由,不当噪声
指名反驳:别拉均值最高的。不确定性是决策依据,不是待消除的噪声。
讲解
指名回去:不该拉均值最高的臂,因为点估计扔掉了不确定性,而不确定性正是该拿来做决策的东西。 把三个做法的毛病对照着看,就知道乐观为什么一次解决了两个: 贪心的毛病是错误不自限——锁死了就回不来。乐观解决它:被高估的臂一定会被拉到,拉到就会被修正。 固定 ε 的毛病是探索不收缩——把握再大也照样乱拉。乐观解决它:半径随拉动次数自动缩,把握大了探索自然就停了。 换一句话说:不确定性是决策的依据,不是一个待消除的噪声。 剩下的四集把这句话变成一个定理。下一集先补上最基础的一块:那个半径到底该多宽——凭什么是这个数,不是别的数。
35 / 65

知识点 5 · 总结

乐观面对不确定:拉「估计 + 半径」最大的臂

核心结论

a_t = argmax_a [ Q̂_t(a) + u_t(a) ]。探索和利用被合并进同一个数 —— 均值高(利用)和没怎么试过(探索)都会把它抬高。

底层机制

两难都赢:乐观的拉动要么真的好(不亏),要么不好(但均值被拉下、半径收缩,错误自限)。这就是后面那个证明的直觉版本。

常见误解

误解:「拉均值最高的才理性」。两个臂均值都 0.6,一个拉过 1000 次一个拉过 3 次 —— 贪心看它们完全一样,而它们显然不一样。

与你的考试

一次解决两个毛病:贪心错误不自限(45% 锁死),固定 ε 探索不收缩。乐观的探索是内生、定向、自动收缩的,不是外挂的随机扰动。

36 / 65

知识点 5 · 检验

「乐观面对不确定」为什么能同时解决贪心和固定 ε-贪心的毛病?

知识点 7

6 · Hoeffding 给出半径 —— 板上那个 u 不是 μ

37 / 65
半径该多宽宽了太保守,窄了会骗自己
规则依赖那个半径。它不能随便定 —— 整个保证都挂在它上面。
讲解
上一集的规则是「拉 Q̂ + u 最大的臂」。这一集回答:u 该多宽。 这不是调参。半径的宽度决定了整个算法的性格: 太宽:所有臂的上置信界都很高,算法一直在试,退化成均匀随机。 太窄:置信区间不再包含真值,最优臂可能被永久低估,算法退化成贪心,会锁死。 所以半径必须由一个保证推出来,而不是试出来。这一集就是那个推导。
38 / 65
±1.96 σ/√n标准的 95% 置信区间
σ 是未知的 —— 它就是我们要估的那个分布的方差。
讲解
第一反应通常是正态近似的置信区间:±1.96 倍标准误。 两个问题。 第一,σ 是未知的。每个臂的奖励分布就是我们要学的东西,方差当然也不知道。用样本方差替代在这里不安全——尤其在只拉过两三次的时候,样本方差本身极不可靠,而那正是半径最要紧的时刻。 第二,1.96 来自中心极限定理,是渐近的。n=3 的时候它没有保证。而这一整块课的主题恰恰是不要渐近保证。 需要的是一个对任意 n都成立、且不需要知道方差的不等式。
39 / 65
P(Q(a)>Q^t(a)+u) ≤ e−2nu2
只要奖励有界不需要知道方差
Hoeffding:只要奖励落在 [0,1],对任意 n 都成立。
讲解
Hoeffding 不等式:如果奖励有界(这里取 [0,1]),那么真均值超出经验均值加 u 的概率,不超过 exp(−2nu²)。 它换掉了正态近似的两个前提: 不需要知道方差——只需要知道取值范围。 不需要 n 大——对每一个 n 都成立。 代价是它比正态区间宽:同样 n=100、δ=0.05,Hoeffding 给 0.2470,正态近似给 0.0980,宽 2.5 倍。 这个代价是该付的:宽出来的部分买的是「不假设分布」和「小 n 也成立」。而且下一集会看到,它还要买第三样东西——所有臂、所有时刻同时成立。 标一处记号陷阱:exp(−2nu²) 是「整个 2nu² 在指数上」,不是 exp(−2n) 乘 u²。差多少?n=100、u=0.247 时,前者是 5.0×10⁻⁶,后者是 8.4×10⁻⁸⁹。字幕把它念成了「exponential minus 2 n u squared」,容易读错。
40 / 65
e−2nu2=δt2 ⟹ ut(a)=log(t2/δ)2nt(a)
先定失败预算,再反解半径
反着用:先说「我允许它以多大概率失败」,再解出半径。
讲解
关键的一步是反着用这个不等式。 不是「给定 u,失败概率是多少」,而是「我允许多大的失败概率,那 u 该是多少」。 设失败预算为 δ/t²(为什么是 t² 而不是常数,下下集专讲),令 exp(−2nu²) = δ/t²,两边取对数解出: u_t(a) = √( log(t²/δ) / (2·n_t(a)) ) 我数值回代验证过:n=100、t=100、δ=0.05 给出 u=0.2470,代回 exp(−2nu²) = 5.0×10⁻⁶,正好等于 δ/t² = 0.05/10000 = 5.0×10⁻⁶。 三处记号陷阱一并标出,这一条式子上全齐了: 转录稿把这个 u 写成了 μ 或 ν。而 μ 在老虎机文献里标准地表示臂的均值(本讲用 Q(a) 表示那个)。把这里每一个 μ 都读成置信半径,绝不能读成均值。 根号盖住整个表达式。转录稿有一处写成「Q̂ + 1/(2N) × log(t²/δ)」,没有根号——量纲和数值都错。 分母是 2n,n 是这个臂被拉的次数;分子里的 t 是总步数。这是两个不同的计数器,最后一集会看到它们方向相反。
41 / 65
Hoeffding正态近似0.24700.0980n=100 时的半径
指名反驳:不用 σ,用有界性。宽 2.5 倍 —— 而那正是保证的价格。
讲解
看什么:左边那根明显更高 —— Hoeffding 的半径是正态近似的 2.5 倍。宽出来的部分不是浪费:它买的是「不知道方差也成立」「n 很小也成立」,以及下一集要用的「所有臂所有时刻同时成立」。 —— 指名回去:不能用 ±1.96σ/√n,因为 σ 未知,而且 1.96 是渐近的。 换成 Hoeffding,只需要奖励有界,对任意 n 都成立。代价是区间更宽:n=100 时 0.2470 对 0.0980,宽 2.5 倍;n=1000 时这个倍数还会涨到 3.0。 这个宽度就是保证的价格。正态近似便宜,但它在 n=3 的时候给不出任何东西,而 n=3 恰恰是你最需要它的时候。 半径有了,规则有了。但还缺两块,都是证明里最有意思的部分: 下一集:遗憾的定义里有 Q(a*),而我们根本不知道哪个是 a\*——怎么把它消掉。 再下一集:一个区间成立是 1−δ,那 m 个臂、T 个时刻同时成立呢?
42 / 65

知识点 6 · 总结

Hoeffding 给出半径:u = √( log(t²/δ) / (2n) )

核心结论

P(Q > Q̂ + u) ≤ exp(−2nu²),只要奖励有界、对任意 n 成立。反着用:令它等于失败预算 δ/t²,解出 u。数值回代已验(n=t=100, δ=.05 → u=0.2470 → 5.0×10⁻⁶ = δ/t²)。

底层机制

不能用 ±1.96σ/√n:σ 未知(它就是要学的东西),且 1.96 来自 CLT 是渐近的,n=3 时没保证。

常见误解

误解:「用标准 95% 置信区间」。Hoeffding 宽 2.5 倍(n=100 时 0.2470 vs 0.0980)—— 那是保证的价格。

与你的考试

记号陷阱三连:① 转录稿的 μ/ν 是半径 u,不是均值(文献里 μ 才是均值,本讲用 Q(a));② 根号盖住整个表达式;③ exp(−2nu²) 整体在指数上(n=100,u=.247 时 5.0×10⁻⁶ vs 8.4×10⁻⁸⁹)。

43 / 65

知识点 6 · 检验

为什么用 Hoeffding 不等式而不是 ±1.96σ/√n 来定置信半径?

知识点 8

7 · 两情形引理:把不可观测的 Q(a*) 从遗憾里消掉

44 / 65
Regret(T)=∑t=1T[Q(a∗)−Q(at)]
这个我们不知道这个也不知道
要证的东西里有两个不可观测的量 —— 而 a* 我们压根不知道是哪个。
讲解
现在有规则,有半径。要证遗憾的界,先看看要证的东西长什么样。 Regret(T) = Σ_t [ Q(a*) − Q(a_t) ] 里面有两个量我们都不知道:Q(a*)(最优臂的真均值)和 Q(a_t)(拉过的臂的真均值)。而 a* 是哪个臂,我们压根不知道——整个算法就是在找它。 这看上去是个死结:要证的量本身不可观测。 这一集是解开它的那一步,而且它是整个证明里最漂亮的一处。
45 / 65
a* 不知道,就没法算要证界,总得先知道要比什么吧
不需要算出 Q(a*)。只需要把它替换成一个已知的上界。
讲解
这个错误模型来自一个合理的直觉:要界定「我离最好差多少」,总得先知道最好是多少。 但证一个上界不需要知道确切值。只需要找到一个已知的量把它替换掉,并且证明替换的方向是安全的——替换之后的式子比原来大。 那么用什么替换 Q(a*)? 答案是一个在事后看来几乎显然的东西:我们每一步实际选中的那个臂的上置信界。这是完全可观测的——它就是算法用来做决定的那个数。 下面两镜证明这个替换是安全的,并把它执行掉。
46 / 65
Ut(at) ≥ Q(a∗)
情形一:a_t 就是 a*情形二:a_t 不是 a*两种都成立
核心引理:只要置信区间没失效,选中的臂的上界压住最优臂的真值。
讲解
核心引理:只要所有置信区间都没失效,那么每一步选中的那个臂的上置信界,不小于最优臂的真均值。 讲座在这里停下来让大家和邻座讨论——因为它虽然只有两行,但方向很容易绕晕。两情形: 情形一,a_t 就是 a*。那么 U_t(a_t) = U_t(a*) ≥ Q(a*)——最后一步用的是「置信区间没失效」,上界压住真值。 情形二,a_t 不是 a*。算法选的是上界最大的那个,所以 U_t(a_t) ≥ U_t(a*);再用一次置信区间没失效,U_t(a*) ≥ Q(a*)。串起来还是 U_t(a_t) ≥ Q(a*)。 讲座原话:「in both cases, this is gonna hold, if the confidence bounds are correct」。 顺带说一句结构上的观察:情形二那条链本身就覆盖了情形一,因为 argmax 的性质对所有臂成立、包括 a* 自己。分两种情形写是为了讲清楚,不是逻辑上必需。 注意这里的前提:「置信区间没失效」。它凭什么成立,是下一集的事。
47 / 65
∑t[Q(a∗)−Q(at)]=∑t[Ut(at)−Q(at)]+∑t[Q(a∗)−Ut(at)]⏟≤0
加一项减一项这一整块 ≤ 0,丢掉
加减同一项,再用引理把后半块整个丢掉 —— a* 就此消失。
讲解
执行替换。手法是讲座说的「我们在 RL 里最喜欢的技巧之一」:加上再减去同一个东西。 往遗憾的每一项里同时加减 U_t(a_t),拆成两块: 第一块:Σ_t [ U_t(a_t) − Q(a_t) ]——全是选中臂的量,可观测。 第二块:Σ_t [ Q(a*) − U_t(a_t) ]——由上一镜的引理,每一项都 ≤ 0。 第二块非正,丢掉它只会让不等式更松,方向是安全的。于是: Regret(T) ≤ Σ_t [ U_t(a_t) − Q(a_t) ] 讲座原话:「So that's nice, right? Because now we don't have any a stars anymore.」 再看一眼右边剩下什么:选中臂的上置信界,减去选中臂的真均值。而按定义 U_t(a_t) = Q̂_t(a_t) + u_t(a_t),于是这个差就是「经验均值的误差 + 半径」——两样都是可以界定的东西。 死结解开了。
48 / 65
✕算出 Q(a*)做不到✓替换成上界做得到✓方向安全只会更松证上界不需要知道确切值
指名反驳:不是算出 a*,是把它替换掉,并证明替换只让界变松。
讲解
指名回去:不需要知道 a* 是哪个臂。 做的事情是替换:用可观测的 U_t(a_t) 顶掉不可观测的 Q(a*),然后证明替换的方向只会让不等式变松。这是证上界时的通用手法,值得记住它的形状——把不知道的东西换成知道的、且往安全的方向换。 整个替换挂在一个前提上:置信区间没失效。而这个前提比看上去难得多,因为我们需要的不是「某一个区间成立」,是所有臂、所有时刻的区间同时成立,而且永远成立。 一个区间以 1−δ 成立;m 个臂 T 个时刻加起来还剩多少? 这是下一集,也是这个证明里最漂亮的一处:答案居然和 T 无关。
49 / 65

知识点 7 · 总结

两情形引理:把不可观测的 Q(a*) 从遗憾里消掉

核心结论

引理 U_t(a_t) ≥ Q(a*)(置信区间不失效时)。情形一 a_t=a*:直接用区间。情形二 a_t≠a*:argmax 给 U_t(a_t) ≥ U_t(a*),再用区间。

底层机制

加减同一项:Regret = Σ[U_t(a_t) − Q(a_t)] + Σ[Q(a*) − U_t(a_t)],第二块由引理 ≤ 0,丢掉只让界更松。讲座:「now we don't have any a stars anymore」。

常见误解

误解:「a* 不知道就没法算」。证上界不需要知道确切值 —— 只要把它替换成已知量,并证明替换方向安全。

与你的考试

结构观察:情形二那条链本身覆盖了情形一(argmax 对所有臂成立,包括 a* 自己),分两情形是为了讲清楚。全部挂在一个前提上:置信区间不失效 —— 那是下一集。

50 / 65

知识点 7 · 检验

证明里是怎么处理不可观测的 Q(a*) 的?

知识点 9

8 · 并集界与 δ/t²:Basel 和 π²/6 < 2 撑起「永远成立」

51 / 65
✓一个区间1−δ✕m 个臂?✕所有时刻?上一集的前提在这里兑现
上一集的引理要求「所有区间同时成立」。这一集算它值多少钱。
讲解
上一集的引理挂在一个前提上:置信区间不失效。 但仔细读它需要的是什么——不是「某一个区间成立」,是: 每一个臂(m 个)、每一个时刻(一直到 T,甚至更远)的置信区间,同时成立。 这是一个比看上去强得多的要求。这一集算它要花多少失败概率,而答案会有点出人意料。
52 / 65
每个 95%,合起来还是 95%都是同一套区间嘛
失败概率是相加的。m 个臂 T 个时刻,固定 δ 会累成 Tmδ。
讲解
这是统计里最常见的一个错误,而且在多重比较的场合造成过很多真实的事故。 失败概率是相加的,不是取最大。这就是并集界:若干个事件至少有一个发生的概率,不超过它们各自概率之和。 如果每个区间固定用 δ 的失败预算:m 个臂、T 个时刻,总失败概率上界是 T·m·δ。 代个数:δ=0.05、m=3、T=10000,得到 1500。一个概率上界是 1500,等于什么都没说。 而且注意它随 T 增长——跑得越久保证越弱,这和我们要的「永远成立」恰好相反。 所以固定预算行不通。下一镜换一个。
53 / 65
第 t 步的失败预算=δt2
越往后要求越严
改法只有一处:让每一步的失败预算随 t 按 1/t² 衰减。
讲解
改法只有一处:不要给每一步同样的失败预算。 第 t 步分配 δ/t²。越往后,对置信区间的要求越严——半径也相应地更宽一点。 这就是上一集那个半径公式里 t² 的来源:令 exp(−2nu²) = δ/t²,解出 u = √(log(t²/δ)/(2n))。那个 t² 不是凑出来的,它就是这个衰减预算。 为什么是 1/t²,不是 1/t,也不是 1/t³? 因为 1/t 的和发散(调和级数),仍然会随 T 增长。而 1/t² 的和收敛。1/t³ 也收敛,但预算收得更快、半径更宽、算法更保守——没必要。 1/t² 是让总和收敛的最省的那一档。下一镜看这个和是多少。
54 / 65
10 项10010⁴10⁶1.54981.63501.64481.6449Σ 1/t² 的部分和
加到无穷也只有 π²/6 = 1.6449。小于 2 —— 总失败 < 2mδ。
讲解
看什么:看柱子越长越慢,到第三根和第四根几乎分不出高低 —— 从一万项加到一百万项,只涨了 0.0001。这条级数收敛,而收敛到的那个数 1.6449 小于 2。柱子停住的那个高度,就是「永远成立」的全部价格。 —— 这个和是 18 世纪的一个著名结果——Basel 问题:Σ_{t=1}^∞ 1/t² = π²/6。 部分和实测: 前 10 项 → 1.549768 前 100 项 → 1.634984 前 10⁴ 项 → 1.644834 前 10⁶ 项 → 1.644933 极限 π²/6 = 1.644934。小于 2。 于是总失败概率:m 个臂,每个臂对所有 t 求和得 δ·π²/6 < 2δ,乘 m 得 < 2mδ。 没有 T。这就是整个构造的回报:区间永远成立(一直到 t = ∞),而代价不随 T 增长。讲座原话:「when you do the sum you get 2m delta」。 这也解释了定理里那个看着有点怪的「以概率至少 1 − 2mδ」——那个 2 就是 π²/6 向上取整来的。 一个 1735 年的级数结果,在这里撑起了一条现代 RL 定理的骨架。
55 / 65
✕固定 δ累成 Tmδ✓δ/t²总和 < 2mδ✓与 T 无关永远成立1 − 2mδ 里的 2 从这来
指名反驳:失败概率相加。让它按 1/t² 衰减,总和才有界。
讲解
指名回去:多个置信区间的失败概率是相加的,不是取最大。固定预算会累成 Tmδ,随 T 增长到毫无意义。 让预算按 1/t² 衰减,总和收敛到 π²/6 < 2,于是「所有臂、所有时刻、永远成立」一共只花 2mδ,与 T 无关。 这一集的板书有三处小问题,一并标出,都不影响结论: 字幕把指数念坏了:「sum over t = 1 to infinity of t to the -t」——应该是 t^(−2)。t^(−t) 的和不是 π²/6。 失败事件的帽子戴错了:板上写成「Q̂(a_t) 大于 U」。失败事件应该是真均值 Q(a) 超过上置信界;经验均值按构造总是在自己的界之下,那个事件的概率是 0。 末尾有一处口误:「the probability that they don't hold is at least 1 − 2mδ」——应该是它们确实成立的概率至少 1 − 2mδ。 还有一处不是错误、但容易误读:课上有学生问这是不是无穷时域的情形。答案是:并集界取到 t = ∞,是为了让区间「永远」成立;但遗憾定理本身仍然是对有限 T 陈述的。两个「时域」不是一回事。 三块拼完了。下一集把它们乘起来。
56 / 65

知识点 8 · 总结

并集界与 δ/t²:Basel 和 π²/6 < 2 撑起「永远成立」

核心结论

失败概率相加。固定 δ → T·m·δ(δ=.05,m=3,T=10⁴ 时是 1500,等于没说)。改成 δ/t² → Σ1/t² = π²/6 = 1.644934 < 2 → 总失败 < 2mδ,与 T 无关。

底层机制

为什么是 1/t²:1/t 的和发散(调和级数),1/t³ 收敛但更保守。1/t² 是让总和收敛的最省的一档。半径里的 t² 就是从这来的。

常见误解

误解:「每个 95%,合起来还是 95%」。这是多重比较里最常见的事故 —— 失败概率是相加的。

与你的考试

三处口误/笔误:① 字幕的 t^(−t) 应为 t^(−2);② 失败事件写成 Q̂ > U,应为真均值 Q > U;③ 「they don't hold is at least 1−2mδ」应为它们确实成立。另:并集界取到 t=∞(区间永远成立)与定理对有限 T 陈述,是两个不同的「时域」。

57 / 65

知识点 8 · 检验

为什么第 t 步的失败预算要取 δ/t² 而不是固定的 δ?

知识点 10

9 · 最终界:n 和 t 是两个方向相反的速率

58 / 65
Regret(T) ≤ ∑t=1T[Ut(at)−Q(at)] ≤ ∑t=1T2ut(at)
只剩下半径的和
三块拼完,遗憾被压成一句话:把所有半径加起来。
讲解
三块都齐了:引理把 a* 消掉,并集界保证区间永远成立,Hoeffding 给出半径。 拼起来:遗憾不超过 Σ_t [ U_t(a_t) − Q(a_t) ],而在好事件下 Q(a_t) ≥ Q̂_t(a_t) − u_t(a_t),于是这个差不超过 2u_t(a_t)。 所以整个问题变成一句话:把每一步选中那个臂的半径加起来,有多大? 这一集算这个和。算的过程里会出现这一讲最容易混的一对符号。
59 / 65
n 和 t 差不多都是时间,都在往上涨
它们在半径里方向相反:n 让半径缩,t 让半径涨。
讲解
这是讲师自己预先点名的一处混淆,因为它会把整个算法的行为搞得完全看不懂。 半径是 u_t(a) = √( log(t²/δ) / (2·n_t(a)) )。里面有两个计数器: n_t(a) = 这个臂被拉过多少次。它在分母,让半径按 1/√n 缩。 t = 一共走了多少步(拉任何臂都算)。它在分子的 log 里,让半径涨。 两个方向相反。而这个对立正是 UCB 会持续探索的原因:你一直不拉某个臂,它的 n 不动,但 t 在涨,于是它的半径慢慢变宽,最终一定会重新被选中。 把 n 和 t 混为一谈,这个机制就完全消失了。算法会看起来像是在做一件没道理的事。
60 / 65
∑n=1N1n ≤ 2N
N=10⁴ 时 198.54 对 200
先把 t 冻住(放大成 T),剩下的就是每个臂自己的 1/√n 求和。
讲解
分两步算这个和。 第一步,把 t 冻住。证明里把每一处的 log(t²/δ) 都放大成 log(T²/δ)——因为 t ≤ T,放大只会让界更松,方向安全。这一步讲座做得很快,课上有学生专门举手问。它把那个随时间涨的因子变成了一个常数提到和号外面。 第二步,按臂拆开求和。剩下的 Σ_t 1/√(n_t(a_t)) 可以重新组织:对每个臂 i,它被拉的那些时刻里,n 依次取 1, 2, 3, …, N_i。于是变成 Σ_i Σ_{n=1}^{N_i} 1/√n。 而 Σ_{n=1}^{N} 1/√n ≤ 2√N(积分论证:1/√x 从 0 到 N 的积分是 2√N)。 实测紧不紧:N=100 时和是 18.5896,2√N = 20,比值 0.93;N=10⁴ 时 198.5446 对 200,比值 0.993。N 越大越紧。
61 / 65
均分偏斜两臂独大224204141104Σ√N_a,T=10⁴ m=5
最坏情形是均分:Σ√N_a 在均分时最大 = √(mT) = 223.61。
讲解
看什么:最左边那根最高 —— 这是反直觉的:把拉动平均分给所有臂时 Σ√N_a 最大,越集中反而越小(独大只有 103.98,不到均分的一半)。因为 √ 是凹的,凹函数的和在自变量均分时取到最大。所以最坏情形就是均分,代进去正好是 √(mT)。 —— 还剩最后一步:Σ_i √(N_i) 在 Σ_i N_i = T 的约束下最大是多少? 实测(T=10⁴、m=5): 均分(每臂 2000)→ 223.61 偏斜 60/10/10/10/10 → 203.95 两臂平分 → 141.42 一臂独大 → 103.98 均分最大。原因是 √ 是凹函数,凹函数之和在自变量均分时取到最大值。而 m·√(T/m) = √(mT)——223.61 正好等于 √(5×10⁴)。 把三步合起来: Regret(T) ≲ √(log(T²/δ)) · Σ_i 2√(N_i) ≤ 2√(mT·log(T²/δ)) 也就是 O(√(mT log(T²/δ))),在概率至少 1 − 2mδ 的事件上成立。 这里必须重复讲师自己的提醒。课上有学生当场指出漏了那个 1/2:「What happened to the 1 over 2?」她的回答是——「Thank you, we have a 2, we can put a 2 here. I'll be a little loose with constants but definitely catch me on them.」 所以:这个式子里的任何数字常数都不要当成验过的。值得记住的是形状:√T、√m、√log。
62 / 65
T=10³10⁴10⁵22.5%8.0%2.8%遗憾占 T 的比例
指名反驳:n 缩 t 涨,方向相反。次线性 = 占比在掉,不是遗憾在掉。
讲解
看什么:三根柱子一路矮下去 —— 但要看清它们量的是比例不是绝对量。遗憾本身从 225 涨到 2794,一直在涨;掉下去的是它占 T 的比例:22.5% → 8.0% → 2.8%。这才是「次线性」的意思。 —— 指名回去:n 和 t 不是一回事。n 让半径缩,t 让半径涨,两个方向相反——而这个对立正是 UCB 永不彻底放弃任何一个臂的原因。 最后把界的含义说准,因为「次线性」经常被读错。 O(√(mT log(T²/δ))),取 m=3、δ=0.05: T=10³ → 遗憾约 225,占 T 的 22.5% T=10⁴ → 约 802,占 8.0% T=10⁵ → 约 2794,占 2.8% 遗憾本身一直在涨(225 → 802 → 2794)。次线性说的是它占 T 的比例在掉——也就是每步的平均损失趋于零。 这正好接回第二集那把尺子:均匀随机的每千步遗憾停在 50.0,ε-贪心停在 5.03,而 UCB 从 12.981 一路掉到 0.724 还在掉。三条曲线,两条是水平线,一条在往下走。 最后一句把它放回全课:这一讲第一次给出了一个有限样本的保证——不是「T 趋于无穷时收敛」,是「跑 T 步,以概率 1−2mδ,你一共亏不超过这么多」。这就是把判据从「能不能学到」换成「要多少数据」之后,得到的那种答案。
63 / 65

知识点 9 · 总结

最终界 O(√(mT log(T²/δ))):n 和 t 方向相反

核心结论

n_t(a) 在分母让半径按 1/√n 缩;t 在 log 里让半径涨。所以不拉的臂半径会慢慢变宽,一定会被重新选中 —— 混淆二者这个机制就消失了。

底层机制

三步:① 把 log(t²/δ) 放大成 log(T²/δ)(t≤T,安全);② Σ_{n≤N} 1/√n ≤ 2√N(N=10⁴ 时 198.54 vs 200);③ Σ√N_a 在均分时最大 = √(mT)(223.61 vs 独大 103.98,因 √ 是凹的)。

常见误解

误解:「n 和 t 差不多」。也别把「次线性」读成遗憾在减少 —— 遗憾一直在涨(225→802→2794),掉的是占比(22.5%→8.0%→2.8%)。

与你的考试

常数没被追踪:学生当场补了漏掉的 1/2,讲师回「I'll be a little loose with constants but definitely catch me on them」。记形状不记常数:√T、√m、√log。

64 / 65

知识点 9 · 检验

UCB 的半径 √(log(t²/δ)/(2n)) 里,n 和 t 各起什么作用?

知识点 11

完

65 / 65
讲解
回头看这九集,承重的是四件事。 第一,判据决定了你会造出什么算法。把判据从「收敛」换成「遗憾」,贪心和固定 ε-贪心立刻出局——它们都收敛,但都是线性遗憾。实测:ε=0.1 时每千步遗憾停在 5.034,正是理论值 ε/m·ΣΔ = 5.00,不再下降;而 UCB 同期已经降到 0.724 还在降。 第二,乐观是一个可以证明的策略,不是一句口号。拉一个上置信界最高的臂,要么它真的好(不亏),要么它不好(但界会收缩,你学到了)。两难都赢——这就是 optimism in the face of uncertainty 的全部内容。 第三,那个 δ/t² 是整个证明里最漂亮的一笔。固定的失败预算在 T 步后累积成 Tmδ,毫无意义;让预算随 t 按 1/t² 衰减,总和收敛到 π²/6 = 1.6449 < 2,于是「所有置信区间同时且永远成立」这件事只花掉 2mδ——与 T 无关。一个 18 世纪的级数结果,在这里撑起了一条现代 RL 定理的骨架。 第四,n 和 t 是两个方向相反的速率。n 是这个臂被拉的次数,它让半径缩;t 是总步数,它让半径涨。整个 UCB 的行为就是这两个速率在拉锯。把它们混为一谈,这个算法就完全看不懂了。 最后把界的含义说准:O(√(mT log(T²/δ))) 本身是在涨的。次线性的意思是它占 T 的比例在掉——T=10³ 时占 22.5%,T=10⁴ 时 8.0%,T=10⁵ 时 2.8%。 下一讲继续这条线:概率匹配与 Thompson 采样,以及怎么把这一套从单状态的老虎机搬回真正的 MDP。