Add files via upload

This commit is contained in:
Yiyuan Yang
2022-11-22 18:48:04 +08:00
committed by GitHub
parent e77bf79e11
commit 7663e958d6

View File

@@ -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》中的例子 > 举一个来自蘑菇书《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)期望正确,但是前提是能采样到这样的点。在现实采样中,很有可能因为采样次数不足导致无法采样到这样的点,导致最终重要性采样失败。 > 这里的红线表示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散度与损失函数均在增加加了裁剪之后的损失函数可以维持在一定水平内。 可见随着时间步增加KL散度与损失函数均在增加加了裁剪之后的损失函数可以维持在一定水平内。
作者通过实验发现,当$\epsilon=0.2$时效果最好。 作者通过实验发现,当$\epsilon=0.2$时效果最好。
#### 2. 自适应惩罚系数PPO-Penalty #### 2. 自适应惩罚系数PPO-pen
传承TRPO的思想,使用KL散度来衡量新旧策略分布之间的差距。但是这里使用了一个自适应的参数$\beta$,算法的具体流程为: 传承TRPO的思想,使用KL散度来衡量新旧策略分布之间的差距。但是这里使用了一个自适应的参数$\beta$,算法的具体流程为:
@@ -166,15 +166,15 @@ PPO-clip方法并未使用KL散度作者画图对比其他函数随着更新
#### 3.PPO算法总览 #### 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}$$ $$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任务上使用不同超参数的效果结果如下 作者对比了不加裁剪与惩罚裁剪惩罚三种损失函数这里并未使用状态价值函数共享结构与entropy bouns即公式$(6),(10),(12)$在OpenAI MuJoCo physics engine任务上使用不同超参数的效果结果如下
![image-20221103145827303](image-20221103145827303.png) ![image-20221103145827303](img/PPO_4.png)
在该任务上PPO-clip算法获得了最高的分数自适应惩罚系数分数略高于固定惩罚系数。 在该任务上PPO-clip算法获得了最高的分数自适应惩罚系数分数略高于固定惩罚系数。
#### 2. 对比了其他连续控制算法 #### 2. 对比了其他连续控制算法
![image-20221103150107326](image-20221103150107326.png) ![image-20221103150107326](img/PPO_5.png)
PPO-clip基本上超越了原有的算法。 PPO-clip基本上超越了原有的算法。
@@ -198,4 +198,12 @@ PPO-clip基本上超越了原有的算法。
### 五. 结论 ### 五. 结论
我们引入了近端策略优化这是一组利用多个随机梯度上升时期一次采样多次利用来执行每次策略更新的策略优化方法。这些方法具有TRPO的稳定性和可靠性但实现起来要简单得多只需要对普通策略梯度实现进行几行代码更改适用于更一般的设置(例如,当为策略和值函数使用联合架构时),并且具有更好的总体性能。 我们引入了近端策略优化这是一组利用多个随机梯度上升时期一次采样多次利用来执行每次策略更新的策略优化方法。这些方法具有TRPO的稳定性和可靠性但实现起来要简单得多只需要对普通策略梯度实现进行几行代码更改适用于更一般的设置(例如,当为策略和值函数使用联合架构时),并且具有更好的总体性能。
### 六、作者信息
于天琪,就读于哈尔滨工程大学陈赓实验班
知乎主页https://www.zhihu.com/people/Yutianqi
qq:2206422122