策略梯度中的Baseline

Policy Gradient with Baseline

Policy Gradient

  • 策略梯度是关于策略网络的参数求的,策略网络π(a∣s;θ)\pi (a|s;\theta)π(a∣s;θ)的参数是θ\thetaθ,我们使用策略网络来控制Agent做运动。状态价值函数Vπ(s)V_{\pi}(s)Vπ​(s)是动作价值函数的期望,期望是关于动作A求的,动作A的概率密度函数是π\piπ,可以将期望等价写为连加的形式。这里期望中包含策略网络的参数θ\thetaθ,所以得到的状态价值函数Vπ(s)V_{\pi}(s)Vπ​(s)依赖于参数θ\thetaθ,策略梯度是VπV_{\pi}Vπ​关于参数θ\thetaθ的导数,也可以写为期望的形式。

Baseline

  • 策略梯度方法常用Baseline来降低方差,让收敛更快,Baseline指的是一个函数b,它可以是任何东西,但是不能依赖于动作A。
  • 证明这个期望EAπ[b⋅∂lnπ(A∣s;θ)∂θ]\mathbb{E}_{A~ \pi}[b\cdot \frac{\partial ln\pi (A|s;\theta)}{\partial \theta}]EA π​[b⋅∂θ∂lnπ(A∣s;θ)​]为0,可以将b提出去,将得到后的期望展开得到连加的形式,使用链式法则将导数展开,这样接可以消去一项。因为连加是关于a求的,求导是关于θ\thetaθ求的,所以可以将连加放入到求导内部,因为π\piπ是对a的概率密度函数,所以它的连加和为1,故结果为0.
  • 通过上面推导我们可以得到baseline的重要性质,就是它乘以策略梯度然后对A求期望,得到的期望为0

Policy Gradient with Baseline

  • 上面我们得到了EAπ[b⋅∂lnπ(A∣s;θ)∂θ]=0\mathbb{E}_{A~ \pi}[b\cdot \frac{\partial ln\pi (A|s;\theta)}{\partial \theta}]=0EA π​[b⋅∂θ∂lnπ(A∣s;θ)​]=0,使用这个性质向策略梯度中添加baseline,
  • 之前我们得到了策略梯度为下面的等式,又因为baseline为0,所以可以减去它,使得等式仍然成立。合并我们就可以得到第二个等式,等式中包含baseline

  • 这样我们就可以得到下面的定理:

    • 但是我们肯定会有这样一个问题:既然b不会影响期望,那么我们加不加b有什么区别呢?实际上,在算法中我们求的不是期望,因为期望太复杂啦,我们使用的是对期望的蒙特卡洛近似,如果我们选择的b比较好,比较接近于QπQ_{\pi}Qπ​,算法会将蒙特卡洛近似的方差降低,收敛更快。

Monte Carlo Approximation

  • 我们直接求期望往往很困难,所以我们通常使用期望的蒙特卡洛近似。我们将期望中的函数记为g(At)g(A_t)g(At​),它依赖于随机变量AtA_tAt​,期望是按照随机变量AtA_tAt​求的,它的概率密度函数是π\piπ,我们根据π\piπ做随机抽样,得到一个动作ata_tat​,然后计算g(at)g(a_t)g(at​),即为上面期望的蒙特卡洛近似,g(at)g(a_t)g(at​)显然是策略梯度的一个无偏估计,这是因为g关于AtA_tAt​的期望为策略梯度,gatg_{a_t}gat​​实际上是随机梯度,实际中我们往往用随机梯度。

Stochastic Policy Gradient

  • 实际我们训练策略网络的时候,我们通常使用随机梯度上升来训练参数,使用的是g(at)g(a_t)g(at​),这样做策略梯度上升可以使得状态价值变大,也就以为着让策略变得更好。

  • 在看上面g(at)g(a_t)g(at​)的公式,里面有b,前面我们证明了只要b于AtA_tAt​无关,那么我们就可以使得期望保持不变。虽然b不影响g(At)g(A_t)g(At​)的期望,但是b影响g(at)g(a_t)g(at​),看下上面公式用不同的b可以得到不同的g(at)g(a_t)g(at​),如果我们选择的b很好,很接近QπQ_{\pi}Qπ​,那么随机梯度方差就会小,就会让算法收敛的更快。

