Gittins index for MAB Problem

Paper Reading:
On the Gittins Index for Multiarmed bandits
– By Richard Weber University of Cambridge

本文是 Gittins index 最简单也最 elegant 的proof, 这篇博客我们来看看Weber是怎么proof Gittins index的.

Multiarmed Bandit (MAB) Problem

MAB 问题我们就不在赘述了, 实际上就是一个 n n n dimentional MDP, 即总共有 n n n 个 arms/bandits, 每次只能拉一个. 被拉的arm的states按照一个已知的Markov Chain (MC) 来演化, 没被拉的arms全都freeze. 每次拉都会得到一个immediate reward.
States of the bandits: x = { x 1 ( t ) , x 2 ( t ) , . . . , x n ( t ) } x=\left\{x_1(t), x_2(t), ..., x_n(t)\right\} x={x1(t),x2(t),...,xn(t)}
Actions: a 1 a_1 a1, a 2 a_2 a2, …, a n a_n an ( a i a_i ai 对应"拉第 i i i个bandit")
目标是找到最优policy π \pi π 最大化 expected total-discounted reward:
V π ( x ) = E π [ ∑ t = 0 ∞ β t R j t ( x j t ( t ) ) ∣ x ( 0 ) = x ] V_\pi(x)=E_\pi\left[ \sum_{t=0}^{\infty} \beta^t R_{j_t}\left( x_{j_t} (t) \right) \left| \right.x(0)=x \right] Vπ(x)=Eπ[t=0βtRjt(xjt(t))x(0)=x]
π ⋆ = arg max ⁡ π V π ( x ) \pi^\star=\argmax_{\pi}V_\pi(x) π=πargmaxVπ(x)
简言之, V π ( x ) V_\pi(x) Vπ(x)是从任一状态 x x x 开始, 遵循策略 π \pi π走出的所有轨迹的平均return (这里定义为accumulated discounted future rewards), 最优policy π ⋆ \pi^\star π是所有policy中最大化平均return 的那个.

Gittins Index

上述MAB可以用传统 discounted-cost MDP theory来解 (e.g., value iteration), 但是算法复杂度随着M的增加而指数增加, 也就是 curse of dimensionality. 另一方面, Gittins index是一种线性复杂度的解法: 每次选择bandits时, 可以对每个bandits计算一个Gittins index, 然后选index最大的那个user即可. More formally, 在 t t t 时刻选取bandit j j j 是最优的 iff
G j ( x j ( t ) ) = max ⁡ 1 ≤ i ≤ n G i ( x i ( t ) ) G_j\left(x_j(t) \right)=\max_{1\leq i\leq n}G_i\left(x_i(t) \right) Gj(xj(t))=1inmaxGi(xi(t))
G i G_i Gi 即 Gittins index. 上次最重要的地方在于, 计算 G i G_i Gi仅仅需要bandit i i i 的相关信息而不需要其他bandits的信息, 我们可以单独对每个bandits进行计算. 从而, 原来的 n n n dimensional problem 就变成了 n n n 个 one dimensional problem. Gittin prove 的一个重要结论是

Theorem 1. The optimal policy is to play at each epoch a bandit of greatest Gittins index.

但是最早70年代的paper中, 证明使用的interchange argument太过晦涩. 在之后的几十年中, 人们在不断的尝试更简单的证明. 本文的证明是大多数人认为最简洁最 elegant 的证明.

Proof

我们先考虑原问题的decoupled problem,即,我们只考虑一个bandit,玩家可以选择 play or rest (仅有两个actions). 显然,对于这样一个bandit,玩家会一直玩下去,因为每次玩都能得到 reward (假设reward全是正的)。 所以我们想人为的引入一个sampling cost,即每一次玩我们都要付出一定的代价。这个sampling cost其实就相当于对这个bandit的一个评估,直觉上可以理解为,为了玩这个bandit,你愿意付出多大的代价。最终overall的idea就是给每一个bandit赋予一个sampling cost,谁的sampling cost最大表明玩家为了玩谁愿意付出更大的代价,那也就是optimal action。下面我们详细说,对于每一个bandit,这个sampling cost是怎么得来的。

