Chapter 5: Policy Gradient Methods for Deep RL¶
约 2068 个字 预计阅读时间 7 分钟
5.1 Stochastic Policy Gradient¶
其中:
- \(R^{\prime}(s, a) = \displaystyle\int_{s^{\prime} \in\mathcal{S}} T(s, a, s^{\prime}) R(s, a, s^{\prime})\,\mathrm{d}s^{\prime}\) 代表给定了 \((s, a)\) 之后的期望即时奖励;
- \(\rho^{\pi} (s) = \displaystyle\sum\limits_{t=0}^{\infty} \gamma^t \cdot \mathbb{P} \left\{s_t = s \mid s_0, \pi\right\}\) 表示从状态 \(s_0\) 出发,在策略 \(\pi\) 下,带折扣地期望访问状态 \(s\) 的次数。
因此可以见得,式 (5.1) 的内层积分就是在策略 \(\pi\) 下,给定状态 \(s\) 时,对所有可能采取的动作 \(a\) 的期望即时奖励;而外层积分则是对所有可能被访问到的状态 \(s\) 求期望,权重是访问频率 \(\rho^{\pi}(s)\),这两次积分就确定出了从 \(s_0\) 出发,遵循策略 \(\pi\) 的期望折扣回报 \(V^{\pi}(s_0)\)。
5.2 Deterministic Policy Gradient¶
但是在连续动作空间内,贪心的策略改进就会出现问题,因为其要求每一步都做全局最大化,但是这显然难以进行,因此我们把策略记为可微的确定性策略 \(\pi_w(s)\),而此时,一个直接的想法就是做梯度上升,也就是沿着 \(Q\) 的梯度方向移动策略,这就得到 DDPG 算法。
这实际上是一个链式法则,我们要求 \(Q\) 关于 \(w\) 的导数,因此先求 \(Q\) 关于 \(a\) 的导数,这时候注意到 \(a = \pi_w(s)\),然后再求 \(\pi_w\) 关于 \(w\) 的导数就可以。
式子 (5.6) 意味着除了 \(\nabla_w \pi_w\) 之外,我们还需要求出 \(\nabla_a Q^{\pi_w}(s,a)\),这在实践中一般借助 Actor-Critic 方法来实现。
5.3 Actor-Critic Methods¶
使用神经网络的策略,无论是确定性的还是随机的,都可以通过梯度上升来更新策略。而无论如何,我们都需要当前策略的价值函数估计,一种常见的做法就是使用 Actor-Critic 架构,Actor 代表策略,Critic 代表价值函数(例如 Q Value)。在 Deep RL 中,Actor 和 Critic 都可以由非线性的神经网络表示。Actor 使用由策略梯度定理给出的梯度来调整策略参数 \(w\),Critic 用参数 \(\theta\) 来估计当前策略 \(\pi\) 的近似价值函数 \(Q(s,a;\theta) \approx Q^{\pi}(s,a)\)。
The Critic¶
从一组元组 \(\langle s,a,r,s^{\prime} \rangle\) 出发,这组元组可能来自于经验回放池,Critic 不断将当前值函数 \(Q(s,a;\theta)\) 向目标值更新。最简单的方法是使用纯自举的 \(TD(0)\),即每次迭代把当前的 \(Q(s,a;\theta)\) 向目标值
更新。这样的方法简单,但是效率不高,因为其使用了纯自举技术,容易不稳定,并且回报沿时间反向传播很慢,类似可以使用更加复杂的多步自举技术。理想的架构应该满足下面条件:
- 样本高效/Sample Efficiency:可以使用 off-policy 和 on-policy 的轨迹,比如可以使用经验回放池;
- 计算高效/Computational Efficiency:可以从 on-policy 方法的稳定性和回报的快速反向传播中受益,同时也可以使用从近似 on-policy 行为策略收集到的样本。
有些架构可以将 off-policy 和 on-policy 的数据结合起来,比如 \(\text{Retrace}(\lambda)\),其可以在不引入偏差/Bias 的情况下使用任何行为策略收集的样本,也可以高效利用近似于 on-policy 行为策略收集的样本。
一般来讲,使用经验回放池的算法样本效率高,而使用多步回报的算法计算效率高,多步回报也提升了学习稳定性,也加速了回报在时间上的反向传播。
The Actor¶
从式 (5.4) 可以知道,随机策略在策略改进阶段的 off-policy 梯度可以写为
其中 \(\pi_\beta\) 是行为策略,通常与 \(\pi\) 不同,因此该梯度一般是有偏的。这种方法在时间之中表现良好,但是由于策略梯度估计/Policy Gradient Estimator 带偏,对收敛性的分析在没有 GLIE 假设的情况下是困难的。这里 GLIE 假设一般指的是 Greedy in the Limit with Infinite Exploration,也就是在在线学习的设定下,当 Agent 已经学到无限多的经验的时候,其行为策略应该变得贪心(也就是没有 Exploration)。
在 Actor-Critic 框架内,一种不使用经验回放而在 on-policy 上进行策略梯度的方法是使用异步方法,也就是熟悉的 A3C/Asynchronous Advantage Actor-Critic,其使用多个 Agent 并行训练,并行的 Agent 使得每一个 Agent 在同一时间步看到环境的不同部分,这样就可以使用 n 步回报而不引入偏差。这个简单的想法可以用于任何需要 on-policy 数据而又不需要维持回放池的算法。然而其并不是样本高效的。
另一个将 off-policy 的样本高效和 on-policy 的梯度估计稳定性结合起来的方法是 Q-Prop,其将 on-policy 和 off-policy 的样本结合起来,使用一个蒙特卡洛的策略梯度估计器,同时使用一个 off-policy 的 Critic 作为控制变量来降低方差。其一个局限是,为了估计策略梯度,它仍然需要 on-policy 的样本。
5.4 Natural Policy Gradients¶
自然策略梯度来自于自然梯度这一思想与方法,用于对策略进行更新。其使用 Fisher Information Metric 给出的最陡方向进行更新。这个度量利用了目标函数的流形。对于目标函数 \(J(w)\),最简单的最陡上升形式是 \(\Delta w \propto \nabla_w J(w)\)。换言之,在对 \(\lVert \Delta w\rVert_2\) 加约束的条件下,更新会沿着使 \(J(w+\Delta w)-J(w)\) 最大的方向前进。若假设对 \(\Delta w\) 的约束并非由 \(L_2\) 度量给出,而是由另一种度量给出,则该带约束优化问题
的一阶解通常形如 \(\Delta w \propto B^{-1}\nabla_w J(w)\),其中 \(B\) 是 \(n_w\times n_w\) 的矩阵。
在自然梯度中,范数使用 Fisher Information Metric 给出,其可以由 KL 散度 \(D_{\mathrm{KL}} (\pi_{w} \| \pi_{w+\Delta w})\) 的局部二次近似得到,其中 KL 散度定义为 \(D_{\mathrm{KL}} (p \| q) = {\displaystyle\int} p(x) \log \frac{p(x)}{q(x)} \, \mathrm{d} x\)。改进策略 \(\pi_w\) 的自然梯度上升为
其中 \(F_w\) 为 Fisher 信息矩阵:
使用正常梯度 \(\nabla_w V^{\pi_w}(\cdot)\) 做策略梯度上升往往较慢,因为容易停在局部平台/Plateau 上。但是自然梯度并不沿参数空间的通常意义的欧式最陡方向,而是沿着 Fisher 度量意义下的最陡方向。另外,需要注意的是,自然梯度与普通梯度之间的夹角不超过 \(90^\circ\),因此使用自然梯度时也能保证收敛。
但是,当使用大参数量的神经网络的时候,计算、存储和求逆 Fisher 信息矩阵往往是不切实际的,因此自然梯度在深度 RL 中很少直接使用。但是现代提出了很多解决方案,比如 TRPO 和 PPO,这些方法都受自然梯度的启发。