Choices of Baselines

  • Choice 1:b=0。也就是不用baseline,这样我们就得到了标准的策略梯度,不带baseline
  • Choice 2:b=Vπ(st)b=V_{\pi}(s_t)b=Vπ​(st​),因为状态sts_tst​是先于动作被观测到的,所以它不依赖于动作。我们为啥要用这个呢?因为上面我们提到了,如果我们选择的b很好,非常的接近动作价值函数VπV_{\pi}Vπ​这样我们在用蒙特卡洛近似策略梯度的期望的时候,就可以使得方差很小,收敛更快。根据定义状态价值函数VπV_{\pi}Vπ​是动作价值函数Qπ(st,At)Q_{\pi}(s_t,A_t)Qπ​(st​,At​)关于动作AtA_tAt​的期望。作为期望显然很接近动作价值函数,所以很合适。

REINFORCE with Baseline

  • 复习


  • 之前我们推导出了随机策略梯度,也就是上面的公式,但是它里面还有未知项,所以我们要近似,我们可以使用观测到的值utu_tut​来近似Qπ(st,at)Q_{\pi}(s_t,a_t)Qπ​(st​,at​),这也是蒙特卡洛近似,这个算法就是REINFORCE。

    • 我们观测到一个轨迹,也就是一直到游戏结束。
    • 计算return,这样我们就可以得到回报utu_tut​
    • utu_tut​就是动作价值函数的无偏估计,REINFORCE算法就用这个方法来近似QπQ_{\pi}Qπ​
  • 上面的公式中还有一个未知的东西,就是VπV_{\pi}Vπ​,我们可以使用神经网络来近似它,也就是价值网络,最终可以直接算出近似的策略梯度。

  • 为了能够计算策略梯度我们进行了3次近似

    • 使用蒙特卡洛来近似期望,将策略梯度近似为随机梯度g(at)g(a_t)g(at​)
    • 使用观测到的utu_tut​来近似动作价值函数,这也是蒙特卡洛近似
    • 使用价值网络来近似状态价值函数

Policy and Value Network

  • 我们需要两个神经网络,策略网络来控制Agent,价值网络作为baseline

  • 策略网络

    • 策略网络是对策略函数的近似,

  • 价值网络

    • 价值网络的输入是状态s,它是对状态价值函数的近似。

  • 共享卷积层参数,因为他们的输入都是对状态s提取特征。

REINFORCE with Baseline

  • 我们使用REINFORCE方法训练策略网络,使用回归方法训练价值网络。
  • 之前我们已经近似出了策略梯度,有了策略梯度我们就可以根据梯度上升来更新策略网络,我们将圈出来的记为−δt-\delta_t−δt​,在后面我们训练价值网络的时候也会用到它。

  • 更新价值网络就是让它去拟合回报utu_tut​,因为之前我们将状态价值函数近似为了utu_tut​,这样我们就可以得到预测的误差,因为我们希望误差越小越好,所以我么可以使用误差的平方作为损失函数。然后求导,就可以得到梯度,然后做梯度下降更新参数。

Summary

  • 每当我们打一局游戏,我们就可以观测到一条轨迹
  • 使用观测到的奖励r来计算回报,价值网络于回报之间的差,就是预测误差
  • 更新策略网络的参数
  • 最后做梯度下降来更新价值网络
  • 因为我们可以在一局游戏中我们可以得到n个回报,这样我们就可以对两个策略网络做n轮更新。

Advantage Actor-Critic (A2C)

Training of A2C

  • 每一轮我们观测到一个transition
  • 然后计算TD target
  • 然后计算TD error
  • 使用近似的策略梯度来更新策略网络参数θ\thetaθ
  • 然后更新价值网络的参数

