可能更好的阅读体验 Jeefy's Blog: TRPO
├─→ TRPO (Trust Region Policy Optimization)
│ └── 约束新旧策略的 KL 散度 ≤ δ,保证更新在安全区域内
│ └── 解决:策略更新不稳定、步长难调
│ └── 问题:二阶优化(Fisher信息矩阵)计算昂贵
某些符号表示不标准,注意辨别。
如果我们仔细审视一下 Actor-Critic 中的 V-based 模型,那么我们可以将带有 baseline 的损失重写为:
\[\nabla J(\theta) = {\mathbb E}_{\tau \sim \pi_\theta} \left[ \sum_{t = 0}^T (Q(a_t, s_t) - V(s_t)) \nabla \log \pi_\theta(a_t|s_t) \right]
\]
其中定义 \(A^\pi(a_t, s_t) = Q^\pi(a_t, s_t) - V(s_t)\) 为优势函数。
话又说回来了,虽然这样定义,但是实际上计算的时候,还是不通过 \(Q\) 网络,而是使用 \(r_t + V(s_{t+1}) - V(s_t)\) 的形式计算。
所以只需要一个 \(\pi\) 和一个 \(V\) 网络即可。
那么我们期望最大化 \(Q\) 的价值等价于最大化每一步的优势。所以说我们可以将价值函数定义为:
\[\begin{aligned}
J(\theta) &= {\mathbb E_{\tau \sim \pi_\theta}} \left[ \sum_{t = 0}^\infty \sum_a \pi_\theta(a_t | s_t) \gamma^t A^\pi(a_t, s_t) \right] \\
&= \sum_s \left(\sum_{t = 0}^T P^\pi(s_t = s) \gamma^t\right) \sum_a \pi_\theta(a_t | s_t) A^\pi(a_t, s_t)
\end{aligned}
\]
有啥用?没用!这不就和 Actor-Critic 一摸一样了吗?
既然我们都说了,这是优势函数了,我们能不能将训练变成一个增量训练的角度?也就是说,通过代理目标函数近似期望回报的增量,换句话来说,也就是计算新策略对于旧策略的优势,进行叠加。
\[J(\hat \theta) - J(\theta) = {\mathbb E}_{\tau \sim \hat \theta}[R(\tau)] - {\mathbb E}_{\tau \sim \theta}[R(\tau)]
\]
可以利用重要性采样估计 \(J(\hat \theta)\)
\[J(\hat \theta) = {\mathbb E}_{\tau \sim \theta} \left[\frac {p(\tau | \hat \theta)}{p(\tau | \theta)} R(\tau) \right]
\]
利用:
\[\frac {p(\tau | \hat \theta)}{p(\tau | \theta)} = \prod_{t = 0}^T \frac {\pi_{\hat \theta}(a_t|s_t)}{{\pi_{\theta}(a_t|s_t)}}
\]
展开 \(R(\tau)\),简化推导:
\[\begin{aligned}
J(\hat \theta) - J(\theta) &= \sum_{\tau \sim \theta} p_{\theta}(\tau) \left(\prod_{t = 0}^T \frac {\pi_{\hat \theta}(a_t|s_t)}{{\pi_{\theta}(a_t|s_t)}} - 1 \right) \sum_{t = 0}^T \gamma^t (A^{\pi_{\theta}}(a_t, s_t) + V(s_t) - \gamma {\mathbb E}_{s_{t + 1} \sim \theta}[V(s_{t + 1})]) \\
&= {\mathbb E}_{\tau \sim \theta} \left[\left(\frac {p(\tau | \hat \theta)}{p(\tau | \theta)} - 1\right) \sum_{t = 0}^T \gamma^t A^{\pi_{\theta}}(a_t, s_t) \right] \\
&= \sum_{\tau \sim \theta} ({p(\tau | \hat \theta)}-{p(\tau | \theta)}) \sum_{t = 0}^T \gamma^t A^{\pi_\theta}(a_t, s_t) \\
&= \frac 1 {1 - \gamma} \left({\mathbb E}_{s \sim \hat \theta, a \sim \pi_{\hat \theta}}[A^{\pi_\theta}(a, s)] - {\mathbb E}_{s \sim \theta, a \sim \pi_{ \theta}}[A^{\pi_\theta}(a, s)]\right)
\end{aligned}
\]
其中:
\[\mathbb{E}_{s\sim\theta, a\sim\pi_\theta}[A^\pi] = \mathbb{E}_{s\sim\theta, a\sim\pi_\theta}[Q(a, s)] - \mathbb{E}_{s\sim\theta, a\sim\pi_\theta}[V(s)] = \mathbb{E}_{s\sim\theta}[V(s)] - \mathbb{E}_{s\sim\theta}[V(s)] = 0
\]
所以得到:
\[J(\hat \theta) - J(\theta) = \frac 1 {1 - \gamma} {\mathbb E}_{s \sim \hat \theta, a \sim \pi_{\hat \theta}}[A^{\pi_\theta}(a, s)]
\]
这里有一个 \(\frac 1 {1 - \gamma}\) 是因为没有归一化度量,也就是使用的是 \(\gamma^t\) 而不是 \((1 - \gamma) \gamma^t\) 的形式。不过这个系数有没有其实无伤大雅,所以可有可没有。
继续利用重要性估计,在 \(\theta\) 上采样:
\[L(\hat \theta) = J(\hat \theta) - J(\theta) \approx \frac 1 {1 - \gamma} {\mathbb E}_{s \sim \theta, a \sim \pi_{\theta}}\left[\frac {\pi_{\hat \theta}(a | s)}{\pi_{\theta}(a | s)} A^{\pi_\theta}(a, s) \right]
\]
所以损失:
\[\nabla L(\hat \theta) = {\mathbb E}_{s \sim \theta, a \sim \pi_\theta} \left[ A^{\pi_\theta}(a, s) \nabla \log \pi_\theta(a|s) \right]
\]
但是重要性采样有一个非常局限的点:\(\pi_\theta\) 和 \(\pi_{\hat \theta}\) 的策略分布不能相差太远,否则估计就失效了。
所以优化的限制为:
\[ {\mathbb E}_{s \sim \theta}[D_{KL}(\pi_{\hat \theta}(\cdot|s) || \pi_{\theta}(\cdot|s))] \le \delta
\]
所以整个问题的建模是:
\[\begin{aligned}
\max_{\hat \theta} L(\hat \theta) &= {\mathbb E}_{s \sim \theta, a \sim \pi_{\theta}}\left[\frac {\pi_{\hat \theta}(a | s)}{\pi_{\theta}(a | s)} A^{\pi_\theta}(a, s) \right] \\
\text{s.t. } & {\mathbb E}_{s \sim \theta}[D_{KL}(\pi_{\hat \theta}(\cdot|s) || \pi_{\theta}(\cdot|s))] \le \delta
\end{aligned}
\]
这是一个非线性约束优化问题,直接求解复杂。TRPO通过以下步骤近似:
- 线性化代理目标,得到梯度。
- 二次化KL散度约束,得到Fisher信息矩阵。
- 共轭梯度法求解更新方向。
- 线性搜索确保约束满足。