强化学习PPO:Proximal Policy Optimization Algorithms解读

2023-11-01

PPO算法是一类Policy Gradient强化学习方法,经典的Policy Gradient通过一个参数化决策模型\pi(a|s,\theta )来根据状态s确定动作,其参数更新是通过下式进行的:

\theta_{t+1} = \theta_{t} + \alpha \partial_{\theta_{t}} J(\theta_t)

J(\theta_t)用于衡量决策模型的优劣目标,决策模型的优化目标为寻找最优决策,使得该决策下整体价值最大。

\text{max}_{\pi}\ J(\theta) = E_{s,a\sim \pi}[\pi(a|s,\theta)Q_{\pi}(s,a)]

 因为最优决策\pi是未知的,一种简单思路是直接当前参数模型\pi_\theta进行寻优。称为Vanilla Policy Gradient。

1. Vanilla Policy Gradient

Vanilla Policy Gradient定义优化目标为:

\text{max}_{\theta }\ J(\theta) \\= E_{s,a\sim {\pi_{\theta }}}[\pi(a|s,\theta)A(s,a)]\\=\sum_\tau \sum_{t=0}^T \sum_a\pi(a|s_t,\theta)A(s_t,a)

  • \tau表示一轮episode,t表示episode中的某个时刻,T表示一轮episode的终态。
  • A(s_t,a_t)=Q(s_t,a_t)-v(s_t|w)=G(s_t,a_t)-v(s_t|w)称为Advantages estimates,其在原来预估Q(s_t,a_t)基础上减去了平均状态价值估计v(s_t|w),这么做好处是扭正不同状态价值间偏差,可以加快模型收敛,具体可以参考这篇

梯度计算式子:

\partial J(\theta) \\ =\sum_\tau \sum_{t=0}^T \sum_a\partial_{\theta}\pi(a|s_t,\theta)A(s_t,a) \\=\sum_\tau \sum_{t=0}^T \sum_a \pi(a|s_t,\theta) A(s_t,a) \frac{\partial_{\theta}\pi(a|s_t,\theta)}{\pi(a|s_t,\theta)} \\\doteq \sum_\tau \sum_{t=0}^T A(s_t,a_t) \frac{\partial_{\theta}\pi(a_t|s_t,\theta)}{\pi(a_t|s_t,\theta)} \\=\sum_\tau \sum_{t=0}^T \sum_a \pi(a|s_t,\theta) A(s_t,a) \frac{\partial_{\theta}\pi(a|s_t,\theta)}{\pi(a|s_t,\theta)} \\\doteq \sum_\tau \sum_{t=0}^T A(s_t,a_t) \partial_{\theta}\text{In}(\pi(a_t|s_t,\theta))

参数更新式子:

\theta_{t+1}=\theta + \alpha\partial_{\theta} J(\theta_t)

此外平均状态价值估计v(s_t|w)通过VE损失进行优化,其同Policy Gradient更新按照AC的框架进行两步迭代更新。

2. Trust Region Policy Optimization

前面我们所提到的Vanilla Policy Gradient算法是将训练分为多个epoch,每个epoch会根据当前决策模型采样多个episode组合成一个batch,并在该epoch中针对于该batch进行多轮训练。

由于该轮epoch的训练数据是根据上轮epoch的模型进行采样的,此时就可能出现更新的决策模型同采样决策模型不一致,这个不一致同off-policy所带来的问题是类似的,可能会导致模型训练有偏差。

虽然Vanilla Policy Gradient算法是on-policy的,但是由于对batch进行多轮训练,在实际上造成了target policy和behavior policy不一致的问题。因此Trust Region Policy Optimization(TRPO)根据off-policy在原来优化目标上添加了重要性采样。

J(\theta) = E_{s,a\sim {\pi_{\theta^k }}}[\frac{\pi(a|s,\theta)}{\pi(a|s,\theta^k)}A^{\theta^k}(s,a)]

上式中的\theta^k表示上轮模型参数,同时为了避免target policy \pi(a|s,\theta )和behavior policy\pi(a|s,\theta^k )变化太大,导致优化目标方差增大,因此还需要通过KL散度约束\pi(a|s,\theta )相比于\pi(a|s,\theta^k )变动不大,其约束了\pi(a|s,\theta )的变化区域,故称为Trust Region

