强化学习笔记------第五章----近端优化策略(PPO)(超详细)

news/2024/5/18 23:51:21 标签: 强化学习

本章数学问题太过复杂,建议去看看李宏毅老师这部分的内容,在此只贴出部分关于PPO的知识总结。

基于on-policy的policy gradient有什么可改进之处?或者说其效率较低的原因在于?
经典policy gradient的大部分时间花在sample data处,即当我们的agent与环境做了交互后,我们就要进行policy model的更新。但是对于一个回合我们仅能更新policy model一次,更新完后我们就要花时间去重新collect data,然后才能再次进行如上的更新。

所以我们的可以自然而然地想到,使用off-policy方法使用另一个不同的policy和actor,与环境进行互动并用collect data进行原先的policy的更新。这样等价于使用同一组data,在同一个回合,我们对于整个的policy model更新了多次,这样会更加有效率。

使用important sampling时需要注意的问题有哪些。
我们可以在important sampling中将 pp 替换为任意的 qq,但是本质上需要要求两者的分布不能差的太多,即使我们补偿了不同数据分布的权重,当我们对于两者的采样次数都比较多时,最终的结果时一样的,没有影响的。但是通常我们不会取理想的数量的sample data,所以如果两者的分布相差较大,最后结果的variance差距(平方级)将会很大。

基于off-policy的importance sampling中的 data 是从 θ \theta θ’sample 出来的,从 θ \theta θ 换成 θ ′ \theta' θ 有什么优势?

使用off-policy的importance sampling后,我们不用 \thetaθ 去跟环境做互动,假设有另外一个 policy θ ′ \theta' θ ,它就是另外一个actor。它的工作是他要去做demonstration, θ ′ \theta' θ的工作是要去示范给 θ \theta θ 看。它去跟环境做互动,告诉 $\theta$ 说,它跟环境做互动会发生什么事。然后,借此来训练\thetaθ。我们要训练的是 θ \theta θ θ ′ \theta' θ只是负责做 demo,负责跟环境做互动,所以 sample 出来的东西跟 \thetaθ 本身是没有关系的。所以你就可以让 θ ′ \theta' θ做互动 sample 一大堆的data,\thetaθ 可以update 参数很多次。然后一直到 \thetaθ train 到一定的程度,update 很多次以后, θ ′ \theta' θ再重新去做 sample,这就是 on-policy 换成 off-policy 的妙用。

在本节中PPO中的KL divergence指的是什么
本质来说,KL divergence是一个function,其度量的是两个action (对应的参数分别为 θ \theta θ θ ′ \theta' θ )间的行为上的差距,而不是参数上的差距。这里行为上的差距(behavior distance)可以理解为在相同的state的情况下,输出的action的差距(他们的概率分布上的差距),这里的概率分布即为KL divergence。

请问什么是重要性采样呀?
使用另外一种数据分布,来逼近所求分布的一种方法,算是一种期望修正的方法,公式是:在这里插入图片描述
我们在已知 q的分布后,可以使用上述公式计算出从 p 分布的期望值。也就可以使用 q 来对于 p 进行采样了,即为重要性采样。

请问on-policy跟off-policy的区别是什么?
on-policy:生成样本的policy(value function)跟网络更新参数时使用的policy(value function)相同。典型为SARAS算法,基于当前的policy直接执行一次动作选择,然后用这个样本更新当前的policy,因此生成样本的policy和学习时的policy相同,算法为on-policy算法。该方法会遭遇探索-利用的矛盾,光利用目前已知的最优选择,可能学不到最优解,收敛到局部最优,而加入探索又降低了学习效率。epsilon-greedy 算法是这种矛盾下的折衷。优点是直接了当,速度快,劣势是不一定找到最优策略。

请简述下PPO算法。其与TRPO算法有何关系呢?
PO算法的提出:旨在借鉴TRPO算法,使用一阶优化,在采样效率、算法表现,以及实现和调试的复杂度之间取得了新的平衡。这是因为PPO会在每一次迭代中尝试计算新的策略,让损失函数最小化,并且保证每一次新计算出的策略能够和原策略相差不大。具体来说,在避免使用important sampling时由于在 θ \theta θ 下的 p$\theta$ (at | st)跟 在 θ ′ \theta' θ下的 p $\theta’$ (at | st)差太多,导致important sampling结果偏差较大而采取的算法。


http://www.niftyadmin.cn/n/1182622.html

相关文章

脚本编程基础知识点总结

脚本编程基础知识点总结 一:关于脚本 1:linux下的脚本简单的概括起来就是将多个命令,变量 嵌套与不同的控制语句及函数中而组合起来的一个顺序执行命令的批处理任务2:在linux中一个脚本的展开需以#!/bin/bash开始下面可以附加一些…

a标签中的href属性为什么会取不到值的

2012年4月27日 14:20:04 <a href"application-case-download.action?id${applicationCase.id}" >下载</a> 这样就可以就可以就取到值的&#xff0c;但是要是下面的这种写法就没有值 <a href"application-case-download.action?id"${ap…

综合布线基础:无线网络

无线网络前言分析 随着网络的广泛应用&#xff0c;人们需要根据不同的要求选择不同的网络方案&#xff0c;但传统的有线网络由于受设计和环境条件的限制&#xff0c;在组建和维护方面存在着一系列的问题&#xff0c;特别是当涉及网络移动和重新布局时&#xff0c;发展一种可行的…

linux下vim命令详解[转]

linux下vim命令详解[转] 高级一些的编辑器&#xff0c;都会包含宏功能&#xff0c;vim当然不能缺少了&#xff0c;在vim中使用宏是非常方便的&#xff1a;:qx 开始记录宏&#xff0c;并将结果存入寄存器xq 退出记录模式x 播放记录在x寄存器中的宏命令稍微解释一下&#xff0c;当…

通过Console口本地加载系统程序

以下内容摘自目前正在全国热销、已加码重印的《Cisco/H3C交换机配置与管理完全手册》&#xff08;第二版&#xff09;。新上市的姊妹篇《Cisco/H3C高级配置与管理技术手册》同步热销中。卓越网、京东网等有售。15.2.1 通过Console口本地加载系统程序 如果用于加载的交换机引…

C#异常类相关总结

C#异常类一、基类ExceptionC#异常类二、常见的异常类1、SystemException类:该类是System命名空间中所有其他异常类的基类。&#xff08;建议&#xff1a;公共语言运行时引发的异常通常用此类&#xff09;2、ApplicationException类&#xff1a;该类表示应用程序发生非致命错误时…

发布jQuery表单验证插件 - JQuery.validator.js

经常在项目中需要验证表单中的控件必填和数字等&#xff0c;因此我写了个基于jquery的验证插件。 效果如下&#xff1a; 在线测试地址&#xff1a;猛击我 参数说明&#xff1a; 以下是这个插件提供的参数及其默认值&#xff1a; required: false,//是否是必填项 formId: "…

使用jstl记录页面的序号

2019独角兽企业重金招聘Python工程师标准>>> 需求是&#xff1a; 在每一条记录的前面加上这条记录的序号&#xff0c;比如1&#xff0c;2&#xff0c;3...这样的顺序 解决&#xff1a;先求出当前页面上一个页面的总数是多少&#xff0c;再和本页的序数相加&#x…