From 7663e958d6a2e073e1f33b45227f97771dfeaa28 Mon Sep 17 00:00:00 2001 From: Yiyuan Yang Date: Tue, 22 Nov 2022 18:48:04 +0800 Subject: [PATCH] Add files via upload --- ...Proximal Policy Optimization Algorithms.md | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/papers/Policy_gradient/Proximal Policy Optimization Algorithms.md b/papers/Policy_gradient/Proximal Policy Optimization Algorithms.md index d372c31..f8fcc2f 100644 --- a/papers/Policy_gradient/Proximal Policy Optimization Algorithms.md +++ b/papers/Policy_gradient/Proximal Policy Optimization Algorithms.md @@ -80,7 +80,7 @@ $$Var_{x\sim p}[\frac{q(x)}{p(x)}f(x)]=\mathbb{E}_{x \sim p}[(\frac{q(x)}{p(x)}f > 举一个来自蘑菇书《Easy RL》中的例子: > -> ![image-20221101210127972](image-20221101210127972.png) +> ![image-20221101210127972](img/PPO_1.png) > > 这里的红线表示f(x)的曲线,蓝,绿线表示不同分布的x,其中纵坐标越高,在该分布中越容易被取到。其中p(x)的样本分布中,计算f(x)期望为负。实际上在利用重要性采样,从q中采样数据估计p时,有极高的几率从q(x)分布采样到的x计算f(x)为正,极少采样到x计算f(x)为负。虽然在取得为负的点计算期望时会乘以一个特别大的重要性权重使得重要性采样得到f(x)期望正确,但是前提是能采样到这样的点。在现实采样中,很有可能因为采样次数不足导致无法采样到这样的点,导致最终重要性采样失败。 @@ -141,13 +141,13 @@ $$L^{CLIP}(\theta)=\hat{\mathbb{E}}_t[min(r_t(\theta) \hat A_t,clip(r_t(\theta), 这里如此改造损失函数是为了**限制损失函数在一定范围内**,从而**限制梯度**,最终**限制策略参数的更新幅度**,控制前后两次策略的分布差距,使得在使用上一次策略采样的样本更新有效。 -PPO-clip方法并未使用KL散度,作者画图对比其他函数随着更新的变化情况![image-20221102181630708](image-20221102181630708.png) +PPO-clip方法并未使用KL散度,作者画图对比其他函数随着更新的变化情况![image-20221102181630708](img/PPO_2.png) 可见随着时间步增加,KL散度与损失函数均在增加,加了裁剪之后的损失函数可以维持在一定水平内。 作者通过实验发现,当$\epsilon=0.2$时效果最好。 -#### 2. 自适应惩罚系数(PPO-Penalty) +#### 2. 自适应惩罚系数(PPO-pen) 传承TRPO的思想,使用KL散度来衡量新旧策略分布之间的差距。但是,这里使用了一个自适应的参数$\beta$,算法的具体流程为: @@ -166,15 +166,15 @@ PPO-clip方法并未使用KL散度,作者画图对比其他函数随着更新 #### 3.PPO算法总览 -使用了重要性采样,PPO可以重复使用上一次的采样数据多次更新。将Loss Function更换为$L^{CLIP}\,\,or\,\,L^{KLPEN}$。 +使用了重要性采样,PPO可以重复使用上一次的采样数据多次更新。将LossFunction更换为$L^{CLIP}\,\,or\,\,L^{KLPEN}$。 -结合流行的方法,加入RL中的''正则化''$entropy \quad bonus\,\,S[\pi_\theta](s_t)$(为了增加探索的能力)。计算advantage减少方差时候也会用到状态价值函数$V_\theta(s_t)$(有时策略与价值会共享网络),所以增加了$L_{t}^{LF}(\theta)=(V_\theta(s_t)-V_t^{targ})^2$来训练网络能够学习估计出较为真实的状态价值函数。最后的损失函数就是如下形式: +结合流行的方法,加入RL中的''正则化''$entropy bonus\,\,S[\pi_\theta](s_t)$(为了增加探索的能力)。计算advantage减少方差时候也会用到状态价值函数$V_\theta(s_t)$(有时策略与价值会共享网络),所以增加了$L_{t}^{LF}(\theta)=(V_\theta(s_t)-V_t^{targ})^2$来训练网络能够学习估计出较为真实的状态价值函数。最后的损失函数就是如下形式: $$L_t^{CLIP+VF+S}(\theta)=\hat{\mathbb{E}}_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\theta)+c_2S[\pi_\theta](s_t)]\tag{13}$$ 算法如下 -![image-20221103144745532](image-20221103144745532.png) +![image-20221103144745532](img/PPO_3.png) ### 四. 实验 @@ -182,13 +182,13 @@ $$L_t^{CLIP+VF+S}(\theta)=\hat{\mathbb{E}}_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\the 作者对比了:不加裁剪与惩罚,裁剪,惩罚三种损失函数(这里并未使用状态价值函数共享结构与entropy bouns)即公式$(6),(10),(12)$在OpenAI MuJoCo physics engine任务上使用不同超参数的效果,结果如下: -![image-20221103145827303](image-20221103145827303.png) +![image-20221103145827303](img/PPO_4.png) 在该任务上,PPO-clip算法获得了最高的分数,自适应惩罚系数分数略高于固定惩罚系数。 #### 2. 对比了其他连续控制算法 -![image-20221103150107326](image-20221103150107326.png) +![image-20221103150107326](img/PPO_5.png) PPO-clip基本上超越了原有的算法。 @@ -198,4 +198,12 @@ PPO-clip基本上超越了原有的算法。 ### 五. 结论 -我们引入了近端策略优化,这是一组利用多个随机梯度上升时期(一次采样多次利用)来执行每次策略更新的策略优化方法。这些方法具有TRPO的稳定性和可靠性,但实现起来要简单得多,只需要对普通策略梯度实现进行几行代码更改,适用于更一般的设置(例如,当为策略和值函数使用联合架构时),并且具有更好的总体性能。 \ No newline at end of file +我们引入了近端策略优化,这是一组利用多个随机梯度上升时期(一次采样多次利用)来执行每次策略更新的策略优化方法。这些方法具有TRPO的稳定性和可靠性,但实现起来要简单得多,只需要对普通策略梯度实现进行几行代码更改,适用于更一般的设置(例如,当为策略和值函数使用联合架构时),并且具有更好的总体性能。 + +### 六、作者信息 + +于天琪,就读于哈尔滨工程大学陈赓实验班 + +知乎主页:https://www.zhihu.com/people/Yutianqi + +qq:2206422122 \ No newline at end of file