本文证明强化学习入门问题: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=1k​eHt​(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=1k​eiex​

证明下式即可:

∂π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)​分类讨论,可轻松证明。

【强化学习入门】梯度赌博机算法中,偏好函数更新:梯度上升公式是精确梯度上升的随机近似的证明相关推荐

  1. 深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

    前言: 现如今,所有电子游戏都离不开AI的运用,对于游戏策划而言AI是什么,AI又是如何运作,可以说是面试时的加分项,本文在这里不探讨理论的AI(采用深度强化学习的智能AI,如腾讯AI Lab.网易伏 ...

  2. 强化学习入门教程(附学习大纲)

    零基础,想要入门或从事强化学习研究的同学有福了! CSDN学院特邀资深讲师为大家分享<强化学习深入浅出完全教程>从零基础开始入门强化学习,在教学的过程中,配合   具体案例.代码演示 , ...

  3. 用深度强化学习玩atari游戏_(一)深度强化学习·入门从游戏开始

    1.在开始正式进入学习之前,有几个概念需要澄清,这样有利于我们对后续的学习有一个大致的框架感 监督型学习与无监督型学习 深度强化学习的范畴 监督型学习是基于已有的带有分类标签的数据集合,来拟合神经网络 ...

  4. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  5. 强化学习入门8—深入理解DDPG

    文章目录 Deep Deterministic Policy Gradient 简介 网络结构 算法流程 小结 本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG.DD ...

  6. 强化学习入门简单实例 DQN

    [强化学习入门 第一讲 MDP](https://zhuanlan.zhihu.com/p/25498081) [随笔分类 - 0084. 强化学习](https://www.cnblogs.com/ ...

  7. CORL: 基于变量序和强化学习的因果发现算法

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 来源:诺亚实验室 华为诺亚方舟实验室.西安交通大学 ...

  8. 写给开发同学的 AI 强化学习入门指南

    该篇文章是我学习过程的一些归纳总结,希望对大家有所帮助. 最近因为 AI 大火,搞的我也对 AI 突然也很感兴趣,于是开启了 AI 的学习之旅.其实我也没学过机器学习,对 AI 基本上一窍不通,但是好 ...

  9. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例

    强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...

最新文章

  1. python语言的理解-初学Python语言者必须理解的下划线
  2. SAP Spartacus配置后台Commerce Cloud的位置
  3. springboot 之Spring Web Mvc Framework
  4. JAVA线程池_并发队列工作笔记0002---认识线程池_在线程池中使用队列
  5. Win10 64位系统下PCL + Visual Studio + cmake + (Qt) 安装调试
  6. CCF农产品价格预测-复赛rank2代码公布
  7. 使用@onetomany取不到值_SpringCloud微服务架构篇2:微服务基础—SpringBoot使用
  8. scala case class入门
  9. 那些年,我们一起学过的汇编----之子程序设计
  10. 如何从0开始编写一个网络爬虫?
  11. SmartSVN使用
  12. 十二进制加计数器-20151112
  13. Android GPS模块总结
  14. fluent入门学习(一):三维卡门涡街算例
  15. Theano简单入门(三)
  16. 物联网常见通信模块介绍
  17. 新浪微博僵粉(机器粉)识别方法
  18. 如何从电脑内转播声音
  19. 看完这篇 教你玩转渗透测试靶机vulnhub——DC9
  20. 3D MAX入门训练(1)放样制作胡萝卜

热门文章

  1. 移动端和PC端弹出遮罩层后,页面禁止滚动的解决方法及探究
  2. Java的各种中文乱码解决方法
  3. 如何从数据框的单元格获取值?
  4. Polymer元素和AngularJS指令有什么区别?
  5. php josnp_浅析php中jsonp的跨域实例
  6. python访问带密码的共享文件夹_设置带密码和读写权限的共享文件夹 - Hakka
  7. 重装系统Win10电脑磁盘被写保护怎么办
  8. win11鼠标指针如何设置 Windows11鼠标指针的设置方法
  9. win11开机音乐怎么设置
  10. ubuntu18.04,Linux使用远程连接工具连接失败解决