Safe Policy Optimization 复现

news2025/2/3 15:58:24

复现结果

在 PointGoal1、CarGoal1、Velocity-Walker2d 三个任务上测试了 RCPO,CRPO 以及 Safe-Policy-Optimization 中实现的 CPO,PPO-Lag 算法。

CarGoal

在这里插入图片描述

PointGoal

PointGoal1 和 CarGoal1 任务相对比较困难,在探索初期就很容易违反约束。

PPO-Lag 和 TRPO-Lag 都不能得到满足约束的解,故没有在途中画出。

使用 RCPO 将拉格朗日乘子初值设置为 2 之后,可以跑出可行解,但是 reward 不高,且仍然会出现震荡的现象。

使用 CRPO 可以跑出可行解,reward 与 RCPO 持平,后面会对其进行修改。

另外尝试使用 CPO,发现虽然 reward 最高,但是得不到可行解。

Walker2d

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6jjGDce1-1689530625453)(results.assets/wk.png)]

在 Velocity-Walker2d 中使用 ppo-lag 会产生周期性的震荡。原因是 KaTeX parse error: Undefined control sequence: \part at position 7: \frac{\̲p̲a̲r̲t̲ ̲L}{\part\lambda…,而 λ \lambda λ 增大又会使得 EpCosts 减小。如果 λ \lambda λ 更新过快,就会导致这两个过程的时间差较长,从而产生周期较大的波动。

这个任务比较简单,其他的算法差别不大。

对CRPO的改进

在PointGoal1 和 CarGoal1中发现 CRPO 训练过程中不稳定,而且训练到一定程度的时候 reward 难以继续提高。因为这两个任务的约束比较强,即使在没有充分探索的前期就很容易违反约束。CRPO 在违反约束时立即转向,导致很容易被束缚住而探索不到好的策略。同时,cost 负梯度和 reward 梯度的方向一般是相反的,就会导致参数发生震荡。

因此做了两点改进:

  1. 减小学习率。
  2. 在违反约束时参数更新方向不再是单一的减小 cost 的方向,而是 cost 的负梯度 * alpha + reward 的梯度 * (1-alpha)

第 2 点中的 alpha 尝试了固定值(0.7,0.85)以及自适应值(类似 PDO 更新拉格朗日乘子),发现自适应的更新 alpha 效果更好,与改进前相比,前期训练表现提升较快,也能得到满足约束的解,并且 reward 有较大提高。当然,与标准的 CRPO 相比这会导致训练过程中存在违反约束的时间增加。

CarGoal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zTJMjRj3-1689530625454)(results.assets/cg2.png)]

PointGoal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJCGPaD4-1689530625454)(results.assets/pg2.png)]

思考

构造拉格朗日函数:
L ( θ , λ ) = J R π θ − λ ⋅ ( J C π θ − d ) L(\theta, \lambda)=J_R^{\pi_\theta} - \lambda\cdot(J_C^{\pi_\theta}-d) L(θ,λ)=JRπθλ(JCπθd)
原问题等价于如下无约束问题:

max ⁡ θ min ⁡ λ ≥ 0 L ( θ , λ ) \max_\theta \min_{\lambda\geq 0} L(\theta, \lambda) θmaxλ0minL(θ,λ)
其拉格朗日对偶问题是原问题的一个上界:

min ⁡ λ ≥ 0 max ⁡ θ L ( θ , λ ) \min_{\lambda\geq 0}\max_\theta L(\theta, \lambda) λ0minθmaxL(θ,λ)
PDO 以及 RCPO 优化的是对偶问题,用较快速度更新 θ \theta θ,较慢速度更新 λ \lambda λ

而 CRPO 可以看作直接优化原问题:给定一个 θ \theta θ,如果约束都被满足,那么最优的 λ \lambda λ 为 0,此时对 θ \theta θ 求梯度就是 J R π θ J_R^{\pi_\theta} JRπθ θ \theta θ 的梯度;如果有一个约束没有满足,那么对应的 λ \lambda λ 会趋向无穷大,这时对 θ \theta θ 求梯度就是 J C π θ J_C^{\pi_\theta} JCπθ θ \theta θ 的梯度。

由此猜测对于多约束问题,除了论文中的随机挑选一个违反的约束进行优化,可能还可以同时优化所有违反的约束。

局限性

PDO,RCPO 也可以看作是 reward shaping 的方法。虽然不再需要手动调节参数,但是 lambda 初值和学习率设置不当会导致训练难以收敛。如果学习率过高,表现也会周期性波动;如果过低,就很难收敛到合法解。同样,如果 lambda 初值距离最优值太远,也会很难收敛到合法解。

而 CRPO 在训练后期震荡还是比较明显。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dart语言(01)环境安装基础语法总结

0 说明: 说明:该系列教程主要是为有一定语言基础 C/C的程序员,快速学习一门新语言所采用的方法,属于在C/C基础上扩展新语言只是体系的方式。 1 Dart语言简介 Dart亮相于2011年10月10日至12日在丹麦奥尔胡斯举行的GOTO大会&…

【动手学深度学习】--09.PyTorch神经网络基础

文章目录 PyTorch神经网络基础1.层和块1.1自定义块1.2顺序块1.3在前向传播函数中执行代码 2.参数管理2.1参数访问2.1.1目标参数2.1.2一次性访问所有参数2.1.3从嵌套块收集参数 2.2参数初始化2.2.1内置初始化2.2.2自定义初始化 2.3参数绑定 3.自定义层3.1不带参数的层3.2带参数的…

Python爬虫学习笔记:1688商品详情API 开发API接口文档

1688API接口是阿里巴巴集团推出的一种开放平台,提供了丰富的数据接口、转换工具以及开发资源,为开发者提供了通用的应用接口及大量数据资源,支持开发者在1688上进行商品搜索、订单管理、交易报表及物流等方面的操作。 1688API接口主要包含以…