首先,玩家每次玩这个bandit都要付出一个固定的代价 c c c, 我们称之为 prevailing charge。而且注意,每一次玩这个bandit, prevailing charge c c c 都是固定的。 如果这个代价无穷小,那么玩家可能会选择一直玩下去,但是随着我们慢慢的增大 c c c, 玩家可能在玩了一些steps之后就不再玩下去了,因为 c c c相比他能获得的total return来说太高了,继续玩不是很划算。

所以应该怎么设置prevailing charge尼?让我们首先来定义一下fair charge γ ( x j ) \gamma(x_j) γ(xj)。fair charge与prevailing charge不同,prevailing charge c c c 是fixed的每次玩都要付出的代价,也就是state-independent的。但是fair charge γ ( x j ) \gamma(x_j) γ(xj)是state-dependent的,它描述的是,在某个state x j x_j xj,到底把 c c c增大到什么程度,玩家就不愿意继续玩下去了。

考虑从零时刻开始,玩家在任一状态 x j ( 0 ) = x j x_j(0)=x_j xj(0)=xj。玩家要不要play取决于 c c c和他所能获得到total return的相对大小。我们先把玩家所能获得的最大total return表示出来,即
sup ⁡ π E π [ ∑ t = 0 ∞ β t R j ( x j ( t ) ) ∣ x j ( 0 ) = x j ] \sup_\pi E_\pi\left[ \sum_{t=0}^{\infty} \beta^t R_{j}\left( x_{j} (t) \right) \left| \right.x_j(0)=x_j \right] πsupEπ[t=0βtRj(xj(t))xj(0)=xj]
即,玩家如果smart enough,他会选用一个最好的policy来achieve这个total return的最大值。而且由于这里没有prevailing charge, 玩家会一直玩下去直到无穷。现在我们在每一步 play 中引入 c c c 来balance这个total return,看看到底玩家愿意和不愿意继续玩这个游戏的临界点在哪里。
γ ( x j ) = sup ⁡ { γ : sup ⁡ π E π [ ∑ t = 0 τ − 1 β t [ R j ( x j ( t ) ) − c ] ∣ x j ( 0 ) = x j ] ≥ 0 } \gamma(x_j) = \sup\left\{ \gamma:\sup_\pi E_\pi\left[ \sum_{t=0}^{\tau-1} \beta^t \left[R_{j}\left( x_{j} (t) \right) -c\right] \left| \right.x_j(0)=x_j \right]\geq 0 \right\} γ(xj)=sup{γ:πsupEπ[t=0τ1βt[Rj(xj(t))c]xj(0)=xj]0}
注意理解这个公式是非常重要的,它定义了fair charge γ ( x j ) \gamma(x_j) γ(xj). 我们慢一点说。
首先看内部的sup,
sup ⁡ π E π [ ∑ t = 0 τ − 1 β t [ R j ( x j ( t ) ) − c ] ∣ x j ( 0 ) = x j ] \sup_\pi E_\pi\left[ \sum_{t=0}^{\tau-1} \beta^t \left[R_{j}\left( x_{j} (t) \right) -c\right] \left| \right.x_j(0)=x_j \right] πsupEπ[t=0τ1βt[Rj(xj(t))c]xj(0)=xj]
内部sup是说玩家非常聪明,对于一个给定的 c c c,他找到了最好的policy使得连续玩到某一时刻 τ \tau τ 停止时,能得到最大的profit (= return - all costs). 注意对于每个policy, optimal τ \tau τ 都是不一样的。我们最终不管 τ \tau τ,就是看所有policy中,哪个能给到最大profit。
再看外部sup,
γ ( x j ) = sup ⁡ { γ : sup ⁡ π E π [ ∑ t = 0 τ − 1 β t [ R j ( x j ( t ) ) − c ] ∣ x j ( 0 ) = x j ] ≥ 0 } \gamma(x_j) = \sup\left\{ \gamma:\sup_\pi E_\pi\left[ \sum_{t=0}^{\tau-1} \beta^t \left[R_{j}\left( x_{j} (t) \right) -c\right] \left| \right.x_j(0)=x_j \right]\geq 0 \right\} γ(xj)=sup{γ:πsupEπ[t=0τ1βt[Rj(xj(t))c]xj(0)=xj]0}
外部sup是说,如果我慢慢的增长 c c c, 显然内部sup会对每个 c c c 找到最大的profit. c c c 很小时,profit会很大,但是随着 c c c慢慢增长,我们的能获得的最大profit也会越来越小。当最终这个最大profit是0的时候,此时也就是玩家不管怎么玩最多只能达到零profit的时候。我们把此时的 c c c定义为 fair charge,也就是说最大的 c c c使得最聪明的玩家不亏也不赚。

