本文证明强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,偏好函数更新公式:
Ht+1(At)=Ht(At)+α(Rt−Rt)(1−πt(At))的合理性。书上可能有些不太好理解,我用较为浅显的语言将每步证明的“why & how”描述出来。
引用自:强化学习(第2版); [加拿大] Richard S. Sutton, [美国] Andrew G. Barto; 俞凯 译
书中提到的摇臂赌博机的所有算法,我已经使用python 3实现,在线浏览ipynb:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/01-Stochastic-Multi-Armed-Bandit.ipynb。并上传github,仓库:https://github.com/PiperLiu/Reinforcement-Learning-practice-zh。
前言
在强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,提出了偏好函数。偏好函数本身的值并不重要,重要的是一个动作相比于另一个动作的偏好,因此,选择动作的概率分布使用softmax分布:
PrAt=a=∑b=1keHt(b)eHt(a)=πt(a)
πt(a)表示动作a在t时刻被选择的概率,所有偏好函数的初始值都相同(可为0)。
则,偏好函数更新遵守如下规则:
Ht+1(At)=Ht(At)+α(Rt−Rt)(1−πt(At)) |
对于被选择的动作
At |
(1) |
Ht+1(a)=Ht(a)−α(Rt−(Rt)πt(a)) |
对于所有
a=At |
(2) |
其中,a是一个大于0的数,表示步长。
Rt是时刻t内所有收益的平均值,称为基准项。
个人思考:为什么更新偏好函数时要考虑概率呢? 答:对于(1)式,若本身概率较大,则
Ht+1不会加太多,若本身概率
πt=1,则
Ht+1不用更新。
上述思考有一定道理,但是这个更新公式的合理性可以在数学上证明。下面开始证明。
证明
在精确梯度上升算法中,有:
Ht+1(a)=Ht(a)+α∂Ht(a)∂E[Rt]
这里,用总体的期望收益定义为性能的衡量指标:
E[Rt]=x∑πt(x)q∗(x)
真实的
q∗(x)(每个动作的真实收益)是未知的,因此无法实现精确的梯度上升。但是可以使用随机梯度上升求近似。
即,开始推导
∂Ht(a)∂E[Rt]的近似:
∂Ht(a)∂E[Rt]=∂Ht(a)∂[x∑πt(x)q∗(x)]
因为
q∗(x)客观存在,与
Ht(a)值无关,所以:
∂Ht(a)∂E[Rt]=x∑q∗(x)∂Ht(a)∂πt(x)
因为
∑x∂Ht(a)∂πt(x)=0(其证明在后文:动作导数总和为0的证明),因此可以加入“基准项”
Bt:
∂Ht(a)∂E[Rt]=x∑(q∗(x)−Bt)∂Ht(a)∂πt(x)
然后,乘以
πt(x)/πt(x),有:
∂Ht(a)∂E[Rt]=x∑πt(x)(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)
可以看出,上式实际上是对
πt(x)分布中的
(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)进行期望求值,即:
∂Ht(a)∂E[Rt]=E[(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)]
其中,变量为动作
x,这里记为选择的动作
At;并且,将
Bt取值为
Rt;又有,选择
At动作的回报的期望为
E[Rt∣At],即
q∗(x)=E[Rt∣At]。因此,有:
∂Ht(a)∂E[Rt]=E[(Rt−Rt)∂Ht(a)∂πt(At)/πt(At)]
又有,
∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),
Ia=At表示,如果
a=x就取1,否则取0。其证明在后文:偏好函数导数的推导证明。
则带入
∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),有:
∂Ht(a)∂E[Rt]=E[(Rt−Rt)(Ia=At−πt(a))]
将上式带入
Ht+1(a)=Ht(a)+α∂Ht(a)∂E[Rt],即有
Ht+1(a)=Ht(a)+α(Rt−Rt)(Ia=At−πt(a))
即此式子收敛于精确梯度上升。
Q.E.D
动作导数总和为0的证明
证明:
∑x∂Ht(a)∂πt(x)=0:
因为
∑xπt(x)=1,即概率和为1,所以对每一项的
Ht(a)求导,等式右边为0:
x∑∂Ht(a)∂πt(x)=0
Q.E.D
偏好函数导数的推导证明
证明:
∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),
Ia=At表示,如果
a=x就取1,否则取0。
其实,就是一道很简单的
(g(x)f(x))′等应用。
简化一下
∂Ht(a)∂πt(x),将
Ht(x)替换为
x,并在证明中使用下式即可:
πt(x)=∑i=1keiex
证明下式即可:
∂x∂πt(x)={πt(x)(1−πt(a))−πt(x)πt(a)x=ax=a
高中数学内容,应用公式
(g(x)f(x))′=g(x)2f′(x)g(x)−g′(x)f(x)分类讨论,可轻松证明。