Skip to content

步步深入 TRPO

论文《Trust Region Policy Optimization》[1] 提出了大名鼎鼎的 TRPO 算法,这是 policy gradient 系列强化学习(RL)算法的里程碑之作。但原论文包含大量晦涩难懂的公式和定理,对于入门者并不友好。本文将详细讲解 TRPO 中关键公式的推导过程,希望能够理清 TRPO 作者想解决的问题以及采用的方法。

1. 引言

TRPO 和大多数 RL 算法一样,希望提升策略 π 的期望累积回报 η(π)

η(π)=Es0,a0,[t=0γtrt],

其中每一步的动作 atπ(atst),服从策略 π 所决定的动作概率分布。

在进一步分析 η(π) 的性质之前,定义三个函数:动作价值函数 Qπ(st,at)、状态价值函数 Vπ(st) 和优势函数 Aπ(st,at)

Qπ(st,at)=Est+1,at+1,[l=0γlrt+l],

即在状态 st 下采用动作 at 后,后续动作服从策略 π 的情况下的累积期望回报。

Vπ(st)=Eat,st+1,at+1,[l=0γlrt+l],

即在状态 st 下,后续动作服从策略 π 的情况下的累积期望回报。

Aπ(st,at)=Qπ(st,at)Vπ(st),

表示在状态 st 下,直接采用动作 at 相比于按照 atπ(atst) 采样动作的优势。

如何提升 η(π) 呢?或者说,如何找到一个新的策略 π~ 使得 η(π~) 高于 η(π) 呢?这就需要分析 η(π~)η(π) 的定量关系。这里引用一个 RL 领域的经典结论 [2]:

(1)η(π~)=η(π)+Es0,a0,π~[t=0γtAπ(st,at)].

这里的 Aπ(st,at) 表示策略 π 下的优势函数,也就是说:

Aπ(st,at)=Qπ(st,at)Vπ(st),

其中动作价值函数和状态价值函数都对应策略 π

式 (1) 可以这么理解:η(π~)η(π) 的差等于按照策略 π~ 采样动作 at、在走出的轨迹中每一步的策略 π 下优势函数 Aπ(st,at) 的累积和。

下面给出简单证明:

η(π~)=Es0,a0,π~[t=0γtrt]=η(π)+Es0,a0,π~[t=0γtrt]η(π)=η(π)+Es0,a0,π~[t=0γtrtVπ(s0)]=η(π)+Es0,a0,π~[t=0γt(rt+γVπ(st+1)Vπ(st))]=η(π)+Es0,a0,π~[t=0γtAπ(st,at)].

注意论文原文的证明也是一样的裂项相消,区别只是这里写成了连等式的过程。实际上这个等式给了我们很强的指引:满足

Es0,a0,π~[t=0γtAπ(st,at)]0

的策略 π~ 可以使得 η(π~)η(π)。但是策略 π~ 并没有显式出现在式中,因此接下来需要变形。

首先定义累积折扣状态访问频率:

ρπ(s)=P(s0=s)+γP(s1=s)+γ2P(s2=s)+

这个函数的含义是:在策略 π 下,每一步状态 st 等于 s 的概率在折扣系数下的累积和。基于 ρπ(s) 的定义,对式 (1) 变形得到:

\begin{aligned} \eta(\tilde{\pi}) &= \eta(\pi) + \sum_{t=0}^{\infty} \sum_s P(s_t = s \mid \tilde{\pi}) \sum_a \tilde{\pi}(a \mid s) \gamma^t A_{\pi}(s, a) \\ &= \eta(\pi) + \sum_s \sum_{t=0}^{\infty} \gamma^t P(s_t = s \mid \tilde{\pi}) \sum_a \tilde{\pi}(a \mid s) A_{\pi}(s, a) \\ &= \eta(\pi) + \sum_s \rho_{\tilde{\pi}}(s) \sum_a \tilde{\pi}(a \mid s) A_{\pi}(s, a). \tag{2} \end{aligned}

通过式 (2) 不难看出,只要新策略 π~ 满足:对于每个状态 s

aπ~(as)Aπ(s,a)0,

即可保证 η(π~)η(π)

很完美对不对?只要最大化 aπ~(as)Aπ(s,a) 就可以得到更优的策略 π~。其实不然,如果在这里画上句号,就没 TRPO 什么事了。下面,真正的 TRPO 即将开始。

2. 前菜:为什么需要近似

在 RL 算法的实际应用中,我们通常通过神经网络来学习一个策略 π,即输入状态 s,输出这个状态下选择每个动作 a 的概率 π(as)。既然是参数化的神经网络,就难免有误差。换句话说,“对于每个状态 saπ~(as)Aπ(s,a)0” 这个完美条件难以成立,总有一些隐藏的坏点状态 s 使得 aπ~(as)Aπ(s,a)<0

怎么办?其实也好办也不好办。

好办的是,根据式 (2),

η(π~)η(π)=sρπ~(s)aπ~(as)Aπ(s,a),

那么只要让整体

sρπ~(s)aπ~(as)Aπ(s,a)0

就行了,中间每个状态上的 aπ~(as)Aπ(s,a) 是正是负并不需要考虑。

不好办的是,想求 sρπ~(s)aπ~(as)Aπ(s,a) 对策略 π~ 的导数非常困难,因为 ρπ~(s) 的导数我们搞不到。

3. 正篇 1:替代函数

这该怎么办?把难搞的东西给 ban 掉,换成相应的替代。一个很自然的想法就是把 ρπ~(s) 换成 ρπ(s),于是定义一个近似的替代函数:

Lπ(π~)=η(π)+sρπ(s)aπ~(as)Aπ(s,a).

