对于 k 臂老虎机,动作集合为 A={1,2,…,k},在每个时刻 t,智能体选择一个动作 At ,表示时刻 t 实际拉动的 arm。随后环境返回 t 时刻的奖励 Rt∈R 。
自然地对于任意固定动作 a∈A,有 Q(a)=E(Rt∣At=a) 是对于每个arm a的真实期望奖励,因此多臂老虎机的目标即为最大化 T 时间段内累计期望奖励 maxEπ∑t=1TRt
Q^t(a)=Nt−1(a)i=1∑tI(Ai=a)Ri
- Q^t(a):到时刻 t 为止,我们对动作(arm)a 的奖励均值估计。
- Nt(a)=∑i=1tI(Ai=a):到时刻 t 为止,动作 a 一共被选中了多少次。
- 直观地,Q^t(a)=arm a 被选中的次数arm a 历史上得到的奖励总和
如果 t 时刻选择了a
Q^t+1(a)={Nt(a)+1}−1(i=1∑tI(Ai=a)Ri+Rt+1)=Nt(a)+1Nt(a){Nt−1(a)i=1∑tI(Ai=a)Ri}+Nt(a)+1Rt+1=Nt(a)+1Nt(a)Q^t(a)+Nt(a)+1Rt+1
非平稳环境下,考虑一个给定的步长参数
探索(exploration)是指尝试拉动更多可能的拉杆,这根拉杆不一定会获得最大的奖励,但这种方案能够摸清楚所有拉杆的获奖情况。
例如,对于一个 10 臂老虎机,我们要把所有的拉杆都拉动一下才知道哪根拉杆可能获得最大的奖励。
利用(exploitation)是指拉动已知期望奖励最大的那根拉杆,由于已知的信息仅仅来自有限次的交互观测,所以当前的最优拉杆不一定是全局最优的。
例如,对于一个 10 臂老虎机,我们只拉动过其中 3 根拉杆,接下来就一直拉动这 3 根拉杆中期望奖励最大的那根拉杆,但很有可能期望奖励最大的拉杆在剩下的 7 根当中,即使我们对 10 根拉杆各自都尝试了 20 次,发现 5 号拉杆的经验期望奖励是最高的,但仍然存在着微小的概率—另一根 6 号拉杆的真实期望奖励是比 5 号拉杆更高的。
于是在多臂老虎机问题中,设计策略时就需要平衡探索和利用的次数,不可能单独只探索或只利用,最终目的是使得累积奖励最大化。目前已有经典的算法包括ε−贪婪算法、上置信界算法和汤普森采样算法等。
每次以概率 1−ε 选择 greedy policy:
At=argamaxQ^t−1(a)
以概率 ε 随机选择一个arm a
输入: 探索概率 ε∈(0,1),总轮数 T,臂数 k
初始化:
对每个 a∈{1,2,…,k},令
Q^(a)←0,N(a)←0
令 t←0
循环执行直到 t=T:
-
t←t+1
-
按 ε-贪心策略选择动作:
-
以概率 1−ε,选择当前估计奖励最大的臂
a∗←argamaxQ^(a)
-
以概率 ε,从 {1,2,…,k} 中随机选择一根臂
-
拉动臂 a∗,获得奖励 R
-
更新该臂的选择次数:
N(a∗)←N(a∗)+1
-
更新该臂的估计期望奖励:
Q^(a∗)←N(a∗)N(a∗)−1Q^t(a)+N(a∗)1R
探索准则(乐观准则):看某个 arm 在乐观估计下最多可能有多好,因此每次选
argamax[利用Q^t(a)+探索Ut(a)]
- Ut(a):对arm a 的不确定性补偿项 / 置信上界 bonus
Ut(a)=Nt(a)clogt
试得越多,bonus 衰减越快;试得越少,bonus 越大
Hoeffding’s inequality
P{E[X]≥xˉn+u}≤e−2nu2
因此有
Pr(Q(a)≤Q^t(a)+Ut(a))≥1−t−2c.
上界是随着t→∞,1−t−2c→1.
输入: 常数 (c>0),总轮数 T,臂数 k
初始化:
对每个 a∈{1,2,…,k},令
Q^(a)←0,N(a)←0
令 t←0
循环执行直到 t=T:
-
t←t+1
-
按 UCB 策略选择动作:
a∗←argamax[Q^(a)+N(a)clogt]
-
拉动臂 a∗,获得奖励 R
-
更新该臂的选择次数:
[
N(a^) \leftarrow N(a^)+1
]
-
更新该臂的估计期望奖励:
[
\hat Q(a^) \leftarrow \hat Q(a^) + \frac{1}{N(a^)}\bigl(R-\hat Q(a^)\bigr)
]
对每个 arm 的真实奖励参数并不确定,因此先维护这个参数的后验分布;每一轮从后验分布中采样一个参数值,再选择采样值最大的 arm。
贝叶斯学派一脉相承的思想:先验分布的存在,这里是给奖励分布先建模后加先验分布
以Bernoulli Bandit为例:假设 arm a 的奖励分布是均值为 θ(a) 的伯努利分布,即
Rt∣At=a∼Ber(θa)
给成功率 θ(a) 设 Beta 先验分布:
θa∼Beta(α,β)
- Beta 分布适合做 Bernoulli 参数的先验,而且与 Bernoulli 分布是共轭分布,因此后验更新很方便。
贝叶斯法则更新后验:
θ(a)∣D∼Beta(Sa+α,Fa+β)
-
Sa:arm a 的成功次数
-
Fa:arm a 的失败次数
-
后验 = 先验信念 + 真实观测证据
对于 Bernoulli 分布,其期望为参数本身,因此动作价值为
E(R∣A=a,θt)=θt(a)
输入: 超参数 α,β>0,总轮数 T
初始化: 对每个 a∈{1,2,…,k},令
Sa←0,Fa←0
令 t←0
循环执行直到 t=T:
-
t←t+1
-
对每个 arm a,从其后验中采样(探索)
θa∼Beta(α+Sa,β+Fa)
-
选择后验采样值最大的臂(利用)
a∗=argamaxθa
-
拉动臂 a∗,获得奖励 R
-
观察结果后更新 Sa,Fa
- R=1,Sa←Sa+1
- R=0,Fa←Fa+1
St: context; At: action; Rt: reward
At∣St:根据St做推荐At
目标依然是 maxE∑t=0TRt