近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,被认为是目前强化学习领域的SOTA方法,也是适用性最广的算法之一。本文将从PPO算法的基础入手,理解从传统策略梯度算法(例如REIFORCE算法)、自然策略梯度算法、信赖域策略优化算法(TRPO)直到PPO算法的演进过程,以及算法迭代过程中的优化细节。整体框图如下图所示。

图1. 本文整体框图
1. 传统策略梯度算法
1.1 从价值近似到策略近似
强化学习算法可以分为两大类:基于值函数的强化学习和基于策略的强化学习。
基于值函数的强化学习通过递归地求解贝尔曼方程来维护Q值函数(可以是离散的列表,也可以是神经网络),每次选择动作时会选择该状态下对应Q值最大的动作,使得未来积累的期望奖励值最大。经典的基于值函数的强化学习算法有Q-Learning、SARSA、DQN算法等。这些算法在学习后的Q值函数不再发生变化,每次做出的策略也是一定的,可以理解为确定性策略。
基于策略的强化学习不再通过价值函数来确定选择动作的策略,而是直接学习策略本身,通过一组参数 θ 对策略进行参数化,并通过神经网络方法优化 θ 。
基于策略的强化学习用参数化概率分布πθ(a|s)=P(a|s;θ)代替了基于值函数的强化学习中的确定性策略π:s→a,在返回的动作概率列表中对不同的动作进行抽样选择。
1.2 定义目标函数
基于参数化策略的思想,我们的目标就是找到那些可能获得更多奖励的动作,使它们对应的概率更大,从而策略就更有可能选择这些动作。为此,我们定义的最大化目标函数 J(θ) 如下:

其中 τ 是agent与环境交互产生的状态-动作轨迹 τ=(s1,a1,…,sT,aT) ,对 τ 求和代表的是与环境交互可能产生的所有情况。我们的目标是通过调整 θ ,使得获得更大奖励的轨迹出现的概率更高。
表示在策略 θ下,对所有可能的轨迹 τ,我们最大化其概率 P(τ;θ)和累积奖励 R(τ)的乘积之和,以此获得最大化累积奖励函数。
其中,轨迹 τ 在策略 πθ(a|s) 下发生的概率定义为:

表示为状态转移概率和动作选择概率的乘积,因为状态和动作决定轨迹。
P(s_t+1∣s_t,a_t) : 这是在给定当前状态 s_t 和动作 a_t 的情况下,下一个状态 s_t+1的条件概率。
πθ(at∣st) : 这是在给定当前状态 s_t 的情况下,选择动作 a_t 的概率,由策略 π_θ 决定,其中 θ 是策略的参数。
乘积 : 整个公式是一个从时间步 t=0到 T的乘积,表示在给定初始状态 s0的情况下,通过一系列动作 a0,a1,…,aT 到达最终状态 sT的联合概率。
1.3 导出策略梯度【策略的梯度导数指明优化方向】
与神经网络的优化思路相同,为了通过参数 θ 优化目标函数,我们需要计算目标函数 J(θ) 对 θ 的导数:

推导过程中使用了对数导数技巧,将 P(τ;θ) 表示为对数的形式,从而可以方便的重写为:

其中第一步中第一项的状态转移概率只与环境有关,而与 θ 无关。
然而,到目前为止的计算还需要对所有可能的轨迹进行求和,这在实际的RL问题中是难以处理的,我们需要利用轨迹样本进行梯度近似,表达式如下:

现在的表达式是完全可计算的,现在只需要给出策略 πθ 的明确定义,就可以计算得到 ∇θJ(θ) ,从而用策略梯度更新规则:

来对 θ 进行调整优化,从而不断迭代至最优策略。
这里给出两种常见的策略示例及其对应梯度。
- Softmax策略
对于离散动作空间,多使用Softmax策略。其定义如下:

对应的策略梯度为:

梯度的结果可以解释为观察到的特征向量减去所有动作的平均特征向量。因此,如果奖励信号很高并且观察到的向量与平均向量相差很大,就会有增加该动作概率的强烈趋势。
- 高斯策略
对于连续动作空间,多使用高斯策略。其定义如下

其中正态分布的均值
。
对应的策略梯度为:


1万+

被折叠的 条评论
为什么被折叠?