Properties of Value Functions

  • t时刻的动作价值可以写为下面的公式,期望中的随机性来自于动作At+1A_{t+1}At+1​和状态St+1S_{t+1}St+1​,将这两个变量求期望消除随机性,将对At+1A_{t+1}At+1​的期望推到里面,我们就可以得到第二个公式。 这样我们根据定义动作价值对动作求期望就是状态价值,这样进行替换,就可以得到定理1.

Properties of State-Value Function

  • 我们知道动作价值函数对AtA_tAt​的期望就是状态价值函数,将期望中的QπQ_{\pi}Qπ​使用我们上面得到的定理1替换。这样我们就可以得到定理2.

Monte Carlo Approximations

  • 通过我们上面推导出的定理。我们对它们做蒙特卡洛近似
  • 对定理1做蒙特卡洛近似,假设我们观测到一个transition,利用它来对期望做近似,这样我们就得到了一个公式。

  • 对定理2做蒙特卡洛近似,假设我们观测到一个tranistion,来近似,这样我们又得到了一个公式

  • 这样我们就的到了两个公式,第一个公式可以用来训练策略网络,第二个公式可以用来训练价值网络。

Updating Policy Network

  • 在前面我们推导出了下面的公式,g(at)g(a_t)g(at​)是对策略网络的策略梯度的蒙特卡洛近似,其实就是一个随机梯度,里面的Qπ(st,at)−Vπ(st)Q_{\pi}(s_t,a_t)-V_{\pi}(s_t)Qπ​(st​,at​)−Vπ​(st​)被称为优势函数。我们不知道他们两的值,但是我们在前面得到了他们两的蒙特卡洛近似。然后我们进行替换,然后公式中就只有状态价值函数了,我们使用价值网络对它进行替换。我们可以用做后得到的公式来更新策略网络。


  • 这里我们观察下面蓝色方框中式子,它其实就是TD target

  • 这样我们就可以使用梯度上升来更新策略网络了。

Updating Value Network

  • 训练价值网络我们要用到TD算法,下面我们来推导TD target,上面我们得到了状态价值的蒙特卡洛近似,使用价值网络来替换,

  • 我们将上面得到的公式叫做TD target,它比纯粹的估计更靠谱,TD算法鼓励价值网络的估计接近TD target

  • 使用TD算法更新价值网络

Summary

REINFORCE vs A2C

  • 它们两使用的网络结构完全相同,策略网络也是一样的,但是价值网络的功能却有些区别。A2C的价值网络叫做Critic,用来评价策略网络的表现,REINFORCE的价值网络仅仅是个baseline,不会评价价值的好坏。

A2C with Multi-Step TD Target

  • A2C

  • 上面的TD target我们只用到了一个奖励,我们可以用多个奖励放进去,这样我们可以得到更好的效果。

  • One-Step VS Multi-Step Target

  • 下面就是多步的算法

Review REINFORCE

  • 如果我们考虑用一局游戏的所有奖励来更新TD target的话,A2C就变为了Reinforce


