二. 多臂赌博机
2.1 一个k臂赌博机问题
重复的在K个动作中进行选择,每一次选择后都会得到一定数值的收益,目标是在一段时间内最大化总收益的期望(隐含背景:每个动作的平均收益不同)。
K个动作中每一个被选择时有一个期望收益或平均收益,称为该动作的“价值”。
- 如果知道每个动作的价值,每次选择直接选价值最高的动作;
- 如果不知道每个动作的价值,就对每个动作的价值进行估计;
每次选择估计价值最高的动作,称为贪心的动作。
- 每次选择贪心的的动作,称为开发;
- 如果有一定概率选择非贪心动作,称为试探( ϵ − 贪 心 \epsilon-贪心 ϵ−贪心);
一种对动作价值进行估计的方法是:计算实际收益的平均值。
增量式实现
假设
Q
n
Q_n
Qn为被选择
n
−
1
n-1
n−1次后,某个动作的价值的估计,则有:
Q
n
+
1
=
Q
n
+
1
n
[
R
n
−
Q
n
]
Q_{n+1}=Q_n+\frac{1}{n}[R_n-Q_n]
Qn+1=Qn+n1[Rn−Qn]
一般形式为:
新
估
计
值
=
旧
估
计
值
+
步
长
∗
[
目
标
−
旧
估
计
值
]
新估计值 = 旧估计值 + 步长 * [目标 - 旧估计值]
新估计值=旧估计值+步长∗[目标−旧估计值]
跟踪一个非平稳问题
取平均值方法对于动作价值平稳的情况适用,但对于收益的概率分布随时间变化的问题不再适用。解决办法是相比于过去很久的收益,给近期收益更高的权重,比如固定步长。
Q
n
+
1
=
Q
n
+
α
[
R
n
−
Q
n
]
=
(
1
−
α
)
n
Q
1
+
∑
i
=
1
n
α
(
1
−
α
)
n
−
i
R
i
Q_{n+1}=Q_n+\alpha [R_n-Q_n]\\ =(1-\alpha)^nQ_1+\sum_{i=1}^n\alpha(1-\alpha)^{n-i}R_i
Qn+1=Qn+α[Rn−Qn]=(1−α)nQ1+i=1∑nα(1−α)n−iRi
其中,
α
∈
(
0
,
1
]
\alpha\in(0,1]
α∈(0,1]。
乐观初始值
初始动作价值提供了一种简单的试探方式,比如将初始动作价值设置较高,实际动作价值较低,就会对每一个动作进行尝试,进行大量试探。但是该方法只对平稳问题有效,不太适合非平稳问题。
基于置信度上界(UCB)的动作选择
A
t
=
arg max
a
[
Q
t
(
a
)
+
c
ln
t
N
t
(
a
)
]
A_t=\argmax_a[Q_t(a)+c\sqrt{\frac{\ln t}{N_t(a)}}]
At=aargmax[Qt(a)+cNt(a)lnt]
其中,
ln
t
\ln t
lnt表示
t
t
t的自然对数,
N
t
(
a
)
N_t(a)
Nt(a)表示时刻
t
t
t之前动作
a
a
a被选择的次数,
c
c
c是大于0的数。
随着时间的流逝,具有较低价值估计的动作或者已经被选择了更多次的动作被选择的频率较低。
- 处理非平稳问题,需要更复杂的方法;
- 另一个难题是处理大的状态空间,尤其是函数近似问题;
梯度赌博机算法
针对每个动作学习一个偏好函数
H
t
(
a
)
H_t(a)
Ht(a),偏好函数越大,动作就越频繁地被选择。
H
t
+
1
(
a
T
)
=
H
t
(
A
t
)
+
α
(
R
t
−
R
ˉ
t
)
(
1
−
π
t
(
A
t
)
)
,
H
t
+
1
(
a
)
=
H
t
(
a
)
−
α
(
R
t
−
R
ˉ
t
)
π
t
(
a
)
,
所
有
a
≠
A
t
H_{t+1}(a_T)=H_t(A_t)+\alpha(R_t-\bar R_t)(1-\pi_t(A_t)),\\ H_{t+1}(a)=H_t(a)-\alpha(R_t-\bar R_t)\pi_t(a), 所有 a\ne A_t
Ht+1(aT)=Ht(At)+α(Rt−Rˉt)(1−πt(At)),Ht+1(a)=Ht(a)−α(Rt−Rˉt)πt(a),所有a=At
R
ˉ
t
\bar R_t
Rˉt作为比较收益的基准项,如果收益高于它,那么未来选择动作
A
t
A_t
At的概率就会增加,反之概率就会降低,未选择的动作被选择的概率上升。