(RL – NIPS 2017) – PCL

Path Consistency Learning

最近阅读了 NEC 论文, 对其中的 DND 的作用感兴趣, 但是 NEC 是基于 Q-learning 的类似于 DQN 的值估计算法. 但是想 A3C 之类的 state-of-art 算法都是基于 PG 的 AC 算法, 目前我想研究的就是 A3C 引入 DQN 中的经验回放以使得 AC 变成 off-policy 之类的算法.

PCL

AC 算法在根据当前的策略$\pi$采集样本的时候需要与环境进行交互, 但是我们不能利用已经经历过的轨迹吗(trajectories)?

标记

Consistency 的标准

假设收集了一个轨迹, 一部分如上图所示. 假设$\pi^*(\cdot|s)$是最优的策略并且$V^*(s)$是当前的最优策略的值函数, 那么 Path Consistency 的标准就是$\pi^*(\cdot|s)$和$V^*$必须满足方程:

$$-V^*(s_t) - \sum_{t'=t}^{u-1} \gamma^{t'-t}\log\pi^*(a_{t'}|s_{t'})
+ \sum_{t'=t}^{u-1} \gamma^{t'-t}r_{t'} + \gamma^{u-t} V^*(s_u) = 0
$$

上述的公式一定要满足, 但是至于用什么策略来收集状态转移不重要. 只要对于所有的可能会的转移找到了满足上述公式的策略, 那么我们就可以认为找到了最优策略.

数学证明

假设当前的状态在$s_0$, 能以概率$\left\{p_1^*,p_2^*,\cdots,p_n^*\right\}$采取的动作集合$\left\{a_1,a_2,\cdots,a_n\right\}$, 如果采取动作$a_i$得到了回报$r_i$

那么带有熵的使用策略$\pi^*(s)$的累积的回报:

$$V^*(s_0) = \sum_{i=1}^n p^*_i(r_i + \gamma V^*(s_i)) - \tau \sum_{i=1}^n p^*_i \log p^*_i$$

重写方程:

$$
\begin{aligned}
V^*(s_0) &=-\tau\sum_{i=1}^n p^*_i \log\frac{p^*}{e^{(r_i + \gamma V^*(s_i))/\tau}}\\
&=-\tau\sum_{i=1}^n p^*_i \log\frac{p^*_i}{\frac{e^{(r_i + \gamma V^*(s_i))/\tau}}{\sum_{j=1}^n e^{(r_j + \gamma V^*(s_j))/\tau}}} + \tau \log\sum_{j=1}^n e^{(r_j + \gamma V^*(s_j))/\tau}
\end{aligned}
$$

其中第一项就是概率$p_i^*$和$\frac{e^{(r_i + V^*(s_i))/\tau}}{\sum_{j=1}^n e^{(r_j + V^*(s_j))/\tau}}$的 KL 散度, KL 散度的最小值可以是0, $V^*(s_0)$是任何一个分布的最大值. 那么根据 KL 散度的定义(需要把负号移进去, $\log$分母和分子调换了顺序, 这也是为什么$V^*(s_0)$没有负号的原因):

$$\begin{aligned}
p_i^*& = \frac{e^{(r_i + \gamma V^*(s_i))/\tau}}{\sum_{j=1}^n e^{(r_j + \gamma V^*(s_j))/\tau}}\\
V^*(s_0) &= \tau \log \sum_{j=1}^n e^{(r_j + \gamma V^*(s_j))/\tau}
\end{aligned}$$

如果合并上面的等式:

$$p_i^* = \frac{e^{(r_i +\gamma V^*(s_i))/\tau}}{e^{V^*(s_0)/\tau}}$$

去掉两边的对数符号, 得到:

$$-V^*(s_0) - \tau \log p_i^* + r_i + \gamma V^*(s_i) = 0 \;\;\forall\;\; i \in \{1, 2, \cdots, n\}$$

使用 off-policy 的数据

假设策略网络$\pi_\theta(\cdot|s)$的参数为$\theta$以及以$\phi$为参数的值函数$V_\phi(s)$, 同是 off-policy 得到的数据, 假设为$s_{i:{i+d}}=\{(s_i, a_i, r_i), (s_{i+1}, a_{i+1}, r_{i+1}), \cdots, (s_{i+d-1}, a_{i+d-1}, r_{i+d-1})\}$, 就能够计算参数$\theta$和$\phi$的 Consistency:

$$C(s_{i:{i+d}},\theta, w) = \left(-V_\phi(s_i) + \gamma^{d} V_\phi(s_{i+d})- \sum_{j=0}^{d-1} \gamma^{j}\left[r_{i+j}-\tau\log\pi_\theta(a_{i+j|s_{i+j}})\right]\right)^2$$

这个也可作为要优化的目标函数. 优化需要计算梯度:

$$\begin{aligned}
\Delta\theta&=\eta_\pi{C(s_{i:{i+d}},\theta,\phi)}\sum_{j=0}^{d-1}\gamma^j\nabla_\theta\log\pi_\theta(a_{i+j}|s_{i+j})\\
\Delta\phi&=\eta_\nu{C(s_{i:{i+d}},\theta,\phi)}(\nabla_\phi{V_\phi}(s_i)-\gamma^d\nabla_\phi{V_\phi}(s_{i+d}))
\end{aligned}$$

其中$\eta_\nu$和$\eta_\pi$是值和策略的学率.

伪代码:

和博客[1]的文章不太一样, 采样的序列记为$s_{t:{t+d}}$, 采样的长度叫做$d$

Actor-Critic 与 Q-learning 的联系

这个可能针对的是使用 advantage 函数的 A3C 和 A2C. 定义值函数:

$$V^\pi(s)=\sum_a\pi(a|s)[r(s,a)+\gamma{V^\pi(s')}]$$

为了减小在求期望回报的策略梯度的方差, 有两个模型同时训练:

  1. actor $\pi_\theta$
  2. critic $V_\phi$, 这个被训练用于估计当前策略的值函数$V^{\pi_\theta}$

采样的长度(rollout)参数$d$, on-policy 的采样后的序列被优势函数估计:

$$A(s_{t:{t+d}},\phi)=-V_\phi(s_i)+\gamma^d{V_\phi(s_{i+d})}+\sum_{j=0}^{d-1}\gamma^jr(s_{i+j},a_{i+j})$$

参考

添加评论