Safe Policy Optimization 复现

文章对比了RCPO、CRPO和CPO在PointGoal1、CarGoal1、Velocity-Walker2d任务上的性能,发现RCPO和CRPO能得出满足约束的解,但存在稳定性问题。CPO虽然奖励最高,但无法得到可行解。针对CRPO的不稳定性,文章提出了降低学习率和自适应调整α的改进方法,提升了训练效率和奖励。

复现结果

在 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(θ,λ)=JRπθ−λ⋅(JCπθ−d) L(\theta, \lambda)=J_R^{\pi_\theta} - \lambda\cdot(J_C^{\pi_\theta}-d) L(θ,λ)=

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值