D_{KL}(\pi(a|s,\theta )||\pi(a|s,\theta^k )) \leq \delta

直接根据上面目标以及约束很难进行优化,因此TRPO做了一定式子简化:

\text{max}_{\theta}\ J(\theta) \approx E_{s,a\sim {\pi_{\theta^k }}}[\pi(a|s,\theta)A^{\theta^k}(s,a)][\theta - \theta^k]=g[\theta - \theta^k] \\ s.t. \ D_{KL} \approx \frac{1}{2}[\theta - \theta^k]^T H[\theta - \theta^k] \leq \delta

同时其给出决策参数的更新式子,式子中的\alpha^j用于控制KL散度约束,此处采用了Backtracking line search技术,其通过设置多个\alpha^j因子,并在训练中不断从中选择一个因子使得约束满足同时梯度更新最大。

\theta_{t+1}=\theta_{t} + \alpha^j \sqrt{\frac{2\delta }{g^T_tH^{-1}g_t}}H^{-1}g

3. Proximal Policy Optimization 

TRPO有一个很大问题,在于其KL约束是通过惩罚项加到优化目标上去的,因此惩罚项的权重参数是一个超参数,其设置影响整体训练效果,虽然TRPO采用了Backtracking line search技术,可以自适应的去选择超参数,但是对于整体训练效果仍是有损的。

因此PPO认为KL约束既然是为了约束\pi(a|s,\theta )相比于\pi(a|s,\theta^k )变动不大,而优化目标已经包含了这两项,为什么不把这个约束添加到优化目标中。通过截断来约束r(\theta |\theta_k)变动在一定范围内,从而到达同KL散度约束类似的效果。

r(\theta |\theta_k)=\frac{\pi(a|s,\theta)}{\pi(a|s,\theta_k)}

J(\theta) = E_{s,a\sim {\pi_{\theta^k }}}(min[r(\theta|\theta_k)A^{\theta^k}(s,a), clip(r(\theta|\theta_k),1-\epsilon, 1+\epsilon)A^{\theta^k}(s,a)])

论文中也通过实验表明了PPO算法采样这种clip方式其效果比固定KL约束参数、自适应KL约束参数的方法都要好。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习PPO:Proximal Policy Optimization Algorithms解读 的相关文章

