PPO近端策略优化算法概述

Policy Gradient算法存在两个问题,一是蒙特卡罗只能回合更新,二是on-policy采集的数据只能使用一次。

对于第一个更新慢的问题,改用时序差分方法,引入critic网络估计V值,就能实现单步更新。

对于第二个数据利用率低的问题,引入重要性采样,就能用一个不同于当前策略的固定策略去采样很多的数据并反复利用。

总的来说,PPO(Proximal Policy Optimization)就是采用Actor-Critic架构和重要性采样对PG进行改进的算法,也是OpenAI默认的强化学习算法。

1. 重要性采样(Importance Sampling)

重要性采样是一种通过从分布q中采集数据,来估计分布p中数据期望的方法。公式中的p(x)/q(x)称为重要性系数,用于修正两个分布的差异。

 通过重要性采样就可以把on-policy转变为off-policy,提高数据利用率。

PPO近端策略优化算法概述_第1张图片

2. PPO-Penalty或PPO-Clip

但重要性采样中两个分布的差别不能太大,否则需要非常多的采样才能得到近似的结果。PPO就提出了两种控制两个分布间差异的方法。

  • PPO-Penalty:前身是TRPO(Trust Region Policy Optimization信任区域策略优化)。二者区别在于TRPO把KL散度作为一个约束,不容易求解;而PPO-Penalty直接把KL作为目标函数的一项(类似正则化)。
  • PPO-Clip:用clip函数裁剪掉过大或过小的重要性系数,易于实现。

PPO近端策略优化算法概述_第2张图片

3. 网络设置

  • Critic网络和A2C中一样,输入状态输出V值,目标就是使V值估计更准确也就是最小化TD_error。
  • Actor网络输入状态输出动作分布,目标是最大化期望奖励,不同点就在于损失函数。简单来说,PG中是(动作对数概率*未来折扣奖励和),优化一下是(动作对数概率*(未来折扣奖励和-baseline))。A2C中,baseline用V函数值替代,未来折扣奖励和Gt用Q函数值替代,就把PG里的(Gt-baseline)替换成了(Q-V)也就是优势函数A,再把Q统一成V就得到了(TD_target-V)也就是TD_error,所以loss就是(动作对数概率*优势函数)或者说是(动作对数概率*TD_error)。PPO的Actor和A2C相比,就是把动作概率变成了两个动作概率的比值也就是重要性系数,然后再clip一下或者加个KL项。

PPO近端策略优化算法概述_第3张图片

你可能感兴趣的:(强化学习,PPO,强化学习,近端策略优化,PG,A2C)