策略梯度与OpenAI的当家算法:PPO(1)
Proximal Policy Optimization (PPO) 已经是OpenAI 的强化学习的默认算法。可见它的威力非同一般。
我们先看一下它能做什么?
没错,可以训练机器人跑步。
image from https://youtu.be/gn4nRCC9TwQ
没错,可以训练机器人踢球。
image from
在正式进入PPO之前,我们先从策略梯度的复习开始。
1. 策略梯度 Policy Gradient
Policy ? is a network with parameter ?
• Input: the observation of machine represented as a
vector or a matrix
• Output: each action corresponds to a neuron in output layer
测了π就是一个带参数集合 θ \theta θ的神经网络
- 输入: 对于环境的观察的向量
- 输出: 每一个动作action
以AI游戏为例:
(1) 旅程 Trajectory
在强化学习中,旅程Trajectory,是actor 与环境进行互动的数据集合。
它出现的最大概率是:
(2) 奖励 Reward
奖励是一种期望:
(3) 策略梯度 Policy Gradient
如何求得奖励期望最大化,策略梯度来是有力的工具。
为了加深理解,我们先看一个公式:
策略梯度的求解:
策略梯度其实就是:
- 用策略 π θ \pi_{\theta} πθ 与环境互动好多个?,收集数据(数据只能用一次)
- 收集的数据用策略梯度更新 θ \theta θ 产生新的策略
- 然后返回1
(3) 策略梯度 Policy Gradient 如何落地?
看起来策略梯度用代码实现是颇费工夫的,但是实际上,如果机器学习原理掌握比较好的同学,一眼可以看出玄机。
根据s生成a的过程,可以看做是分类的过程。经典的分类问题loss函数就是crossentropy:
2. 策略梯度 Policy Gradient 宝典
(1) 增加基础参考值:Add a Baseline
每次选择action的时候,Reward :R? 都是大于等0的数,按照我们的思路,R? 大的sample的概率就高,反之sample到的概率就小。
我们需要更加清晰的判断哪个行为的优劣,引入baseline可以让R? 有正,有负。
(2) 调整奖励范围
还是以游戏举例:整场游戏中的R? 不能代表某个状态s下选择a的奖励。我们需要针对每个行为,进行奖励。
只计算从当前action a开始到整场游戏结束的reward。
(3) Advantage Function
我们定义离开当前action的state的reward,越远,表示action的影响越小。这样我们就得到了 Advantage Function
=
本专栏图片、公式很多来自David Silver主讲的UCL-Course强化学习视频公开课和台湾大学李宏毅老师的深度强化学习课程,在这里,感谢这些经典课程,向他们致敬!