PPO算法是一种强化学习算法,主要思想是控制智能体每次更新策略的变化幅度,确保它不会偏离当前的策略太远,从而保持稳定性。
在说PPO算法之前,我们先说一下Actor-Critic算法和A2C算法。
Actor-Critic算法
Actor-Critic算法如其名,由两个模型构成,一个是演员模型,另外一个是评论家模型。演员负责选择动作,它的内部有一个概率分布,这个概率分布又被称为“策略”。评论家模型是一个辅助模型,负责预估动作的收益,也就是从状态开始,选择动作后,直到整个动作结束,所积累的奖励之和的期望。这种收益又被称为"状态动作价值"
下面介绍一下这个算法的过程步骤:
- Actor接收环境产生动作,
- Critic根据状态和动作得出状态动作价值。Actor用来更新参数
- 环境接收到后,更新状态,演员再通过生成
- 环境给出奖励,Critic用来更新参数
演员的loss:状态对动作价值越大,演员就越要强化,否则就要弱化 评论家的loss:评论家在得到新的信息后,需要改进自己预估的能力。
A2C算法
A2C算法是在Actor-Critic算法上的改进。在其中,演员不参考评论家预测的收益大小来更新参数,而是根据实际收益超出评论家预期收益的程度来更新参数。这种“超出预期的程度”被称为优势(advantage)。下面用Adv来表示。
下面介绍一下这个算法的步骤:
- Actor接收环境产生动作,环境受到后产生新的状态和奖励
- Critic根据状态估计状态价值,并计算优势
- Actor用更新参数
- Critic用更新参数
PPO算法
PPO算法可以看成A2C算法的特殊形式。
PPO的思路是想维持训练的稳定性,让策略的更新幅度不要太大。
在PPO中,Actor的loss是,其中p是我们本次参数更新前的策略,p'是上一次参数更新前的策略,这个p'就是我们用来限制p的东西。
当且很大时,这个学习率会变得很小。
现在,我们已经限制了策略的更新幅度,但是还缺少一个熔断机制,即如果策略的更新幅度还是太大,我们要停止策略的参数更新。
综上,我们总结PPO算法为一种能限制策略变化幅度,且具有熔断机制的强化学习优化算法。
本篇博客改编于:【强化学习】直通PPO算法 - TRiddle的文章 - 知乎 zhuanlan.zhihu.com/p/643751150