解密成功之道!加湿制冷设备企业如何借助CRM系统降低经营成本?

如何降低企业经营成本的同时提高效率是加湿制冷设备企业关注的重要问题。在这篇软文中,我们将探讨如何通过CRM系统来实现这一目标。企业可以借助CRM系统提高客户关系管理水平,优化销售流程,提升售后服务,从而降低成本,…

价格监测的作用有哪些

随着品牌的发展,销售渠道也会逐步增多,渠道中的问题也会逐渐显现,比如低价、乱价、窜货、假货,所以品牌一般都会进行控价治理,控价最重要的一步便是价格监测,监测出来的价格高低,能直接反应渠道…

抑郁症缓解方法:从心理到行为,全方位提升生活质量

抑郁症是一种常见的心理疾病,不仅仅是心情低落,它还伴随着一系列的身体和心理症状。在应对抑郁症时,除了积极寻求医学专业人士的帮助之外,以下这些招数也可以帮助你缓解抑郁症。 1.保持规律的生活习惯:抑郁症患者往往会…

小程序地图个性化样式组件要收费了!

地图个性化样式组件 自2023年6月29日0点起,该能力需要先购买再使用。若未购买,届时将无法使用该能力。具体购买方式见付费管理。自2023年6月29日0时起,个性化地图配置界面的入口统一为微信公众平台-付费管理,请从此入口进入&#…

STUN/TURN/ICE

RFC 5389 - Session Traversal Utilities for NAT (STUN) https://www.cnblogs.com/pannengzhi/p/5041546.html https://www.cnblogs.com/pannengzhi/p/5048965.html STUN : Session Traversal Utilities for NAT, 一个协助穿越NAT的工具,运行在UDP和TCP之上。 NA…

yolov5(v7.0)网络修改实践一:集成YOLOX的backbone(CSPDarknet和Pafpn)到yolov5(v7.0)框架中

yolov5太好用了,无论是实际做工程还是学习研究,yolov5都比较好上手,而且现在工业界yolov5也应用广泛。但是,作为学习研究,有不少在yolov5之后提出的涨点算法,还是有价值进行研究的,也便于跟进当…

高效管理物流:利用批量查询申通物流信息的技巧

随着电子商务的飞速发展,快递已经成为了现代人生活中不可或缺的一部分。作为国内一家领先的快递公司,申通快递服务广泛,覆盖全国各地。在使用申通快递服务时,我们通过申通快递单号可以方便地查询物流信息。然而,许多人…

python开发项目基于语音识别的智能垃圾分类系统的设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

Ae 效果:CC Mr. Smoothie

风格化/CC Mr. Smoothie Stylize/CC Mr. Smoothie CC Mr. Smoothie(平滑先生)效果可以从一个图层上的两个点进行颜色采样,并将这个两点之间的颜色重映射到另一个图层上,可通过控制重映射的平滑度从而创建迷幻的外观效果。 ◆ ◆ …

图像处理之高斯滤波

文章目录 高斯函数1.一维高斯函数2. 二维高斯函数 高斯滤波1.高斯核生成2.滤波过程 高斯函数 高斯函数广泛应用于统计学领域,用于表述正态分布,在信号处理领域,用于定义高斯滤波器,在图像处理领域,二维高斯核函数常用…

创建一个类Person的简单实例

创建一个类Person的简单实例 创建一个类Person,包含以下属性:姓名(name)、年龄(age)、朋友(friends数组)、问候(sayhi方法,输出问候语,例如&#…

将TXT转化为PDF的软件,分享两个简单的方法!

在数字化时代,文档的传递和共享已经成为我们日常工作中的一部分。然而,有时我们可能需要将文本文件(如TXT格式)转换为PDF格式,以便更方便地共享、打印或存档。PDF格式的文件具有普遍的兼容性,可以在不同的设…

ESP32-C3 VSCode开发环境搭建

之前的文章 ESP32MicroPython开发环境的搭建 介绍了ESP32 MicroPython开发环境的搭建,此次计划采用ESP32-C3做小飞机主控,不太适合用MicroPython,要用ESP-IDF原生框架,因为平时一直用vs code编辑器,所以就选了vs code做…

数据库的扩展策略

了解不同的数据库扩展技术可以帮助我们选择适合我们需求和目的的合适策略。 因此,在本文中,我们将展示不同的解决方案和技术,用于扩展数据库服务器。它们分为读取和写入策略。 读取/加载 有时我们的应用程序承受着巨大的负载。为了解决这个…

1.1基于stc89c51系例单片机的空气温湿度检测报警系统

基于STC89C51系列单片机的空气温湿度检测报警系统 文章目录 基于STC89C51系列单片机的空气温湿度检测报警系统概述项目背景硬件设计1. STC89C51单片机2. DHT11温湿度模块3. LCD1602显示模块4. 人机交互模块5. 电源模块 软件设计1. 硬件初始化2. DHT11数据读取3. 数据显示4. 报警…

浅读-《深入浅出Nodejs》

这次算是重读 深入浅出Nodejs,了解到很多之前忽略的细节,收获蛮多,这次顺便将其记录分享,对学习和了解Nodejs有及其大的帮助。 1.Nodejs 事件驱动、非阻塞IO,一个开源和跨平台的 JavaScript 运行时环境;异…

手机直播app源码部署搭建:带货潮流,商城功能!

随着互联网时代的迅猛发展,手机直播app源码平台早已成为了人们获取资讯、娱乐放松等方式的主要载体,手机直播app源码平台的日益火爆,也让商人们有了一个新兴的想法出现:直播app平台如此火爆,平台的用户也如此庞大&…