多臂赌博机算法(Multi-armed Bandits)
文章目录
参考博客: https://zhuanlan.zhihu.com/p/397425597
1. 多臂赌博机
1.1 问题定义
赌博机有k个摇臂,玩家投一个游戏币以后可以按下任意一个摇臂,每个摇臂以一定的概率吐出硬币作为回报,且每个摇臂的中奖概率不同。
玩家的目标是通过一定的策略获得最大化的累积回报。
1.2 相关概念
-
A t A_t At—— 在时间步 t时选择的动作;
-
R t R_t Rt—— 在时间步 t 时获得的回报;
-
q ∗ ( a ) q^*(a) q∗(a)—— 动作a的期望回报(真实值);
-
Q t ( a ) Q_t(a) Qt(a) —— 动作 a 在 t时刻估计值(平均回报值);
-
贪心动作 —— 在 t时选择估计值最大的动作:
A t = arg m a x a Q t ( a ) A_t=\arg\ \underset{a}{max}Q_t(a) At=arg amaxQt(a)
多臂赌博机本质上是一类简化的强化学习问题,这类问题具有非关联的状态(每次只从一种情况输或赢中学习),而且只研究可评估的反馈。每次行动的结果只和当前的状态关联而不受历史行动的结果影响(每次拉摇臂的回报只和老虎机设置的概率相关,之前输赢的结果不会影响本次行动)。我们可以定义这种问题是具有单一状态的马尔科夫决策过程。
2. 问题求解常见方法
-
全能全知(Omniscient)
即已经知道回报概率,那最直接的策略就是一直玩回报概率最大的这一台。 -
随机算法(Random)
随机策略是最直接的一种方法,像一个无知的赌徒一样每一轮随机地去拉一个摇臂。 -
贪心算法(Greedy)
先把所有的摇臂都拉一次,然后选择回报最好的老虎机一直玩下去。这种策略很明显不鼓励进行探索,而且很容易被每个摇臂第一遍的回报结果误导 -
其他优化算法
从前面可以知道,只探索或者只开发都是不够明智的行为,要权衡开发与探索,需要另寻新的方法,例如ε−贪心算法(ε-greedy)、最大置信区间上界算法(Upper Confidence Bound)Softmax-贪心算法(Softmax-greedy)、ε−下降算法(ε-decreasing)、汤普森采样(Thompson sampling)
3. ε−贪心算法(ε-greedy)
3.1 算法流程
其表示在智能体做决策时,有一很小的正数 ε(<1) 的概率非贪心地随机选择一个动作去探索(包括所有动作),剩下 1 − ε 的概率选择一个贪心策略。
具体操作就是,每次玩的时候就抽一个0到1的随机数,如果这个数大于 ε ,则拉你认为中奖概率(预估中奖概率)最大的那个拉杆。如果小于 ε ,则随机再选择一个拉杆(也包括中奖概率最大的那个拉杆),得到收益后,更新这个拉杆的预估中奖概率,以便于下次选择做参考。
∣ A ∣ |A| ∣A∣代表全部可选的动作, ε ∣ A ∣ \frac{ε}{|A|} ∣A∣ε代表未知动作a被选中的概率,贪心动作被选中的概率为 A t = 1 − ε + ε ∣ A ∣ A_t=1-ε+\frac{ε}{|A|} At=1−ε+∣A∣ε
3.2 伪代码
a r g m a x arg max argmax选择最优的 Q ( i ) Q(i) Q(i), Q ( i ) Q(i) Q(i)为摇臂i的平均回报, c o u t ( i ) cout(i) cout(i)为摇臂i的选中次数。
3.3 缺点及优化点
缺点:
收敛较慢;不适用于非平稳的分布。
优化的方法:
① Ɛ-下降算法(Ɛ-decreasing)—— 让 ε 随着时间减小;
② 乐观初始估计(Optimistic Initialization) —— 初始值
Q
0
(
a
)
Q_0(a)
Q0(a)设置大一点,鼓励探索;
③ 在 ε 随机选择时,可以更有目的性地选择,而不是盲目选择,一个简单的办法就是尽量选择之前选择少的摇臂,因为它们潜在奖励可能更高。改进这一点,可以用到新的算法——最大置信区间上界算法.
4. 最大置信区间上界算法(Upper Confidence Bound,UCB)
4.1 概念
ε-greedy 贪心动作选择面临着非贪心动作的选取,但它的选取不是根据动作的潜力值(成为最有动作的潜力)来,而是等概率选择所有动作。
而UCB这种偏向于对不确定性大的动作进行试探的算法,增加采样样本少(被执行次数低的动作)被选中的概率.
UCB则是采用置信水平来实现对开发与探索之间的平衡。
不确定行为优先
如上图,横轴为各动作的奖励值,纵轴为概率。若选择绿色的 a 3 a_3 a3可以获得最大回报,但不确定性为优先会选择蓝色的 a 1 a_1 a1动作。 a 1 a_1 a1的动作-奖励分布曲线置信区间大,分布跨度大,方差大,说明对应的采样样本数量较少,不确定较大。
4.2 算法思路
UCB值包括两项, Q t ( a ) + U t ( a ) Q_t(a)+U_t(a) Qt(a)+Ut(a)
Q t ( a ) Q_t(a) Qt(a)为当前动作-回报的实际分布,也就是实际的Q函数(对状态和动作均进行评估,在时间t时采取动作a后,得到的期望累积奖励)
U
t
(
a
)
U_t(a)
Ut(a)为对该动作不确定的一种度量。
A
t
=
arg
m
a
x
a
[
Q
t
(
a
)
+
U
t
(
a
)
]
=
arg
m
a
x
a
[
Q
t
(
a
)
+
c
l
n
t
N
t
(
a
)
]
A_t=\arg\ \underset{a}{max}[Q_t(a)+U_t(a)]\\=\arg\ \underset{a}{max}[Q_t(a)+c\sqrt{\frac{lnt}{N_t(a)}}]
At=arg amax[Qt(a)+Ut(a)]=arg amax[Qt(a)+cNt(a)lnt]
其中,c(>0)是对探索力度的控制系数,一个小正数,决定了置信指数;
N
t
(
a
)
N_t(a)
Nt(a)是动作a在时刻t时被选择的次数,可见当该值增大时,
U
t
(
a
)
U_t(a)
Ut(a)会减小,而如果没选择动作a,随着t增大,
U
t
(
a
)
U_t(a)
Ut(a)会增大。