随机推荐

  • Selenium面试问题及答案30题版

    近期我会在博客中系统的更新一些关于Selenium的文章 也请大家多多关注下我的视频课程 入门 基于Java的Selenium3自动化测试完整教程 高级 Selenium Java高级架构课程
  • Flutter 使用Screen保持屏幕常亮不息屏

    有时候开发app可能会用到屏幕常亮 不让其息屏 比如你播放一个视频 你肯定不想突然间就跟随系统设置而息屏看不到视频了 所以务必要使用一些插件来控制屏幕的亮度和常亮 本人搜了好多 基本都是使用 wakelock 这个插件来实现不息屏操作 但是
  • hdfs如何赋予目录权限

    用户身份 在1 0 4这个版本的Hadoop中 客户端用户身份是通过宿主操作系统给出 对类Unix系统来说 将来会增加其他的方式来确定用户身份 比如Kerberos LDAP等 期待用上文中提到的第一种方式来防止一个用户假冒另一个用户是不现
  • 鸿蒙系统怎么没有微信界面,如果鸿蒙系统没有微信,你会选择用吗?

    原标题 如果鸿蒙系统没有微信 你会选择用吗 前段时间华为在东莞召开的开发者大会上 华为官方公布了40多个于鸿蒙深度合作的应用 但是有网友发现在这40多个应用中有我们熟知的QQ 微博 却唯独没有微信 这究竟是怎么一回事呢 这是因为腾讯坚持生物
  • Android 低功耗蓝牙摸索踩坑(更新中)

    系列文章目录 文章目录 系列文章目录 前言 一 Xamarin不用Nuget写低功耗蓝牙尝试 失败 二 Xamarin用Nuget Plugin BLE写低功耗蓝牙 三 Android Studio写低功耗蓝牙 总结 前言 本系列估计就一篇
  • Numpy的array与list的复制

    复习中记错了array的复制 以为也同list一样是用切片 list的复制方法如下 a 1 2 3 b a 而array的话 切片和赋值均指向自身 a b a b 均指b 要使用的复制方法如下 array2 array1 copy 对原始的
  • error PRJ0019: 工具从"执行注册"

    每次rebuild VC提示 工具从 执行注册 重新build 提示 生成 1 已成功 注释掉涉及到ACE部分的代码之后此错误消失 查CSDN MSDN无果 解决方法 突然想到VC在编译完毕之后会注册此OCX regsvr32的时候如果缺少
  • monodb,根据条件查询到指定数据,保存到另一张表中

    我这里有两张表 一个是db baike 一个是db baike address 从baike中根据条件读取数据 拿着这条数据在baike address中验证一下是否存在 如果不存在的话存到另一个张表中 我命名为baike city 根据t
  • 【二】Django - v 2.2 Models层

    Models层 模型类 继承自 django db models Model 每个类属性 表现一个数据字段 嵌套Meta声明更多选项 字段类型 通用属性 字段选项 说明 null True False 字段是否可以为NULL 允许数据库存储
  • 如何理解v-model指令

    v model指令的是 view层输入值影响data的属性值 data属性值发生改变会更新view层的数值变化 它负责监听用户的输入事件 从而更新数据 多用于表单组件的 双向数据绑定 它总是将vue实例中的数据作为数据来源 然后当输入事件发
  • Arduino STM32F103(BluePill)教程七 基于U8g2的软件IIC控制 OLED1306 128*64

    Arduino BluePill STM32 F103 教程七 基于U8g2的软件IIC控制 OLED1306 128 64 为什么之前有硬件IIC 这里又上软件IIC呢 因为之前在公司做了一个小项目 STM32硬件IIC经常卡死 加入看门
  • java opencv边缘提取

    1 下载opencv Releases OpenCV 2 找到jar包D opencv opencv build java 3 各种方式引入到项目中 这里直接buildpath 4 若报错no opencv java451 in java
  • 【蓝桥杯】第八届省赛 - 分巧克力(二分)

    儿童节那天有 K K K 位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有 N N N 块巧克力 其中第 i
  • 案例:scrapy图片数据爬取之ImagesPipeline

    1 需求 爬取站长素材中的高清图片 http sc chinaz com tupian 2 编码流程 创建和使用 Scrapy 工程 scrapy startproject imgPro 创建出爬虫文件 cd myscrapy scrapy
  • 去除摇一摇功能(hook技术)破解防模拟器检测

    某某社区摇一摇功能 App入口为 com qufan vp module LaunchActivity 思路 首次安装APP会进入一个引导页面和摇一摇检测页面 检测过后在本地产生一个Code 然后第二进入时候会找到这个code进行对比 如果
  • vue3安装及环境配置

    1 安装 Node js Node js 官网 https nodejs org en download 根据直接的版本去下载 安装成功后 在cmd控制台输入nonde v 和npm v 验证是否安装成功 配置默认安装目录和缓存日志目录 创
  • TIDB简介及TIDB部署、原理和使用介绍

    TiDB简介及TiDB部署 原理和使用介绍 从MySQL架构到TiDB 数据库分类 介绍TiDB数据库之前 先引入使用场景 如今的数据库种类繁多 RDBMS 关系型数据库 NoSQL Not Only SQL NewSQL 在数据库领域均有
  • 从“火热”到“退烧”,付费自习室将何去何从?

    近几年随着考编 考研大军的人数爆炸式增长 国内付费自习室也愈加火热 逐渐开始替代图书馆 咖啡厅等传统自习室 成为备考人群的新选择 2019年 国内第一家付费自习室在北京成立 此后 付费自习室数量大幅上升 掀起一股热潮 据新华网报道 仅仅这一
  • Clickhouse创建用户

    clickhouse创建用户 clickhouse创建新用户并配置权限 需要修改配置文件users xml 其中 要配置的内容包括 1 用户名 设为test 2 密码 需事先确定好 并用sha256加密 3 可访问的数据库 设为test 具
  • 强化学习PPO:Proximal Policy Optimization Algorithms解读

    PPO算法是一类Policy Gradient强化学习方法 经典的Policy Gradient通过一个参数化决策模型来根据状态确定动作 其参数更新是通过下式进行的 用于衡量决策模型的优劣目标 决策模型的优化目标为寻找最优决策 使得该决策下