经过一段冗长的叙述之后,我想表达的很简单:你去玩一个赌博机,赌场每次玩收你 c c c。 赌场想最大化 c c c, 但是你也不蠢,你每次都能找到最优policy来measure赌场收你的 c c c值不值得你继续玩下去。当赌博机在状态 x j x_j xj时,你问自己,此时我最多让赌场收我多少钱我才不亏尼?如果你是最聪明的那个,那么你会根据上式得出,当赌场收你 γ ( x j ) \gamma(x_j) γ(xj) 时是一个节点。此时,你收到的profit应该是0. c > γ ( x j ) c>\gamma(x_j) c>γ(xj) 你怎么玩都是亏, c < γ ( x j ) c<\gamma(x_j) c<γ(xj) 你总能玩的赚。所以赌场所能设置的最大 c c c, 也就是你玩这个bandit所愿意付出的最多cost per play, 就是 fair charge γ ( x j ) \gamma(x_j) γ(xj)

γ ( x j ) = sup ⁡ { γ : sup ⁡ π E π [ ∑ t = 0 τ − 1 β t [ R j ( x j ( t ) ) − c ] ∣ x j ( 0 ) = x j ] = 0 } \gamma(x_j) = \sup\left\{ \gamma:\sup_\pi E_\pi\left[ \sum_{t=0}^{\tau-1} \beta^t \left[R_{j}\left( x_{j} (t) \right) -c \right] \left| \right.x_j(0)=x_j \right] = 0 \right\} γ(xj)=sup{γ:πsupEπ[t=0τ1βt[Rj(xj(t))c]xj(0)=xj]=0}

此时,游戏对双方都是公平的。

好,如果把 prevailing charge 和 fair charge 的概念理解清楚了,我们就可以分析赌场和玩家之间的博弈了。

还是只考虑一个bandit, 让我们想一想赌场会怎么定价prevailing charge c c c.

零时刻假设bandit的状态是 x j ( 0 ) x_j(0) xj(0), 那么玩家可以先把自己心中预期的 fair charge γ ( x j ( 0 ) ) \gamma(x_j(0)) γ(xj(0)) 算出来. 那这时, 赌场为了让玩家play同时又最大化自己受益, 会把自己的prevailing charge c c c设置为 γ ( x j ( 0 ) ) \gamma(x_j(0)) γ(xj(0)), 这时候游戏是一个fair game, 玩家可以玩下去(反正自己知道最优策略,不会亏钱).
c 0 = γ ( x j ( 0 ) ) c_0 =\gamma(x_j(0)) c0=γ(xj(0))

