赞
踩
近端策略优化算法 (Proximal Policy Optimization,PPO) 即属于 AC 框架下的算法, 在采样策略梯度算法训练 方法的同时, 重复利用历史采样的数据进行网络参数更新, 提升了策略梯度方法的学习效率。实际计算时, 需 要从环境中采样很多轨迹 τ ,然后按照上述策略梯度公式 (或者添加各种可能优化) 对策略函数参数 θ 进行更新。 但是由于 τ 是从概率分布 pθ(τ) 中采样得到, 一旦策略函数参数 θ 更新, 那么概率分布 pθ(τ) 就会发生变化, 因 而之前采样过的轨迹便不能再次利用。所以策略梯度方法需要在不断地与环境交互中学习而不能利用历史数据。 因而这种方法的训练效率低下。
策略梯度方法中, 负责与环境交互的演员与负责学习的演员相同, 这种训练方法被称为同策略 (On-Policy) 训练方法。相反, 异策略 (Off-Policy) 训练方法则将这两个演员分离, 固定一个演员与环境交互而不更新它, 而 将交互得到的轨迹交由另外一个负责学习的演员训练。异策略的优势是可以重复利用历史数据, 从而提升训练 效率。近端策略优化就是策略梯度的异策略版本。由于异策略的实现依赖于重要性采样 (Importance Sampling), 下面将首先介绍重要性采样的基本概念,在此基础上介绍近端策略优化算法以及相关变种。
PPO 重要的突破就是在于对新旧新旧策略器参数进行了约束, 希望新的策略网络和旧策略网络的越接近越 好。近端策略优化的意思就是: 新策略网络要利用到旧策略网络采样的数据进行学习, 不希望这两个策略相差 特别大,否则就会学偏。
假设随机变量 x 服从概率分布 p,如果需要计算函数 f(x) 的期望, 那么可以从分布 p 中采样得到若干数据xi,然后使用如下公式进行近似计算:
如果 N 足够大,那么上式的结果将无限趋近于真实的期望。
如果无法从分布 p 中采样, 只能从分布 q 中采样 xi ,由于是从另外一个分布中采样得到的 xi ,就不能直接 使用上面公式计算 Ex∼p[f(x)],因为此时 x 服从分布 q。需要对 Ex∼p[f(x)] 加以变换, 具体来说, PPO 算法利 用重要性采样的思想, 在不知道策略路径的概率 p 的情况下, 通过模拟一个近似的 q 分布, 只要 p 同 q 分布不 差的太远,通过多轮迭代可以快速参数收敛。这个重要性采样思想如下面公式所示:
从 q 中每采样一个 xi 并计算 f(xi ),都需要乘上一个重要性权重来修正这两个分布的差异, 因此这种方法 被称为重要性采样。这样就可以实现从分布 q 中采样, 但计算当 x 服从分布 p 时 f(x) 的期望。其中 q 可以是任 何一个分布。
但重要性采样依然存在一个问题。我们用 q 代替了 p 来采样 x ,但是两个随机变量的分布, 即使均值 mean 一样, 也不代表方差 variance 一样, 因此, 如果 p(x) 比 q(x) 的数值很大, 就会造成方差很大。理论上来说, 如果采样次数很多, p 和 q 得到的期望会是一样的。然而在实践中受制于采样次数有限, 分布 q 不能够和 p 差距太大,否则结果可能会差别很大。
重要性采样中分布 q 和 p 差距过大可能引起的问题
如上图所示, 对于 q 右侧概率大而左侧概率小, p 则反之, 从 q 中采样就会经常采样得到较多右侧数据点, 而较少有左侧的数据点。但由于重要性采样, 右侧会赋予较低的权重, 左侧赋予极高的权重, 因此计算得到的 f(x) 期望仍然是负的。但是, 由于 q 左侧概率很低, 如果采样次数不足没有采样到左侧的数据点, 那么所得到的 期望就是正的,与预期差别非常大。因此,在实践中会约束这两个分布,使之尽可能减小差异。
通过将重要性采样运用到策略函数更新, 可以把同策略换成异策略。假设负责学习的智能体策略为 πθ ,负 责采样的智能体策略为 π。计算策略梯度 ∇Rθ = Er∼pe(τ ) [Rτ ∇ log pθ (τ )],但由于异策略, 不能从 pθ (τ ) 中采样 τ ,而只能从 p 中采样,因此需要添加重要性权重修正结果:
注意此策略梯度只更新 πθ ,而 πθ' 并不更新, 这样才能够不断地从 πθ' 中采样轨迹, 从而使得 πθ 可以多次 更新。在此基础上,将已知的优化也纳入考虑,首先利用优势函数 A(st, at)带入策略梯度公式,可以得到:
其中 (st , at ) 是 t 时刻 = 的状态-动作对并且 τ = (s1 , a1 ), (s2 , a2 ), ... 。运用重要性采样计算策略梯度:
此时优势函数从 Aθ (st , at ) 变成 Aθ'(st , at ),因为此时是利用 πθ' 采样。然后, 可以拆解 pθ (st , at ) 和 pθ'(st , at ) 得 到:
假定状态只和环境有关, 而与具体策略无关, 即 pθ (st) ≈ pθ'(st )。一个很直接的原因是这部分难以计算。而pθ (st ,at ) 和 pθ' (st ,at ) 则易于计算。因此可以进一步将策略梯度公式写成:
从上述式子的梯度形式反推原来的目标函数,可以得到如下公式:
其中, Jθ'(θ)表示需要优化的目标函数, θ'代表使用 πθ'与环境交互, θ 代表要优化的参数。注意到当上式 对 θ 求梯度的时候, pθ'(at |st ) 和 Aθ'(st , at ) 都是常数,因而只需要求解 pθ (at |st ) 的梯度。
重要性采样的一个重要的稳定性保证是分布 p 和分布 q 不能差别太多, 上面提到如果采样次数不够多, 就可 能会有很大的差别, 为了不让 p 和 q 差异过大, 即pθ (τ )和pθ‘(τ ),PPO 的解法是在里面加入一个约束项 βKL(θ, θ\), KL 散度简单来说就是衡量二者有多相似,我们希望这两个分布越像越好。
需要注意的是, 这里并不是要保证 θ 和 θ’的参数的空间距离保持相似, 否则可以直接使用 L2 范数来约束。但是, 这里是要保证 pθ (at |st ) 和 pθ' (at |st ) 的表现相似, 即要保证的是动作概率的相似。这两者的差别在于, 即 使参数相似,其输出的动作也可能大相径庭。
算法的具体步骤如下:
第一步:初始化 Policy 的参数 θ0 ;
第二步:在每次迭代中, 首先使用 θ'与环境互动, 得到一堆 (at , st ) 数据对, 计算优势函数, 这里可以理 解成奖励。
ps:欢迎扫码关注公众号^_^.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。