【强化学习入门】梯度赌博机算法中,偏好函数更新:梯度上升公式是精确梯度上升的随机近似的证明
本文证明强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,偏好函数更新公式:Ht+1(At)=Ht(At)+α(Rt−Rt‾)(1−πt(At))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分布:
PrAt=a=eHt(a)∑b=1keHt(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)。
则,偏好函数更新遵守如下规则:
Ht+1(At)=Ht(At)+α(Rt−Rt‾)(1−πt(At))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)) | 对于被选择的动作AtA_tAt | (1) |
---|---|---|
Ht+1(a)=Ht(a)−α(Rt−(‾Rt)π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≠Ata \not= A_ta=At | (2) |
其中,a是一个大于0的数,表示步长。Rt‾\overline{R_t}Rt是时刻t内所有收益的平均值,称为基准项。
个人思考:为什么更新偏好函数时要考虑概率呢? 答:对于(1)式,若本身概率较大,则Ht+1H_{t+1}Ht+1不会加太多,若本身概率πt=1\pi_t=1πt=1,则Ht+1H_{t+1}Ht+1不用更新。
上述思考有一定道理,但是这个更新公式的合理性可以在数学上证明。下面开始证明。
证明
在精确梯度上升算法中,有:
Ht+1(a)=Ht(a)+α∂E[Rt]∂Ht(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]
这里,用总体的期望收益定义为性能的衡量指标:
E[Rt]=∑xπt(x)q∗(x)\mathbb{E}[R_t] = \sum_x \pi_t (x) q_* (x)E[Rt]=x∑πt(x)q∗(x)
真实的q∗(x)q_* (x)q∗(x)(每个动作的真实收益)是未知的,因此无法实现精确的梯度上升。但是可以使用随机梯度上升求近似。
即,开始推导∂E[Rt]∂Ht(a)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)}∂Ht(a)∂E[Rt]的近似:
∂E[Rt]∂Ht(a)=∂∂Ht(a)[∑xπt(x)q∗(x)]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \frac{\partial}{\partial H_t(a)}\left[ \sum_x \pi_t (x) q_* (x) \right]∂Ht(a)∂E[Rt]=∂Ht(a)∂[x∑πt(x)q∗(x)]
因为q∗(x)q_* (x)q∗(x)客观存在,与Ht(a)H_t (a)Ht(a)值无关,所以:
∂E[Rt]∂Ht(a)=∑xq∗(x)∂πt(x)∂Ht(a)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \sum_x q_* (x) \frac{\partial \pi_t (x)}{\partial H_t(a)}∂Ht(a)∂E[Rt]=x∑q∗(x)∂Ht(a)∂πt(x)
因为∑x∂πt(x)∂Ht(a)=0\sum_x \frac{\partial \pi_t (x)}{\partial H_t(a)}=0∑x∂Ht(a)∂πt(x)=0(其证明在后文:动作导数总和为0的证明),因此可以加入“基准项”BtB_tBt:
∂E[Rt]∂Ht(a)=∑x(q∗(x)−Bt)∂πt(x)∂Ht(a)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \sum_x (q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)}∂Ht(a)∂E[Rt]=x∑(q∗(x)−Bt)∂Ht(a)∂πt(x)
然后,乘以πt(x)/πt(x)\pi_t(x) / \pi_t(x)πt(x)/πt(x),有:
∂E[Rt]∂Ht(a)=∑xπt(x)(q∗(x)−Bt)∂πt(x)∂Ht(a)/πt(x)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \sum_x \pi_t(x) (q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)} / \pi_t(x)∂Ht(a)∂E[Rt]=x∑πt(x)(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)
可以看出,上式实际上是对πt(x)\pi_t(x)πt(x)分布中的(q∗(x)−Bt)∂πt(x)∂Ht(a)/πt(x)(q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)} / \pi_t(x)(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)进行期望求值,即:
∂E[Rt]∂Ht(a)=E[(q∗(x)−Bt)∂πt(x)∂Ht(a)/πt(x)]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \mathbb{E} \left[ (q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)} / \pi_t(x) \right]∂Ht(a)∂E[Rt]=E[(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)]
其中,变量为动作xxx,这里记为选择的动作AtA_tAt;并且,将BtB_tBt取值为Rt‾\overline{R_t}Rt;又有,选择AtA_tAt动作的回报的期望为E[Rt∣At]\mathbb{E}[R_t | A_t]E[Rt∣At],即q∗(x)=E[Rt∣At]q_* (x)=\mathbb{E}[R_t | A_t]q∗(x)=E[Rt∣At]。因此,有:
∂E[Rt]∂Ht(a)=E[(Rt−Rt‾)∂πt(At)∂Ht(a)/πt(At)]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \mathbb{E} \left[ (R_t - \overline{R_t} ) \frac{\partial \pi_t ( A_t)}{\partial H_t(a)} / \pi_t( A_t) \right]∂Ht(a)∂E[Rt]=E[(Rt−Rt)∂Ht(a)∂πt(At)/πt(At)]
又有,∂πt(x)∂Ht(a)=πt(x)(Ia=At−πt(a))\frac{\partial \pi_t (x)}{\partial H_t(a)}=\pi_t(x) (\mathbb{I}_{a=A_t} - \pi_t(a))∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),Ia=At\mathbb{I}_{a=A_t}Ia=At表示,如果a=xa=xa=x就取1,否则取0。其证明在后文:偏好函数导数的推导证明。
则带入∂πt(x)∂Ht(a)=πt(x)(Ia=At−πt(a))\frac{\partial \pi_t (x)}{\partial H_t(a)}=\pi_t(x) (\mathbb{I}_{a=A_t} - \pi_t(a))∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),有:
∂E[Rt]∂Ht(a)=E[(Rt−Rt‾)(Ia=At−πt(a))]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \mathbb{E} \left[ (R_t - \overline{R_t} ) (\mathbb{I}_{a=A_t} - \pi_t(a)) \right]∂Ht(a)∂E[Rt]=E[(Rt−Rt)(Ia=At−πt(a))]
将上式带入Ht+1(a)=Ht(a)+α∂E[Rt]∂Ht(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],即有
Ht+1(a)=Ht(a)+α(Rt−Rt‾)(Ia=At−πt(a))H_{t+1}(a)=H_t(a) + \alpha (R_t - \overline{R_t} ) (\mathbb{I}_{a=A_t} - \pi_t(a))Ht+1(a)=Ht(a)+α(Rt−Rt)(Ia=At−πt(a))
即此式子收敛于精确梯度上升。
Q.E.D
动作导数总和为0的证明
证明:∑x∂πt(x)∂Ht(a)=0\sum_x \frac{\partial \pi_t (x)}{\partial H_t(a)}=0∑x∂Ht(a)∂πt(x)=0:
因为∑xπt(x)=1\sum_x \pi_t (x)=1∑xπt(x)=1,即概率和为1,所以对每一项的Ht(a)H_t(a)Ht(a)求导,等式右边为0:
∑x∂πt(x)∂Ht(a)=0\sum_x \frac{\partial \pi_t (x)}{\partial H_t(a)}=0x∑∂Ht(a)∂πt(x)=0
Q.E.D
偏好函数导数的推导证明
证明:∂πt(x)∂Ht(a)=πt(x)(Ia=At−πt(a))\frac{\partial \pi_t (x)}{\partial H_t(a)}=\pi_t(x) (\mathbb{I}_{a=A_t} - \pi_t(a))∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),Ia=At\mathbb{I}_{a=A_t}Ia=At表示,如果a=xa=xa=x就取1,否则取0。
其实,就是一道很简单的(f(x)g(x))′(\frac{f(x)}{g(x)})^{'}(g(x)f(x))′等应用。
简化一下∂πt(x)∂Ht(a)\frac{\partial \pi_t (x)}{\partial H_t(a)}∂Ht(a)∂πt(x),将Ht(x)H_t(x)Ht(x)替换为xxx,并在证明中使用下式即可:
πt(x)=ex∑i=1kei\pi_t (x) = \frac{e^{x}}{\sum_{i=1}^{k} e^i}πt(x)=∑i=1keiex
证明下式即可:
∂πt(x)∂x={πt(x)(1−πt(a))x=a−πt(x)πt(a)x≠a\frac{\partial \pi_t (x)}{\partial x} = \left\{ \begin{aligned} \pi_t(x)(1-\pi_t(a)) & & x=a \\ -\pi_t(x) \pi_t(a) & & x\not= a \\ \end{aligned} \right.∂x∂πt(x)={πt(x)(1−πt(a))−πt(x)πt(a)x=ax=a
高中数学内容,应用公式(f(x)g(x))′=f′(x)g(x)−g′(x)f(x)g(x)2(\frac{f(x)}{g(x)})^{'} = \frac{f^{'}(x)g(x) - g^{'}(x)f(x)}{g(x)^{2}}(g(x)f(x))′=g(x)2f′(x)g(x)−g′(x)f(x)分类讨论,可轻松证明。
【强化学习入门】梯度赌博机算法中,偏好函数更新:梯度上升公式是精确梯度上升的随机近似的证明相关推荐
- 深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南
前言: 现如今,所有电子游戏都离不开AI的运用,对于游戏策划而言AI是什么,AI又是如何运作,可以说是面试时的加分项,本文在这里不探讨理论的AI(采用深度强化学习的智能AI,如腾讯AI Lab.网易伏 ...
- 强化学习入门教程(附学习大纲)
零基础,想要入门或从事强化学习研究的同学有福了! CSDN学院特邀资深讲师为大家分享<强化学习深入浅出完全教程>从零基础开始入门强化学习,在教学的过程中,配合 具体案例.代码演示 , ...
- 用深度强化学习玩atari游戏_(一)深度强化学习·入门从游戏开始
1.在开始正式进入学习之前,有几个概念需要澄清,这样有利于我们对后续的学习有一个大致的框架感 监督型学习与无监督型学习 深度强化学习的范畴 监督型学习是基于已有的带有分类标签的数据集合,来拟合神经网络 ...
- 多智能体强化学习入门
参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...
- 强化学习入门8—深入理解DDPG
文章目录 Deep Deterministic Policy Gradient 简介 网络结构 算法流程 小结 本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG.DD ...
- 强化学习入门简单实例 DQN
[强化学习入门 第一讲 MDP](https://zhuanlan.zhihu.com/p/25498081) [随笔分类 - 0084. 强化学习](https://www.cnblogs.com/ ...
- CORL: 基于变量序和强化学习的因果发现算法
深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 来源:诺亚实验室 华为诺亚方舟实验室.西安交通大学 ...
- 写给开发同学的 AI 强化学习入门指南
该篇文章是我学习过程的一些归纳总结,希望对大家有所帮助. 最近因为 AI 大火,搞的我也对 AI 突然也很感兴趣,于是开启了 AI 的学习之旅.其实我也没学过机器学习,对 AI 基本上一窍不通,但是好 ...
- 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例
强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...
最新文章
- python语言的理解-初学Python语言者必须理解的下划线
- SAP Spartacus配置后台Commerce Cloud的位置
- springboot 之Spring Web Mvc Framework
- JAVA线程池_并发队列工作笔记0002---认识线程池_在线程池中使用队列
- Win10 64位系统下PCL + Visual Studio + cmake + (Qt) 安装调试
- CCF农产品价格预测-复赛rank2代码公布
- 使用@onetomany取不到值_SpringCloud微服务架构篇2:微服务基础—SpringBoot使用
- scala case class入门
- 那些年,我们一起学过的汇编----之子程序设计
- 如何从0开始编写一个网络爬虫?
- SmartSVN使用
- 十二进制加计数器-20151112
- Android GPS模块总结
- fluent入门学习(一):三维卡门涡街算例
- Theano简单入门(三)
- 物联网常见通信模块介绍
- 新浪微博僵粉(机器粉)识别方法
- 如何从电脑内转播声音
- 看完这篇 教你玩转渗透测试靶机vulnhub——DC9
- 3D MAX入门训练(1)放样制作胡萝卜