然后来到 t = 1 t=1 t=1. 此时bandit的状态转移到 x j ( 1 ) x_j(1) xj(1), 玩家又可以算出自己心中的预期 fair charge γ ( x j ( 1 ) ) \gamma(x_j(1)) γ(xj(1)). 这个fair charge如果跟上一时刻相等,那就继续玩下去就好了,但是如果比上一时刻的大或者小尼?

  1. 先来考虑 γ ( x j ( 1 ) ) > γ ( x j ( 0 ) ) \gamma(x_j(1))>\gamma(x_j(0)) γ(xj(1))>γ(xj(0)), 更大的fair charge意味着玩家来到了一个更好的状态, 从这个状态开始玩家愿意付出更高的代价去玩游戏. 但是这同时意味着玩家也付出了相当的代价(negative profit)从 x j ( 0 ) x_j(0) xj(0) 来到 x j ( 1 ) x_j(1) xj(1). 因为在零时刻的planning已经决定了 γ ( x j ( 0 ) ) \gamma(x_j(0)) γ(xj(0))是我从 t = 0 t=0 t=0玩到 t = τ t=\tau t=τ愿意付出的最大per-play cost. 所以 γ ( x j ( 1 ) ) > γ ( x j ( 0 ) ) \gamma(x_j(1))>\gamma(x_j(0)) γ(xj(1))>γ(xj(0))其实对应着profit先negative后positive的情况.
    那么在 t = 1 t=1 t=1时刻应该怎么赌场定价尼?根据我们之前的规则prevailing charge c 0 c_0 c0是fixed,因此它应该不变玩家在 t = 1 t=1 t=1时候如果play仍然会被收 c 0 c_0 c0的cost. 可能有些同学会想, t = 1 t=1 t=1时刻这个状态更promising啊,为什么赌场不提高 c c c多赚点尼? 答案是不能, 因为在零时刻planning的前提是赌场约好了不会涨价始终是 c 0 c_0 c0, 如果你在 t = 1 t=1 t=1涨价, t = 0 t=0 t=0时玩家可能就不愿意玩这个游戏了. 简而言之就是, 玩家从零时刻到一时刻已经亏了一些了,他想的是你则时候不涨价他才能挣点回来.

  2. 再来考虑 γ ( x j ( 1 ) ) < γ ( x j ( 0 ) ) \gamma(x_j(1))<\gamma(x_j(0)) γ(xj(1))<γ(xj(0)), 如果这种情况发生,说明玩家来到了一个更坏的状态.
    从这个状态开始, 如果 c 0 c_0 c0保持不变的话, 不管玩家怎么玩必定亏钱因为 fair charge γ ( x j ( 1 ) ) < γ ( x j ( 0 ) ) = c 0 \gamma(x_j(1))<\gamma(x_j(0)) = c_0 γ(xj(1))<γ(xj(0))=c0. 所以此时玩家必须停止玩游戏! 而且从 x j ( 0 ) x_j(0) xj(0) 来到 x j ( 1 ) x_j(1) xj(1)玩家得到的profit必定是0: 如果是negative profit, 那再玩下去也永远是negative profit, 那玩家应该早于 t = 1 t=1 t=1就不玩游戏了 (或者说 t = 0 t=0 t=0时的fair charge应该比 c 0 c_0 c0低才对, 以保证profit=0). 如果是positive profit, 那玩家在此终结游戏就会得到positive profit,那为何在 t = 0 t=0 t=0时不设一个更高的fair charge? 因此, profit必定为0. 综上, γ ( x j ( 1 ) ) < γ ( x j ( 0 ) ) \gamma(x_j(1))<\gamma(x_j(0)) γ(xj(1))<γ(xj(0))的情况其实就意味着 x j ( 1 ) x_j(1) xj(1) 是一个stopping state. 在这个状态玩家必须停止玩游戏, 这也是在 t = 0 t=0 t=0时玩家的planning终止的地方,即 τ = 1 \tau=1 τ=1.
    而 如果赌场希望玩家继续玩下去,唯一的办法就是降低prevailing charge c = γ ( x j ( 1 ) ) c=\gamma(x_j(1)) c=γ(xj(1)), 这样一来,以后的游戏又是一个公平的游戏玩家又可以继续玩下去了.

Overall, 可以看到, prevailing charge (赌场对游戏的定价) 就是评估玩家愿意付出多大代价玩bandit的一个标尺. 这个prevailing charge其实也就是Gittins index.

你可能感兴趣的:(paper,reading)