策略梯度中的baseline相关推荐

  1. 【从RL到DRL】深度强化学习基础(四)——策略梯度中的Baseline,Reinforce与A2C的对比

    目录 带有Baseline的策略梯度 数学推导 蒙特卡洛近似(With Baseline) Reinforce With Baseline 使用Reinforce算法训练: Advantage Act ...

  2. 【论文解读】深度强化学习基石论文:函数近似的策略梯度方法

     导读:这篇是1999 年Richard Sutton 在强化学习领域中的经典论文,论文证明了策略梯度定理和在用函数近似 Q 值时策略梯度定理依然成立,本论文奠定了后续以深度强化学习策略梯度方法的基石 ...

  3. 求一个张量的梯度_张量流中离散策略梯度的最小工作示例2 0

    求一个张量的梯度 Training discrete actor networks with TensorFlow 2.0 is easy once you know how to do it, bu ...

  4. 梯度 cv2.sobel_TensorFlow 2.0中连续策略梯度的最小工作示例

    梯度 cv2.sobel At the root of all the sophisticated actor-critic algorithms that are designed and appl ...

  5. 《强化学习》中的第13章:策略梯度方法

    前言: 本次笔记对<强化学习(第二版)>第十三章进行概括性描述. 以下概括都是基于我个人的理解,可能有误,欢迎交流:piperliu@qq.com. 让时间回到最开始:第二章多臂赌博机.在 ...

  6. triplet loss后面不收敛_Policy Gradient——一种不以loss来反向传播的策略梯度方法...

    目录 1.前言 2.核心算法 3.Add a Baseline 4.总结 1.前言 这次介绍的基于策略梯度的Policy Gradient的算法属实比之前的算法没那么好理解,笔者看完莫烦教程之后还是有 ...

  7. 重温强化学习之策略梯度算法

    1.介绍 这里仍考虑无模型的方法:策略是从值函数中导出的,使用贪婪的方法导出最优策略,使用e贪婪策略导出行为策略,直接参数化策略                            考虑之前强化学习 ...

  8. 殊途同归的策略梯度与零阶优化

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 深度学习如此成功的一个巨大原因就是基于梯度的优化算法(SGD.Adam 等)能有效地求解大多数神经网络模型 ...

  9. 策略梯度方法介绍——带基线的REINFORCE

    策略梯度方法介绍--带基线的REINFORCE 引言 回顾:REINFORCE算法 REINFORCE方法在执行过程中的问题 带基线的REINFORCE 基线REINFORCE推导过程 基线 b ( ...

最新文章

  1. UA MATH523A 实分析3 积分理论 概念与定理整理
  2. Linux vim光标移动命令
  3. SAP CRM WebClient UI recent object的后台存储实现
  4. linux 内核裁剪不当 死机,Linux編譯x86架構內核出現_stack_chk_guard未定義錯誤
  5. opencv入门_【OpenCV入门之十八】通过形态学操作提取水平与垂直线
  6. 索尼PS5或9月9日开启预订:售价挺香,钱包捂好
  7. 如何计算一组数据的波动幅度_如何用Excel计算一个投资组合(双资产/三资产)的波动率?...
  8. 蓝桥杯 入门训练 A+B问题进阶版(两个3000位数的加法)
  9. vs添加系统环境变量不识别_项目经验不重样!3个基于SpringBoot 的图片识别处理系统送给你...
  10. C#使用IHttpModule接口修改http输出的方法浅谈
  11. DiscuzX模板制作-主题列表页_左边栏制作_V1
  12. java 32位_java8update下载
  13. 计算机房在五楼英语,“我住在五楼”怎么用英语表达?
  14. windows永久关闭445、3389端口
  15. 离散实验五 判断关系R 是否为等价关系(给定 R 的关系矩阵,据此判断所给关系 R 是否为等价关系)
  16. 关于Google翻译和语音朗读功能无法正常使用的说明
  17. 编写iptables模块实现不连续IP地址的DNAT-POOL
  18. k8s自定义controller三部曲之二:自动生成代码
  19. 使用opencv查找两张图片不同的部分
  20. UGUI简单实现炉石效果

热门文章

  1. 如果你的键盘也没有大小写和数字指示灯
  2. ssm毕设项目快递代收系统00pay(java+VUE+Mybatis+Maven+Mysql+sprnig)
  3. 计算机相关专利,计算机专业方向的专利申请
  4. IMSI,TMSI,MSISDN, MSRN 和 IMEI
  5. 企立方:拼多多商家运营思路
  6. 常州大学计算机学院陆明阳,计算机学院 朱家群
  7. 学是计算机审计的心得感受,计算机审计心得体会
  8. Java+Swing捕鱼达人源码
  9. Ocr识别之扫描笔应用
  10. matlab控制系统仿真论文,基于MATLAB的过程控制系统仿真毕业设计论文.doc