Lπ(π~)η(π~) 好处理多了,ρπ(s) 中不包含策略 π~,因此对策略 π~ 的导数为零。但是,Lπ(π~) 既然是近似,必然有误差。这种近似的效果如何呢?

效果还真不错。观察发现,Lπ(π~)η(π~)π~=π 处的值和对 π~ 的导数都是一样的,也就是:

Lπ(π)=η(π),π~Lπ(π~)|π~=π=π~η(π~)|π~=π.

第一个等式(值相等)一眼就可以看出来,第二个需要稍微证明一下:

π~η(π~)|π~=π=sρπ(s)π~|π~=πaπ~(as)Aπ(s,a)+sπ~|π~=πρπ~(s)aπ(as)Aπ(s,a).

注意到 aπ(as)Aπ(s,a)=0,代入可得:

π~η(π~)|π~=π=sρπ(s)π~|π~=πaπ~(as)Aπ(s,a)=π~Lπ(π~)|π~=π.

这种在 π~=π 处的值和梯度都相等的情况,叫做 Lπ(π~) 是对 η(π~) 的一阶近似。结合数学分析的知识可以知道,当

π~Lπ(π~)|π~=π=π~η(π~)|π~=π0

时,π~=π 处必然存在一个邻域,域内的 π~ 满足:若 Lπ(π~) 增大,则 η(π~) 也增大。这说明,在一定步长内优化 Lπ(π~),会使得 η(π~) 也得到优化。

4. 正篇 2:信赖域

仅凭替代函数对优化函数的一阶近似性质,我们只能知道在一定步长内提升 Lπ(π~) 会使得 η(π~) 也提升,但还不知道步长要选多大。文章标题中的关键词 trust region(信赖域)正是探讨优化的步长要在什么范围(域)内选择。

沿着这个思路出发,文章的核心贡献点之一就是进一步量化了 Lπ(π~)η(π~) 的关系,提出了下面的不等式:

η(π~)Lπ(π~)4ϵγ(1γ)2α,

其中

α=maxsDKL(π(s)π~(s)),ϵ=maxs,a|Aπ(s,a)|.

这一步基本解决了步长的问题。因为我们得到了 η(π~)Lπ(π~) 以及步长(这里表现为 π~π 之间的 KL 散度)的定量关系。这个关系表现为 4ϵγ(1γ)2α 这个惩罚项:步长越大,惩罚就越大,此时 η(π~) 越难以享受到提升 Lπ(π~) 所带来的优化效果。

有了定量关系就好办了,可以直接把优化目标从 Lπ(π~) 改为:

Mπ(π~)=Lπ(π~)4ϵγ(1γ)2α.

注意到 Mπ(π~)η(π~) 的下界,我们希望优化 Mπ(π~) 来提升 η(π~)。下面证明:优化 Mπ(π~) 得到的最优解 π¯ 一定是更好的策略,即 η(π¯)η(π)

首先注意到两个事实:

  1. Mπ(π)=Lπ(π)0=η(π)0=η(π)
  2. Mπ(π¯)Mπ(π)

第一个由于 π~=π 时惩罚项为零,第二个则利用了 π¯ 为最优解这个特性。那么证明就一目了然:

η(π¯)Mπ(π¯)Mπ(π)=η(π).

到此,证明了直接优化 Mπ(π~) 就可以得到更优的策略。

5. 正篇 3:优化

Mπ(π~) 的优化面临两个难点:

  1. maxsDKL(π(s)π~(s)) 难以计算;
  2. maxs,a|Aπ(s,a)| 也难以计算。

对于第一个难点,TRPO 作者将 maxsDKL(π(s)π~(s))EsρπDKL(π(s)π~(s)) 进行了近似替换,因为 sρπ 这个分布上的期望可以用蒙特卡洛法解决。

第二个难点其实是惩罚项系数的问题,这个系数中的 maxs,a|Aπ(s,a)| 也是个难确定的东西。所以 TRPO 作者直接就把最大化 Mπ(π~) 换成了它的对偶问题,也就是从:

maxπ~Mπ(π~)=Lπ(π~)4ϵγ(1γ)2α

变成:

maxπ~Lπ(π~)s.t.EsρπDKL(π(s)π~(s))δ.

这是一种偷懒方式:不管 maxs,a|Aπ(s,a)| 是多大,总存在对应的 δ 使得对偶问题和原问题一致。那么 δ 具体取多大?那就是调参的事了,哪个值性能好用哪个。

实际训练时,策略是用参数化的网络来实现的。用 θθ~ 来表示更新前后策略 ππ~ 的参数,因此优化目标可以表示为 Lθ(θ~)。文章中优化 Lθ(θ~) 时,采用了通过 Fisher information matrix 来计算自然梯度(natural gradient)的方法,具体建模为:

maxθ~Lθ(θ~)s.t.12(θ~θ)TA(θ~,θ)(θ~θ)δ,

其中 A(θ~,θ) 是 KL 散度关于 θ~ 的 Hessian 矩阵,也就是 Fisher information matrix。求解这个问题可以直接套用自然梯度的公式。令 g=θLθ(θ~),则自然梯度的方向为 A1g。考虑到 δ 对步长的约束,实际更新使用的自然梯度为:

2δgTA1gA1g.

参考文献

  1. Schulman, J., Levine, S., Abbeel, P., Jordan, M. and Moritz, P., 2015. Trust region policy optimization. In International conference on machine learning (pp. 1889-1897). PMLR.
  2. Kakade, S. and Langford, J., 2002. Approximately optimal approximate reinforcement learning. In Proceedings of the 19th International Conference on Machine Learning.

Maintained by Robin