策略梯度中的baseline
策略梯度中的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相关推荐
- 【从RL到DRL】深度强化学习基础(四)——策略梯度中的Baseline,Reinforce与A2C的对比
目录 带有Baseline的策略梯度 数学推导 蒙特卡洛近似(With Baseline) Reinforce With Baseline 使用Reinforce算法训练: Advantage Act ...
- 【论文解读】深度强化学习基石论文:函数近似的策略梯度方法
导读:这篇是1999 年Richard Sutton 在强化学习领域中的经典论文,论文证明了策略梯度定理和在用函数近似 Q 值时策略梯度定理依然成立,本论文奠定了后续以深度强化学习策略梯度方法的基石 ...
- 求一个张量的梯度_张量流中离散策略梯度的最小工作示例2 0
求一个张量的梯度 Training discrete actor networks with TensorFlow 2.0 is easy once you know how to do it, bu ...
- 梯度 cv2.sobel_TensorFlow 2.0中连续策略梯度的最小工作示例
梯度 cv2.sobel At the root of all the sophisticated actor-critic algorithms that are designed and appl ...
- 《强化学习》中的第13章:策略梯度方法
前言: 本次笔记对<强化学习(第二版)>第十三章进行概括性描述. 以下概括都是基于我个人的理解,可能有误,欢迎交流:piperliu@qq.com. 让时间回到最开始:第二章多臂赌博机.在 ...
- triplet loss后面不收敛_Policy Gradient——一种不以loss来反向传播的策略梯度方法...
目录 1.前言 2.核心算法 3.Add a Baseline 4.总结 1.前言 这次介绍的基于策略梯度的Policy Gradient的算法属实比之前的算法没那么好理解,笔者看完莫烦教程之后还是有 ...
- 重温强化学习之策略梯度算法
1.介绍 这里仍考虑无模型的方法:策略是从值函数中导出的,使用贪婪的方法导出最优策略,使用e贪婪策略导出行为策略,直接参数化策略 考虑之前强化学习 ...
- 殊途同归的策略梯度与零阶优化
©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 深度学习如此成功的一个巨大原因就是基于梯度的优化算法(SGD.Adam 等)能有效地求解大多数神经网络模型 ...
- 策略梯度方法介绍——带基线的REINFORCE
策略梯度方法介绍--带基线的REINFORCE 引言 回顾:REINFORCE算法 REINFORCE方法在执行过程中的问题 带基线的REINFORCE 基线REINFORCE推导过程 基线 b ( ...
最新文章
- UA MATH523A 实分析3 积分理论 概念与定理整理
- Linux vim光标移动命令
- SAP CRM WebClient UI recent object的后台存储实现
- linux 内核裁剪不当 死机,Linux編譯x86架構內核出現_stack_chk_guard未定義錯誤
- opencv入门_【OpenCV入门之十八】通过形态学操作提取水平与垂直线
- 索尼PS5或9月9日开启预订:售价挺香,钱包捂好
- 如何计算一组数据的波动幅度_如何用Excel计算一个投资组合(双资产/三资产)的波动率?...
- 蓝桥杯 入门训练 A+B问题进阶版(两个3000位数的加法)
- vs添加系统环境变量不识别_项目经验不重样!3个基于SpringBoot 的图片识别处理系统送给你...
- C#使用IHttpModule接口修改http输出的方法浅谈
- DiscuzX模板制作-主题列表页_左边栏制作_V1
- java 32位_java8update下载
- 计算机房在五楼英语,“我住在五楼”怎么用英语表达?
- windows永久关闭445、3389端口
- 离散实验五 判断关系R 是否为等价关系(给定 R 的关系矩阵,据此判断所给关系 R 是否为等价关系)
- 关于Google翻译和语音朗读功能无法正常使用的说明
- 编写iptables模块实现不连续IP地址的DNAT-POOL
- k8s自定义controller三部曲之二:自动生成代码
- 使用opencv查找两张图片不同的部分
- UGUI简单实现炉石效果
热门文章
- 如果你的键盘也没有大小写和数字指示灯
- ssm毕设项目快递代收系统00pay(java+VUE+Mybatis+Maven+Mysql+sprnig)
- 计算机相关专利,计算机专业方向的专利申请
- IMSI,TMSI,MSISDN, MSRN 和 IMEI
- 企立方:拼多多商家运营思路
- 常州大学计算机学院陆明阳,计算机学院 朱家群
- 学是计算机审计的心得感受,计算机审计心得体会
- Java+Swing捕鱼达人源码
- Ocr识别之扫描笔应用
- matlab控制系统仿真论文,基于MATLAB的过程控制系统仿真毕业设计论文.doc