本文证明强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,偏好函数更新公式: 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 - \overline{R_t})(1-\pi_t(A_t)) 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分布:
P r A t = a = e H t ( a ) ∑ b = 1 k e H t ( b ) = π t ( a ) Pr_{A_t = a} = \frac{e^{H_t(a)}}{\sum_{b=1}^{k} e^{H_t(b)}} = \pi_t(a) PrAt=a=∑b=1keHt(b)eHt(a)=πt(a)
π t ( a ) \pi_t(a) πt(a)表示动作a在t时刻被选择的概率,所有偏好函数的初始值都相同(可为0)。
则,偏好函数更新遵守如下规则:
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 - \overline{R_t})(1-\pi_t(A_t)) Ht+1(At)=Ht(At)+α(Rt−Rt)(1−πt(At)) | 对于被选择的动作 A t A_t At | (1) |
---|---|---|
H t + 1 ( a ) = H t ( a ) − α ( R t − ( ‾ R t ) π t ( a ) ) H_{t+1}(a) = H_t(a) - \alpha (R_t - \overline(R_t) \pi_t(a)) Ht+1(a)=Ht(a)−α(Rt−(Rt)πt(a)) | 对于所有 a ≠ A t a \not= A_t a=At | (2) |
其中,a是一个大于0的数,表示步长。 R t ‾ \overline{R_t} Rt是时刻t内所有收益的平均值,称为基准项。
个人思考:为什么更新偏好函数时要考虑概率呢? 答:对于(1)式,若本身概率较大,则 H t + 1 H_{t+1} Ht+1不会加太多,若本身概率 π t = 1 \pi_t=1 πt=1,则 H t + 1 H_{t+1} Ht+1不用更新。
上述思考有一定道理,但是这个更新公式的合理性可以在数学上证明。下面开始证明。
证明
在精确梯度上升算法中,有:
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