强化学习:第二章-多臂赌博机(老虎机)
前言
强化学习与其他学习方法的最大不同,就是强化学习的训练数据是评估给定动作的好坏,而不是通过给出正确动作来进行直接的指导。
- 评估性反馈(evaluative feedback):表面好坏程度,但不能确定是不是最好或最坏的。依赖于当前采取的动作。
- 指导性反馈(instructive feedback):直接指明正确动作,与当前实际动作无关——监督学习。
2.1 A k-armed Bandit Problem(一个 k 臂赌博机问题)
问题描述:
大家应该都知道拉杆老虎机(每一次拉动拉杆,会获得不同的奖励或者什么也没有),k臂赌博机则有k个控制杆,每个控制杆控制的老虎机的奖励都有不同的分布,这样选择拉动不同的拉杆就有好坏之分。
玩家需要在k个控制杆(action)中进行选择,每一选择之后,赌博机(environment)都会给你一定数值的奖励(reward),玩家的目标就是在一段时间内最大化总收益的期望(total amount of reward)
符号定义:
- a:行动(action)。
- A t A_t At - 在时刻t选择的动作(select action)。
- q ∗ ( a ) = E [ R t ∣ A t = a ] q_∗(a)=\mathbb{E}[R_t|A_t=a] q∗(a)=E[Rt∣At=a]: 行动 a 的真实奖赏(true value)。这个是玩家实际中不可知的。
- Q t ( a ) Q_t(a) Qt(a):我们对动作a在时刻t的价值的估计,我们希望他能收敛到 q ∗ ( a ) q_∗(a) q∗(a)。
开发(Exploitation)or 试探(Exploration):
以老虎机为例,在不断摸索寻找奖励最大的老虎机的过程中,我们把当前估值最高的老虎机(action)称为贪心的,那我对下一个动作的选择有两种(开发or试探)
- 开发-exploration: 选择贪心动作,看重眼前的利益,这是对已知知识的开发。
- 试探-exploration: 选择非贪心的动作,对环境进行探索,期望能够尝试其他动作,改善对其他动作的价值估计。
开发的目的是使当前的利益最大化,而试探更关注长远利益,希望找到更好的动作,消除动作的不确定性。
2.2 Action-value Methods(动作-价值方法 )
估计动作价值-采样平均法:
Q
t
(
a
)
=
t
时
刻
钱
通
过
执
行
动
作
a
得
到
收
益
总
和
t
时
刻
前
执
行
动
作
a
的
次
数
=
∑
i
=
1
t
−
1
R
i
×
I
A
i
=
a
∑
i
=
1
t
−
1
I
A
i
=
a
Q_t(a)=\frac{t时刻钱通过执行动作a得到 收益总和}{t时刻前执行动作a的次数}=\frac{ \sum^{t-1}_{i=1}R_i\times I_{A_i=a}}{ \sum^{t-1}_{i=1} I_{A_i=a}}
Qt(a)=t时刻前执行动作a的次数t时刻钱通过执行动作a得到收益总和=∑i=1t−1IAi=a∑i=1t−1Ri×IAi=a
其中
I
I
I为指示变量,当时刻
t
t
t选择动作
a
a
a时为1,反之为0。根据大数定律,
Q
t
(
a
)
Q_t(a)
Qt(a)会收敛到
q
∗
(
a
)
q_*(a)
q∗(a)
动作选择规则:
- 贪心选择——开发:
A t = arg max a Q t ( a ) A_t=\argmax_aQ_t(a) At=aargmaxQt(a) - ϵ \epsilon ϵ-贪心方法: 以很小的概率 ϵ \epsilon ϵ采取这样的规则——试探:从所有动作中以等概率做出选择。(1- ϵ \epsilon ϵ)的概率仍采用贪心选择方法。
2.3 The 10-armed Testbed(10臂测试平台)
这里在10臂赌博机上,采用不同 ϵ \epsilon ϵ的取值(0,0.1,0.01),来分析agent学习的最终性能。有以下几个结论:
- 贪婪算法平均收益最初增长最快,收敛也最快
- 贪心方法表现最糟糕,经常陷入执行次最优的动作——最初采样较差,无法跳出寻找最优动作。
- ϵ = 0.1 \epsilon=0.1 ϵ=0.1试探更多,更早的找到最优动作(相较 ϵ = 0.01 \epsilon=0.01 ϵ=0.01),但每一时刻选择最优动作的概率不会超过90%(?? 书上的实验结果是91%)
- ϵ = 0.01 \epsilon=0.01 ϵ=0.01的方法收敛的最慢,但是最终性能最好
ϵ
\epsilon
ϵ-贪心方法的优势是依赖于任务的,这种优势是来自于收益的噪声(方差),如果动作的收益是确定的(方差是0),则对每个动作的一次试探就可以得到准确的估计,那么每一次贪心选择就可以一点点找到最好的动作。
但是如果收益的噪声很多,找到最优动作需要更多次的试探,就需要采用
ϵ
\epsilon
ϵ-贪心方法,不断跳出当前最优去试探其他动作。
另外还会有非平稳的情况(实际中经常出现的状况),即对某一动作的收益不仅是有噪声的,并且是随时间变化的。
2.4 Incremental Implementation(增量式实现)
如何计算 Q t ( a ) Q_t(a) Qt(a),用 Q n Q_n Qn表示n-1次选择某个动作后他的估计价值
- Q n = 1 n ∑ i = 1 n R i Q_n=\frac{1}{n}\sum^n_{i=1}R_i Qn=n1∑i=1nRi :这种方法需要记录每一次 R i R_i Ri,需要内存空间较大
- 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] :等价式,具体推导见书 P 31 P_{31} P31,只需存储 Q n Q_n Qn和n。
- 一般形式:新估计值
←
\leftarrow
←旧估计值 + 步长
×
\times
× [目标 - 旧估计值]
2.5 跟踪一个非平稳问题
取平均的方法对平稳的赌博机问题是合适的,这里的平均理解成加权的概念,如果赌博机是平稳的,其均值在每一时刻都是相同的,那对所有时刻采用相同的加权因子是没有问题的。
但如果赌博机是不平稳的,假如赌博机的回报随着你玩的次数增加会变多,如果仍然对每一时刻采用相同的加权(取平均),那么对当前赌博机的回报的估计就会偏小。**所以一个很好的解决办法是对近期的收益赋予跟高的权值。**增量更新规则改为:
Q
n
+
1
=
Q
n
+
α
[
R
n
−
Q
n
]
,
w
h
e
r
e
α
∈
(
0
,
1
]
Q_{n+1}=Q_n+\alpha[R_n-Q_n],where \quad\alpha\in(0,1]
Qn+1=Qn+α[Rn−Qn],whereα∈(0,1]
可以递推得到 指数近因加权平均 :
Q
n
+
1
=
(
1
−
α
)
n
Q
1
+
∑
i
=
1
n
α
(
1
−
α
)
n
−
i
R
i
Q_{n+1}=(1-\alpha)^nQ_1+\sum^n_{i=1}\alpha(1-\alpha)^{n-i}R_i
Qn+1=(1−α)nQ1+i=1∑nα(1−α)n−iRi
从式中可以看出:
- R i R_i Ri的权值依赖于 ( 1 − α ) n − i (1-\alpha)^{n-i} (1−α)n−i,及观测到它的时刻与当前时刻的差 ( n − i ) (n-i) (n−i)
- 可以验证 ( 1 − α ) n + ∑ i = 1 n α ( 1 − α ) n − i = 1 (1-\alpha)^n+\sum^n_{i=1}\alpha(1-\alpha)^{n-i}=1 (1−α)n+∑i=1nα(1−α)n−i=1,这里可以注意到这是初始估计价值(人为设定)与以后所有时刻的回馈价值(实际)的加权,所以我们对每个动作的初始价值估计也会影响最终结果。这将在下一节中讨论到。
2.6 Optimistic Initial Values(乐观初始值)
正如刚刚提到的,最终估计依赖于初始动作值
Q
1
(
a
)
Q_1(a)
Q1(a)的选择(从统计学角度来说,这些方法是有偏的),我们可以利用这种偏差得到一个更好的训练结果。
一个乐观的(较大的)初始估计会鼓励去试探更多动作,例如赌博机的奖励均小于5,如果我们设置初始价值均为5,则无论选择哪一个动作,得到的收益都会小于5,则及时在贪心状况下,agent也会选择其他动作,因此这样agent会对所有动作尝试几次。下图给出了不同初始值的情况下的对比效果。
2.7Upper-Confidence-Bound Action Selection(基于置信度上界的动作选择)
在非贪心动作中,根据这些动作价值的不确定性,选取可能真实值上限最大的动作。称为置信度上界(UCB),算法为:
A
t
=
arg max
a
[
Q
t
(
a
)
+
c
ln
t
N
t
(
a
)
]
A_t=\argmax_a\bigg[Q_t(a)+c\sqrt{\frac{\ln t}{N_t(a)}}\bigg]
At=aargmax[Qt(a)+cNt(a)lnt]
其中
c
>
0
c>0
c>0为常数,控制试探的程度,
N
t
(
a
)
N_t(a)
Nt(a)表示在t时刻之前动作a被选择的次数,
N
t
(
a
)
=
0
N_t(a)=0
Nt(a)=0时,a就是满足最大化条件的动作。
算法理解:
这个算法的目标是找到最合理的
t
t
t时刻的动作——什么是最合理?
式子中第二项是在考虑动作a的不确定度:
- N t ( a ) N_t(a) Nt(a)在分母项上, N t ( a ) N_t(a) Nt(a)很小说明选中a的次数很少,a就会有更高的价值上界(有更大概率有高收益)。随着 N t ( a ) N_t(a) Nt(a)增加,不确定性减少,这一项也变少,其价值就更接近 Q t ( a ) Q_t(a) Qt(a)的估计。
- ln t \ln t lnt在分子上,表面随着时间的推移,t是在增大,如果没有选择a, N t ( a ) N_t(a) Nt(a)不变,不确定性就增加了——对a的试探不充分。也会倾向选择a。
- c c c代表置信程度,即第二项在衡量价值上界中有多重要,c越大意味着会有更多的试探(exploration)。
- 随着时间的流逝,具有低价值估计(第一项)或者被选择了更多次的动作(第二项)被选中的频率较低。
- 下图是实验结果
2.8 Gradient Bandit Algorithms(梯度赌博机算法)
- 之前的算法:评估动作价值,并使用估计值来选择动作。
- 梯度算法:学习针对每一个动作a的偏好函数
H
t
(
a
)
H_t(a)
Ht(a),倾向选择偏好函数大的动作。
个人理解:价值函数是比较每个动作的绝对价值,而偏好函数是比较动作之间的相对优势。
概率函数
π
t
(
a
)
\pi_t(a)
πt(a)表示动作a在时刻t被选择的概率,定义如下:
P
r
{
A
t
=
a
}
=
π
t
(
a
)
=
s
o
f
t
m
a
x
(
H
t
(
a
)
)
=
e
H
t
(
a
)
∑
i
=
1
k
e
H
t
(
a
)
A
t
=
a
r
g
m
a
x
a
(
π
t
(
a
)
)
Pr\{A_t = a\} = \pi_t(a) = softmax(H_t(a)) = \frac{e^{H_t(a)}}{ \sum_{i=1}^k e^{H_t(a)}} \\ A_t = \underset{a}{argmax} (\pi_t(a))
Pr{At=a}=πt(a)=softmax(Ht(a))=∑i=1keHt(a)eHt(a)At=aargmax(πt(a))
偏好函数的更新方式:
H
t
+
1
(
A
t
)
=
H
t
(
A
t
)
+
α
(
R
t
−
R
ˉ
t
)
(
1
−
π
t
(
A
t
)
)
, and
H
t
+
1
(
a
)
=
H
t
(
a
)
−
α
(
R
t
−
R
ˉ
t
)
π
t
(
a
)
,
∀
a
≠
A
t
R
ˉ
t
=
∑
R
t
t
H_{t+1}(A_t) = H_t(A_t) + \alpha(R_t - \bar{R}_t)(1- \pi_t(A_t)) \text{, and} \\ H_{t+1}(a) = H_t(a) - \alpha(R_t - \bar{R}_t)\pi_t(a) , \forall a \ne A_t \\ \bar{R}_t = \frac{\sum R_t}{t}
Ht+1(At)=Ht(At)+α(Rt−Rˉt)(1−πt(At)), andHt+1(a)=Ht(a)−α(Rt−Rˉt)πt(a),∀a=AtRˉt=t∑Rt
其中
α
\alpha
α是步长,
R
ˉ
t
\bar{R}_t
Rˉt是时刻t内所以收益的平均值,被看作基准项。
对比试验中可以看到,如果把基准项
R
ˉ
t
\bar{R}_t
Rˉt置0,算法最终性能会显著降低。
算法理解:
书中对梯度赌博机算法的解释是这种算法是梯度上升算法的随机近似,即: H t + 1 ( a ) = H t ( a ) + α ∂ E [ R t ] ∂ H t ( a ) H_{t+1}(a)=H_t(a)+\alpha\frac{\partial\mathbb{E}[R_t]}{\partial H_t(a)} Ht+1(a)=Ht(a)+α∂Ht(a)∂E[Rt]与上述的更新公式: H t + 1 ( A t ) = H t ( A t ) + α ( R t − R ˉ t ) ( 1 − π t ( A t ) ) H_{t+1}(A_t) = H_t(A_t) + \alpha(R_t - \bar{R}_t)(1- \pi_t(A_t)) Ht+1(At)=Ht(At)+α(Rt−Rˉt)(1−πt(At))是等价的。证明略(详见教材 P 38 − 40 P_{38-40} P38−40)。这就保证了算法的收敛性。