TRPO(Trust Region Policy Optimization)算法详解
TRPO(信任区域策略优化)是一种基于策略梯度的强化学习算法,由John Schulman等人在2015年提出。其核心思想是通过限制策略更新的幅度,确保新策略的性能不会显著下降,从而提升训练稳定性。以下是TRPO的详细介绍:
1. 背景与动机
- 传统策略梯度的问题:策略梯度方法直接优化策略参数,但步长选择敏感。过大的更新可能导致策略性能骤降,而过小的步长则收敛缓慢。
- 信任区域的引入:TRPO提出在策略更新时定义一个“信任区域”,确保新策略与旧策略的差异在可控范围内。数学上通过KL散度约束实现。
2. 策略优化的基本目标
在强化学习中,策略优化的目标是找到一个策略
π
θ
(
a
∣
s
)
\pi_\theta(a|s)
πθ(a∣s),使得期望累积回报最大化:
J
(
θ
)
=
E
τ
∼
π
θ
[
∑
t
=
0
∞
γ
t
r
(
s
t
,
a
t
)
]
,
J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^\infty \gamma^t r(s_t, a_t) \right],
J(θ)=Eτ∼πθ[t=0∑∞γtr(st,at)],
其中
τ
\tau
τ 是轨迹,
γ
\gamma
γ 是折扣因子。直接优化
J
(
θ
)
J(\theta)
J(θ) 的梯度为:
∇
θ
J
(
θ
)
=
E
τ
∼
π
θ
[
∑
t
=
0
∞
∇
θ
log
π
θ
(
a
t
∣
s
t
)
⋅
Q
π
θ
(
s
t
,
a
t
)
]
\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^\infty \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot Q^{\pi_\theta}(s_t, a_t) \right]
∇θJ(θ)=Eτ∼πθ[t=0∑∞∇θlogπθ(at∣st)⋅Qπθ(st,at)]
推导过程如下:
- 从定义出发
- 首先,目标函数 J ( θ ) = E τ ∼ π θ [ ∑ t = 0 ∞ γ t r t ] J(\theta)=\mathbb{E}_{\tau\sim\pi_{\theta}}[\sum_{t = 0}^{\infty}\gamma^{t}r_{t}] J(θ)=Eτ∼πθ[∑t=0∞γtrt],这里 τ = ( s 0 , a 0 , r 0 , s 1 , a 1 , r 1 , ⋯ ) \tau=(s_{0},a_{0},r_{0},s_{1},a_{1},r_{1},\cdots) τ=(s0,a0,r0,s1,a1,r1,⋯)是一个轨迹, γ \gamma γ是折扣因子。期望是对所有可能的轨迹 τ \tau τ按照策略 π θ \pi_{\theta} πθ进行计算的。
- 根据期望的定义, J ( θ ) = ∫ τ π θ ( τ ) ( ∑ t = 0 ∞ γ t r t ) d τ J(\theta)=\int_{\tau}\pi_{\theta}(\tau)(\sum_{t = 0}^{\infty}\gamma^{t}r_{t})d\tau J(θ)=∫τπθ(τ)(∑t=0∞γtrt)dτ,其中 π θ ( τ ) = ∏ t = 0 ∞ π θ ( a t ∣ s t ) \pi_{\theta}(\tau)=\prod_{t = 0}^{\infty}\pi_{\theta}(a_{t}|s_{t}) πθ(τ)=∏t=0∞πθ(at∣st)是轨迹 τ \tau τ出现的概率。
- 应用对数求导技巧
-
为了求 J ( θ ) J(\theta) J(θ)关于 θ \theta θ的梯度,我们对 J ( θ ) J(\theta) J(θ)使用对数求导技巧。
- 设 p ( θ ) = π θ ( τ ) p(\theta)=\pi_{\theta}(\tau) p(θ)=πθ(τ)和 g ( θ ) = ∑ t = 0 ∞ γ t r t g(\theta)=\sum_{t = 0}^{\infty}\gamma^{t}r_{t} g(θ)=∑t=0∞γtrt
- 那么 J ( θ ) = E [ g ( θ ) ] = ∫ p ( θ ) g ( θ ) d θ J(\theta)=\mathbb{E}[g(\theta)]=\int p(\theta)g(\theta)d\theta J(θ)=E[g(θ)]=∫p(θ)g(θ)dθ。
-
根据对数求导公式 ∇ θ log p ( θ ) = ∇ θ p ( θ ) p ( θ ) \nabla_{\theta}\log p(\theta)=\frac{\nabla_{\theta}p(\theta)}{p(\theta)} ∇θlogp(θ)=p(θ)∇θp(θ),对 J ( θ ) J(\theta) J(θ)求导可得:
∇ θ J ( θ ) = ∫ ∇ θ [ π θ ( τ ) ( ∑ t = 0 ∞ γ t r t ) ] d τ = ∫ [ ∇ θ π θ ( τ ) ( ∑ t = 0 ∞ γ t r t ) + π θ ( τ ) ∇ θ ( ∑ t = 0 ∞ γ t r t ) ] d τ \begin{align*} \nabla_{\theta}J(\theta) &= \int\nabla_{\theta}\left[\pi_{\theta}(\tau)\left(\sum_{t = 0}^{\infty}\gamma^{t}r_{t}\right)\right]d\tau \\ &= \int\left[\nabla_{\theta}\pi_{\theta}(\tau)\left(\sum_{t = 0}^{\infty}\gamma^{t}r_{t}\right) + \pi_{\theta}(\tau)\nabla_{\theta}\left(\sum_{t = 0}^{\infty}\gamma^{t}r_{t}\right)\right]d\tau \end{align*} ∇θJ(θ)=∫∇θ[πθ(τ)(t=0∑∞γtrt)]dτ=∫[∇θπθ(τ)(t=0∑∞γtrt)+πθ(τ)∇θ(t=0∑∞γtrt)]dτ -
注意到 ∇ θ ( ∑ t = 0 ∞ γ t r t ) = 0 \nabla_{\theta}(\sum_{t = 0}^{\infty}\gamma^{t}r_{t}) = 0 ∇θ(∑t=0∞γtrt)=0,因为 r t r_{t} rt不依赖于 θ \theta θ。
-
对于 ∇ θ π θ ( τ ) \nabla_{\theta}\pi_{\theta}(\tau) ∇θπθ(τ),由于 π θ ( τ ) = ∏ t = 0 ∞ π θ ( a t ∣ s t ) \pi_{\theta}(\tau)=\prod_{t = 0}^{\infty}\pi_{\theta}(a_{t}|s_{t}) πθ(τ)=∏t=0∞πθ(at∣st),根据复合函数求导法则和对数求导技巧, ∇ θ π θ ( τ ) = π θ ( τ ) ∑ t = 0 ∞ ∇ θ π θ ( a t ∣ s t ) π θ ( a t ∣ s t ) \nabla_{\theta}\pi_{\theta}(\tau)=\pi_{\theta}(\tau)\sum_{t = 0}^{\infty}\frac{\nabla_{\theta}\pi_{\theta}(a_{t}|s_{t})}{\pi_{\theta}(a_{t}|s_{t})} ∇θπθ(τ)=πθ(τ)t=0∑∞πθ(at∣st)∇θπθ(at∣st)即 ∇ θ π θ ( τ ) = π θ ( τ ) ∑ t = 0 ∞ ∇ θ log π θ ( a t ∣ s t ) \nabla_{\theta}\pi_{\theta}(\tau)=\pi_{\theta}(\tau)\sum_{t = 0}^{\infty}\nabla_{\theta}\log\pi_{\theta}(a_{t}|s_{t}) ∇θπθ(τ)=πθ(τ)t=0∑∞∇θlogπθ(at∣st)
-
- 引入动作 - 价值函数
Q
π
(
s
t
,
a
t
)
Q^{\pi}(s_{t},a_{t})
Qπ(st,at)
- 把
∇
θ
π
θ
(
τ
)
=
π
θ
(
τ
)
∑
t
=
0
∞
∇
θ
log
π
θ
(
a
t
∣
s
t
)
\nabla_{\theta}\pi_{\theta}(\tau)=\pi_{\theta}(\tau)\sum_{t = 0}^{\infty}\nabla_{\theta}\log\pi_{\theta}(a_{t}|s_{t})
∇θπθ(τ)=πθ(τ)∑t=0∞∇θlogπθ(at∣st)代入
∇
θ
J
(
θ
)
\nabla_{\theta}J(\theta)
∇θJ(θ)的表达式中,得到:
∇ θ J ( θ ) = ∫ π θ ( τ ) ∑ t = 0 ∞ ∇ θ log π θ ( a t ∣ s t ) ( ∑ t = 0 ∞ γ t r t ) d τ \nabla_{\theta}J(\theta)=\int\pi_{\theta}(\tau)\sum_{t = 0}^{\infty}\nabla_{\theta}\log\pi_{\theta}(a_{t}|s_{t})(\sum_{t = 0}^{\infty}\gamma^{t}r_{t})d\tau ∇θJ(θ)=∫πθ(τ)t=0∑∞∇θlogπθ(at∣st)(t=0∑∞γtrt)dτ - 注意到 ∑ t = 0 ∞ γ t r t \sum_{t = 0}^{\infty}\gamma^{t}r_{t} ∑t=0∞γtrt在轨迹 τ \tau τ中的期望可以表示为动作 - 价值函数 Q π ( s t , a t ) Q^{\pi}(s_{t},a_{t}) Qπ(st,at)。
- 根据动作 - 价值函数的定义 Q π ( s t , a t ) = E π θ [ ∑ k = t ∞ γ k − t r k ∣ s t , a t ] Q^{\pi}(s_{t},a_{t})=\mathbb{E}_{\pi_{\theta}}[\sum_{k = t}^{\infty}\gamma^{k - t}r_{k}|s_{t},a_{t}] Qπ(st,at)=Eπθ[∑k=t∞γk−trk∣st,at],所以 ∇ θ J ( θ ) = E π θ [ ∑ t = 0 ∞ γ t ∇ θ log π θ ( a t ∣ s t ) Q π ( s t , a t ) ] \nabla_{\theta}J(\theta)=\mathbb{E}_{\pi_{\theta}}[\sum_{t = 0}^{\infty}\gamma^{t}\nabla_{\theta}\log\pi_{\theta}(a_{t}|s_{t})Q^{\pi}(s_{t},a_{t})] ∇θJ(θ)=Eπθ[t=0∑∞γt∇θlogπθ(at∣st)Qπ(st,at)]这样就完成了梯度表达式的推导。
- 把
∇
θ
π
θ
(
τ
)
=
π
θ
(
τ
)
∑
t
=
0
∞
∇
θ
log
π
θ
(
a
t
∣
s
t
)
\nabla_{\theta}\pi_{\theta}(\tau)=\pi_{\theta}(\tau)\sum_{t = 0}^{\infty}\nabla_{\theta}\log\pi_{\theta}(a_{t}|s_{t})
∇θπθ(τ)=πθ(τ)∑t=0∞∇θlogπθ(at∣st)代入
∇
θ
J
(
θ
)
\nabla_{\theta}J(\theta)
∇θJ(θ)的表达式中,得到:
但直接使用策略梯度方法容易因步长过大导致策略性能崩溃。
3. TRPO 的核心思想:替代目标函数
TRPO 通过限制新旧策略的差异,构造一个替代目标函数(Surrogate Objective),确保每次更新后策略性能单调提升。具体步骤如下:
3.1 新旧策略的期望回报关系
新策略
π
θ
\pi_\theta
πθ 的期望回报可表示为旧策略
π
θ
old
\pi_{\theta_{\text{old}}}
πθold 的期望回报加上一个修正项:
J
(
θ
)
=
J
(
θ
old
)
+
E
τ
∼
π
θ
[
∑
t
=
0
∞
γ
t
A
π
θ
old
(
s
t
,
a
t
)
]
,
J(\theta) = J(\theta_{\text{old}}) + \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^\infty \gamma^t A^{\pi_{\theta_{\text{old}}}}(s_t, a_t) \right],
J(θ)=J(θold)+Eτ∼πθ[t=0∑∞γtAπθold(st,at)],
- 其中 A π θ old ( s t , a t ) A^{\pi_{\theta_{\text{old}}}}(s_t, a_t) Aπθold(st,at) 是优势函数,表示在状态 s t s_t st 下选择动作 a t a_t at 相对于平均策略的优势。
- A π θ old ( s t , a t ) = Q π θ old ( s , a ) − V π θ old ( s ) A^{\pi_{\theta_{\text{old}}}}(s_t, a_t)=Q^{\pi_{\theta_{\text{old}}}}(s,a)-V^{\pi_{\theta_{\text{old}}}}(s) Aπθold(st,at)=Qπθold(s,a)−Vπθold(s)。其中 V π θ old ( s ) = E a ∼ π ( s ) [ Q π θ old ( s , a ) ] V^{\pi_{\theta_{\text{old}}}}(s)=\mathbb{E}_{a\sim\pi(s)}[Q^{\pi_{\theta_{\text{old}}}}(s,a)] Vπθold(s)=Ea∼π(s)[Qπθold(s,a)]是价值函数。
3.2 重要性采样转换分布
因为在实际应用中,新策略
π
θ
\pi_{\theta}
πθ的轨迹难以直接采样,所以需要将其转换为一种可以利用旧策略采样数据来计算的形式。
TRPO 使用重要性采样(Importance Sampling)将期望转换为旧策略的分布:
对于
E
τ
∼
π
θ
[
∑
t
=
0
∞
γ
t
A
π
θ
o
l
d
(
s
t
,
a
t
)
]
\mathbb{E}_{\tau\sim\pi_{\theta}}\left[\sum_{t = 0}^{\infty}\gamma^{t}A^{\pi_{\theta_{old}}}(s_t,a_t)\right]
Eτ∼πθ[∑t=0∞γtAπθold(st,at)],可以将其看作是多个时间步的
E
τ
∼
π
θ
[
A
π
θ
o
l
d
(
s
t
,
a
t
)
]
\mathbb{E}_{\tau\sim\pi_{\theta}}\left[A^{\pi_{\theta_{old}}}(s_t,a_t)\right]
Eτ∼πθ[Aπθold(st,at)]的折扣求和。
E
τ
∼
π
θ
[
A
π
θ
old
(
s
t
,
a
t
)
]
=
E
s
∼
ρ
θ
old
,
a
∼
π
θ
old
[
π
θ
(
a
∣
s
)
π
θ
old
(
a
∣
s
)
A
π
θ
old
(
s
,
a
)
]
,
\mathbb{E}_{\tau \sim \pi_\theta} \left[ A^{\pi_{\theta_{\text{old}}}}(s_t, a_t) \right] = \mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}, a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A^{\pi_{\theta_{\text{old}}}}(s, a) \right],
Eτ∼πθ[Aπθold(st,at)]=Es∼ρθold,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)],
公式推导:
- 在强化学习的轨迹期望计算中,我们要计算 E τ ∼ π θ [ A π θ old ( s t , a t ) ] \mathbb{E}_{\tau \sim \pi_\theta} \left[ A^{\pi_{\theta_{\text{old}}}}(s_t, a_t) \right] Eτ∼πθ[Aπθold(st,at)]。
- 设轨迹 τ = ( s 0 , a 0 , r 0 , s 1 , a 1 , r 1 , ⋯ ) \tau=(s_0,a_0,r_0,s_1,a_1,r_1,\cdots) τ=(s0,a0,r0,s1,a1,r1,⋯),对于新策略 π θ \pi_{\theta} πθ下的状态 - 动作对 ( s , a ) (s,a) (s,a)的概率分布为 π θ ( a ∣ s ) ρ θ ( s ) \pi_{\theta}(a|s)\rho_{\theta}(s) πθ(a∣s)ρθ(s),这里 ρ θ ( s ) \rho_{\theta}(s) ρθ(s)是新策略 π θ \pi_{\theta} πθ下的状态分布。
- 对于旧策略 π θ o l d \pi_{\theta_{old}} πθold下的状态 - 动作对 ( s , a ) (s,a) (s,a)的概率分布为 π θ o l d ( a ∣ s ) ρ θ o l d ( s ) \pi_{\theta_{old}}(a|s)\rho_{\theta_{old}}(s) πθold(a∣s)ρθold(s)。
- 我们把 E τ ∼ π θ [ A π θ old ( s t , a t ) ] \mathbb{E}_{\tau \sim \pi_\theta} \left[ A^{\pi_{\theta_{\text{old}}}}(s_t, a_t) \right] Eτ∼πθ[Aπθold(st,at)]看作是在新策略 π θ \pi_{\theta} πθ下状态 - 动作对 ( s , a ) (s,a) (s,a)分布下优势函数 A π θ o l d ( s , a ) A^{\pi_{\theta_{old}}}(s,a) Aπθold(s,a)的期望,即 E ( s , a ) ∼ π θ ( a ∣ s ) ρ θ ( s ) [ A π θ old ( s , a ) ] \mathbb{E}_{(s,a)\sim\pi_{\theta}(a|s)\rho_{\theta}(s)} \left[ A^{\pi_{\theta_{\text{old}}}}(s, a) \right] E(s,a)∼πθ(a∣s)ρθ(s)[Aπθold(s,a)]。
- 根据重要性采样原理,设 p ( s , a ) = π θ ( a ∣ s ) ρ θ ( s ) p(s,a)=\pi_{\theta}(a|s)\rho_{\theta}(s) p(s,a)=πθ(a∣s)ρθ(s)(新策略下的状态 - 动作联合分布), q ( s , a ) = π θ o l d ( a ∣ s ) ρ θ o l d ( s ) q(s,a)=\pi_{\theta_{old}}(a|s)\rho_{\theta_{old}}(s) q(s,a)=πθold(a∣s)ρθold(s)(旧策略下的状态 - 动作联合分布), f ( s , a ) = A π θ o l d ( s , a ) f(s,a)=A^{\pi_{\theta_{old}}}(s,a) f(s,a)=Aπθold(s,a)(优势函数)。
- 那么 E ( s , a ) ∼ p [ A π θ o l d ( s , a ) ] = E ( s , a ) ∼ q [ p ( s , a ) q ( s , a ) A π θ o l d ( s , a ) ] \mathbb{E}_{(s,a)\sim p} \left[ A^{\pi_{\theta_{old}}}(s, a) \right]=\mathbb{E}_{(s,a)\sim q}[\frac{p(s,a)}{q(s,a)}A^{\pi_{\theta_{old}}}(s,a)] E(s,a)∼p[Aπθold(s,a)]=E(s,a)∼q[q(s,a)p(s,a)Aπθold(s,a)]。
- 计算
p
(
s
,
a
)
q
(
s
,
a
)
\frac{p(s,a)}{q(s,a)}
q(s,a)p(s,a):
p
(
s
,
a
)
q
(
s
,
a
)
=
π
θ
(
a
∣
s
)
ρ
θ
(
s
)
π
θ
o
l
d
(
a
∣
s
)
ρ
θ
o
l
d
(
s
)
\frac{p(s,a)}{q(s,a)}=\frac{\pi_{\theta}(a|s)\rho_{\theta}(s)}{\pi_{\theta_{old}}(a|s)\rho_{\theta_{old}}(s)}
q(s,a)p(s,a)=πθold(a∣s)ρθold(s)πθ(a∣s)ρθ(s)。
- 假设状态分布的变化相对缓慢(这是一个常见的假设),即 ρ θ ( s ) ≈ ρ θ o l d ( s ) \rho_{\theta}(s)\approx\rho_{\theta_{old}}(s) ρθ(s)≈ρθold(s),那么 p ( s , a ) q ( s , a ) ≈ π θ ( a ∣ s ) π θ o l d ( a ∣ s ) \frac{p(s,a)}{q(s,a)}\approx\frac{\pi_{\theta}(a|s)}{\pi_{\theta_{old}}(a|s)} q(s,a)p(s,a)≈πθold(a∣s)πθ(a∣s)。
- 所以 E τ ∼ π θ [ A π θ old ( s t , a t ) ] = E s ∼ ρ θ old , a ∼ π θ old [ π θ ( a ∣ s ) π θ o l d ( a ∣ s ) A π θ old ( s , a ) ] \mathbb{E}_{\tau \sim \pi_\theta} \left[ A^{\pi_{\theta_{\text{old}}}}(s_t, a_t) \right]=\mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}, a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_{\theta}(a|s)}{\pi_{\theta_{old}}(a|s)} A^{\pi_{\theta_{\text{old}}}}(s, a) \right] Eτ∼πθ[Aπθold(st,at)]=Es∼ρθold,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)]。
- 这就完成了公式的推导。
3.3 替代目标函数的定义
忽略折扣因子
γ
t
\gamma^t
γt 的复杂影响(实际中通过加权平均处理),TRPO 的替代目标函数定义为:
L
(
θ
)
=
E
s
∼
ρ
θ
old
,
a
∼
π
θ
old
[
π
θ
(
a
∣
s
)
π
θ
old
(
a
∣
s
)
A
π
θ
old
(
s
,
a
)
]
.
L(\theta) = \mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}, a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A^{\pi_{\theta_{\text{old}}}}(s, a) \right].
L(θ)=Es∼ρθold,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)].
优化
L
(
θ
)
L(\theta)
L(θ) 相当于最大化新策略相对于旧策略的期望优势。
4. 约束条件的引入:信任区域
直接对 L ( θ ) L(\theta) L(θ) 进行无约束的优化可能会带来一些问题。当我们在更新策略参数 θ \theta θ 时,如果步长过大,新策略 π θ \pi_{\theta} πθ 可能会与旧策略 π θ o l d \pi_{\theta_{old}} πθold 产生较大的差异。这种差异可能会导致基于旧策略收集的数据不再适用于新策略,从而使得优化过程不稳定,甚至可能会使策略的性能下降。
TRPO 通过KL散度约束限制新旧策略的差异,确保更新在“信任区域”内。
4.1. KL 散度的概念
KL 散度(Kullback - Leibler divergence),也称为相对熵,是一种衡量两个概率分布之间差异的指标。
对于两个离散概率分布
p
(
x
)
p(x)
p(x) 和
q
(
x
)
q(x)
q(x),KL 散度定义为:
D
KL
(
p
∥
q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
D_{\text{KL}}(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}
DKL(p∥q)=x∑p(x)logq(x)p(x)
它具有以下性质:
- D KL ( p ∥ q ) ≥ 0 D_{\text{KL}}(p \| q) \geq 0 DKL(p∥q)≥0,当且仅当 p ( x ) = q ( x ) p(x)=q(x) p(x)=q(x) 对于所有的 x 都成立时,等号成立。
- 这意味着 KL 散度可以用来衡量两个分布的相似程度,值越小表示两个分布越接近。 D KL ( p ∥ q ) D_{\text{KL}}(p \| q) DKL(p∥q) 不是对称的,即 D KL ( p ∥ q ) ≠ D KL ( q ∥ p ) D_{\text{KL}}(p \| q)\neq D_{\text{KL}}(q \| p) DKL(p∥q)=DKL(q∥p)。
4.2. KL 散度约束在 TRPO 中的作用
在 TRPO 中,我们使用 KL 散度来衡量新旧策略
π
θ
o
l
d
\pi_{\theta_{old}}
πθold 和
π
θ
\pi_{\theta}
πθ 之间的差异。
具体来说,对于每个状态 s,我们计算在该状态下旧策略
π
θ
o
l
d
(
⋅
∣
s
)
\pi_{\theta_{old}}(\cdot|s)
πθold(⋅∣s) 和新策略
π
θ
(
⋅
∣
s
)
\pi_{\theta}(\cdot|s)
πθ(⋅∣s) 之间的 KL 散度
D
KL
(
π
θ
o
l
d
(
⋅
∣
s
)
∥
π
θ
(
⋅
∣
s
)
)
D_{\text{KL}}(\pi_{\theta_{old}}(\cdot|s) \| \pi_{\theta}(\cdot|s))
DKL(πθold(⋅∣s)∥πθ(⋅∣s))。
然后,我们对所有可能的状态 s 按照旧策略的状态分布
ρ
θ
o
l
d
(
s
)
\rho_{\theta_{old}}(s)
ρθold(s) 取期望,得到
E
s
∼
ρ
θ
old
[
D
KL
(
π
θ
o
l
d
(
⋅
∣
s
)
∥
π
θ
(
⋅
∣
s
)
)
]
\mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}} \left[ D_{\text{KL}}(\pi_{\theta_{old}}(\cdot|s) \| \pi_{\theta}(\cdot|s)) \right]
Es∼ρθold[DKL(πθold(⋅∣s)∥πθ(⋅∣s))]。
这个期望表示了在旧策略的状态分布下,新旧策略之间的平均差异。
4.3. 信任区域约束的意义
我们通过设置一个约束条件
E
s
∼
ρ
θ
old
[
D
KL
(
π
θ
o
l
d
(
⋅
∣
s
)
∥
π
θ
(
⋅
∣
s
)
)
]
≤
δ
\mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}} \left[ D_{\text{KL}}(\pi_{\theta_{old}}(\cdot|s) \| \pi_{\theta}(\cdot|s)) \right] \leq \delta
Es∼ρθold[DKL(πθold(⋅∣s)∥πθ(⋅∣s))]≤δ
其中
D
KL
(
p
∥
q
)
=
∑
p
(
x
)
log
p
(
x
)
q
(
x
)
D_{\text{KL}}(p \| q) = \sum p(x) \log \frac{p(x)}{q(x)}
DKL(p∥q)=∑p(x)logq(x)p(x) 是KL散度,
δ
\delta
δ 是信任区域半径。
- 可以限制新策略 π θ \pi_{\theta} πθ 与旧策略 π θ o l d \pi_{\theta_{old}} πθold 之间的差异,确保新策略不会偏离旧策略太远。
- 保证基于旧策略收集的数据在一定程度上仍然适用于新策略,从而使得策略更新过程更加稳定。
- 通过在这个约束条件下优化目标函数 L ( θ ) L(\theta) L(θ),我们可以在保证策略性能提升的同时,避免因策略更新幅度过大而导致的不稳定问题。
4. 优化问题的构建
结合目标函数
L
(
θ
)
L(\theta)
L(θ) 和 KL 散度约束,TRPO 算法将策略更新问题转化为一个约束优化问题:
max
θ
L
(
θ
)
,
s.t.
E
s
[
D
KL
(
π
θ
old
∥
π
θ
)
]
≤
δ
.
\max_\theta L(\theta), \quad \text{s.t.} \quad \mathbb{E}_s [D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta)] \leq \delta.
θmaxL(θ),s.t.Es[DKL(πθold∥πθ)]≤δ.
这个式子表示在保证新策略
π
θ
\pi_{\theta}
πθ和旧策略
π
θ
o
l
d
\pi_{\theta_{old}}
πθold之间的平均 KL 散度不超过给定阈值
δ
\delta
δ的前提下,找到最优的策略参数
θ
\theta
θ来最大化目标函数
L
(
θ
)
L(\theta)
L(θ)
5. 约束条件的近似与简化
5.1 KL散度的二阶泰勒展开
5.1.1 泰勒展开的动机
在TRPO中,我们需要约束新旧策略的KL散度不超过阈值 δ \delta δ,但直接优化KL散度的非线性约束较为困难。因此,我们在旧策略参数 θ old \theta_{\text{old}} θold附近对KL散度进行二阶泰勒展开,将其近似为参数变化的二次函数,从而将非线性约束转化为易于处理的二次约束。
5.1.2 具体展开过程
设策略参数为
θ
\theta
θ,旧策略参数为
θ
old
\theta_{\text{old}}
θold,定义
Δ
θ
=
θ
−
θ
old
\Delta\theta = \theta - \theta_{\text{old}}
Δθ=θ−θold。KL散度
D
KL
(
π
θ
old
∥
π
θ
)
D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta)
DKL(πθold∥πθ)是关于
θ
\theta
θ的函数,在
θ
old
\theta_{\text{old}}
θold处的泰勒展开为:
D
KL
(
π
θ
old
∥
π
θ
)
≈
D
KL
(
π
θ
old
∥
π
θ
old
)
+
∇
θ
D
KL
∣
θ
=
θ
old
⋅
Δ
θ
+
1
2
(
Δ
θ
)
T
H
(
Δ
θ
)
,
D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta) \approx D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_{\theta_{\text{old}}}) + \nabla_\theta D_{\text{KL}}|_{\theta=\theta_{\text{old}}} \cdot \Delta\theta + \frac{1}{2} (\Delta\theta)^T \mathbf{H} (\Delta\theta),
DKL(πθold∥πθ)≈DKL(πθold∥πθold)+∇θDKL∣θ=θold⋅Δθ+21(Δθ)TH(Δθ),
其中:
- 一阶项:由于 D KL ( π θ old ∥ π θ old ) = 0 D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_{\theta_{\text{old}}}) = 0 DKL(πθold∥πθold)=0(KL散度自反性为0),且KL散度在 θ old \theta_{\text{old}} θold处的梯度为0(旧策略处的KL散度对参数的导数为0,因为此时新旧策略相同),故一阶项为0。
- 二阶项:
H
\mathbf{H}
H是KL散度关于
θ
\theta
θ的Hessian矩阵。对于策略梯度模型,Hessian矩阵可近似为Fisher信息矩阵(FIM, Fisher Information Matrix)
F
\mathbf{F}
F,其定义为:
F = E s ∼ ρ θ old , a ∼ π θ old [ ∇ θ log π θ old ( a ∣ s ) ∇ θ log π θ old ( a ∣ s ) T ] . \mathbf{F} = \mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}, a \sim \pi_{\theta_{\text{old}}}} \left[ \nabla_\theta \log \pi_{\theta_{\text{old}}}(a|s) \nabla_\theta \log \pi_{\theta_{\text{old}}}(a|s)^T \right]. F=Es∼ρθold,a∼πθold[∇θlogπθold(a∣s)∇θlogπθold(a∣s)T].
Fisher信息矩阵描述了策略分布的曲率,是参数空间中KL散度的二阶导数近似,具有对称性和正定性(确保二次函数凸性)。
最终,KL散度的二阶近似为:
D
KL
(
π
θ
old
∥
π
θ
)
≈
1
2
(
θ
−
θ
old
)
T
F
(
θ
−
θ
old
)
.
D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta) \approx \frac{1}{2} (\theta - \theta_{\text{old}})^T \mathbf{F} (\theta - \theta_{\text{old}}).
DKL(πθold∥πθ)≈21(θ−θold)TF(θ−θold).
5.2 优化问题的近似形式
5.2.1 原问题回顾
TRPO的优化问题为:
max
θ
L
(
θ
)
,
s.t.
E
s
[
D
KL
(
π
θ
old
∥
π
θ
)
]
≤
δ
,
\max_\theta L(\theta), \quad \text{s.t.} \quad \mathbb{E}_s [D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta)] \leq \delta,
θmaxL(θ),s.t.Es[DKL(πθold∥πθ)]≤δ,
其中
L
(
θ
)
L(\theta)
L(θ)是目标函数(如重要性采样后的优势函数期望),即:
L
(
θ
)
=
E
s
∼
ρ
θ
old
,
a
∼
π
θ
old
[
π
θ
(
a
∣
s
)
π
θ
old
(
a
∣
s
)
A
π
θ
old
(
s
,
a
)
]
.
L(\theta) = \mathbb{E}_{s \sim \rho_{\theta_{\text{old}}}, a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A^{\pi_{\theta_{\text{old}}}}(s, a) \right].
L(θ)=Es∼ρθold,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)].
5.2.2 目标函数的一阶近似
在
θ
old
\theta_{\text{old}}
θold附近,对
L
(
θ
)
L(\theta)
L(θ)进行一阶泰勒展开:
L
(
θ
)
≈
L
(
θ
old
)
+
∇
θ
L
(
θ
old
)
T
(
θ
−
θ
old
)
.
L(\theta) \approx L(\theta_{\text{old}}) + \nabla_\theta L(\theta_{\text{old}})^T (\theta - \theta_{\text{old}}).
L(θ)≈L(θold)+∇θL(θold)T(θ−θold).
由于我们只关心参数更新的方向(最大化提升量),常数项
L
(
θ
old
)
L(\theta_{\text{old}})
L(θold)可忽略,目标函数近似为:
max
θ
∇
θ
L
(
θ
old
)
T
(
θ
−
θ
old
)
.
\max_\theta \nabla_\theta L(\theta_{\text{old}})^T (\theta - \theta_{\text{old}}).
θmax∇θL(θold)T(θ−θold).
5.2.3 约束条件的二阶近似
将KL散度约束替换为二阶泰勒展开式:
E
s
[
D
KL
(
π
θ
old
∥
π
θ
)
]
≈
1
2
(
θ
−
θ
old
)
T
F
(
θ
−
θ
old
)
≤
δ
.
\mathbb{E}_s [D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta)] \approx \frac{1}{2} (\theta - \theta_{\text{old}})^T \mathbf{F} (\theta - \theta_{\text{old}}) \leq \delta.
Es[DKL(πθold∥πθ)]≈21(θ−θold)TF(θ−θold)≤δ.
至此,原问题转化为一个带二次约束的线性优化问题(凸优化问题):
max
Δ
θ
g
T
Δ
θ
,
s.t.
1
2
Δ
θ
T
F
Δ
θ
≤
δ
\max_{\Delta\theta} g^T \Delta\theta, \quad \text{s.t.} \quad \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta \leq \delta
ΔθmaxgTΔθ,s.t.21ΔθTFΔθ≤δ
其中:
- g = ∇ θ L ( θ old ) g = \nabla_\theta L(\theta_{\text{old}}) g=∇θL(θold) 是目标函数在旧策略处的梯度(向量);
- F \mathbf{F} F 是 Fisher 信息矩阵(正定矩阵,由旧策略的分布计算得到,与 Δ θ \Delta\theta Δθ 无关);
- δ \delta δ 是信任区域半径(标量常数)。
由于约束是凸的(二次型约束),且目标函数是线性的,最优解必然出现在约束边界上(即等式成立时),因此可以使用拉格朗日乘子法将约束优化问题转化为无约束优化问题。
6. 更新方向的求解
6.1 拉格朗日函数的构造
6.1.1 构造逻辑
- 目标:在满足约束 1 2 Δ θ T F Δ θ = δ \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta = \delta 21ΔθTFΔθ=δ 的前提下,最大化目标函数 g T Δ θ g^T \Delta\theta gTΔθ。
- 拉格朗日乘子:引入非负乘子
λ
≥
0
\lambda \geq 0
λ≥0(对应不等式约束的 KKT 条件),构造拉格朗日函数:
L ( Δ θ , λ ) = g T Δ θ − λ ( 1 2 Δ θ T F Δ θ − δ ) . \mathcal{L}(\Delta\theta, \lambda) = g^T \Delta\theta - \lambda \left( \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta - \delta \right). L(Δθ,λ)=gTΔθ−λ(21ΔθTFΔθ−δ).- 第一项是原目标函数,
- 第二项是约束的惩罚项:当约束不满足时( 1 2 Δ θ T F Δ θ > δ \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta > \delta 21ΔθTFΔθ>δ),惩罚项会增大,从而迫使解回到约束边界。
6.1.2 乘子的非负性
根据 KKT 条件,对于不等式约束 1 2 Δ θ T F Δ θ ≤ δ \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta \leq \delta 21ΔθTFΔθ≤δ,乘子 λ ≥ 0 \lambda \geq 0 λ≥0。若最优解在约束内部(即约束不起作用),则 λ = 0 \lambda = 0 λ=0,但此时目标函数无界(线性函数在无约束下可无限增大),与实际问题矛盾,因此最优解必然在约束边界上( λ > 0 \lambda > 0 λ>0)。
6.2 对 Δ θ \Delta\theta Δθ 求导与最优条件
6.2.1 矩阵求导规则
对 Δ θ \Delta\theta Δθ 求偏导时,需用到以下矩阵导数公式:
- ∇ Δ θ ( g T Δ θ ) = g \nabla_{\Delta\theta} (g^T \Delta\theta) = g ∇Δθ(gTΔθ)=g(线性项导数为梯度本身),
- ∇ Δ θ ( Δ θ T F Δ θ ) = 2 F Δ θ \nabla_{\Delta\theta} (\Delta\theta^T \mathbf{F} \Delta\theta) = 2\mathbf{F} \Delta\theta ∇Δθ(ΔθTFΔθ)=2FΔθ(二次型导数为 2 F Δ θ 2\mathbf{F} \Delta\theta 2FΔθ,因 F \mathbf{F} F 是对称矩阵)。
6.2.3 求导过程
对
L
(
Δ
θ
,
λ
)
\mathcal{L}(\Delta\theta, \lambda)
L(Δθ,λ) 关于
Δ
θ
\Delta\theta
Δθ 求导并令导数为零:
∇
Δ
θ
L
=
g
−
λ
⋅
∇
Δ
θ
(
1
2
Δ
θ
T
F
Δ
θ
)
=
g
−
λ
F
Δ
θ
=
0.
\nabla_{\Delta\theta} \mathcal{L} = g - \lambda \cdot \nabla_{\Delta\theta} \left( \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta \right) = g - \lambda \mathbf{F} \Delta\theta = 0.
∇ΔθL=g−λ⋅∇Δθ(21ΔθTFΔθ)=g−λFΔθ=0.
整理得:
λ
F
Δ
θ
=
g
⟹
Δ
θ
=
λ
−
1
F
−
1
g
.
\lambda \mathbf{F} \Delta\theta = g \implies \Delta\theta = \lambda^{-1} \mathbf{F}^{-1} g.
λFΔθ=g⟹Δθ=λ−1F−1g.
6.2.4 解的含义
-
Δ
θ
=
λ
−
1
F
−
1
g
\Delta\theta = \lambda^{-1} \mathbf{F}^{-1} g
Δθ=λ−1F−1g 表示参数更新方向由 自然梯度(Natural Gradient)决定。
- 普通梯度是 g g g,而自然梯度考虑了策略分布的几何结构(通过 F − 1 \mathbf{F}^{-1} F−1 加权),能更高效地在参数空间中搜索。
- λ \lambda λ 是拉格朗日乘子,控制更新步长的大小,需通过约束条件确定。
6.3 利用约束条件求解 λ \lambda λ 并得到更新方向
将
Δ
θ
=
λ
−
1
F
−
1
g
\Delta\theta = \lambda^{-1} \mathbf{F}^{-1} g
Δθ=λ−1F−1g 代入约束条件
1
2
Δ
θ
T
F
Δ
θ
=
δ
\frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta = \delta
21ΔθTFΔθ=δ:
1
2
(
λ
−
1
F
−
1
g
)
T
F
(
λ
−
1
F
−
1
g
)
=
δ
.
\frac{1}{2} \left( \lambda^{-1} \mathbf{F}^{-1} g \right)^T \mathbf{F} \left( \lambda^{-1} \mathbf{F}^{-1} g \right) = \delta.
21(λ−1F−1g)TF(λ−1F−1g)=δ.
化简:
1
2
λ
−
2
g
T
F
−
1
F
F
−
1
g
=
δ
⟹
1
2
λ
−
2
g
T
F
−
1
g
=
δ
.
\frac{1}{2} \lambda^{-2} g^T \mathbf{F}^{-1} \mathbf{F} \mathbf{F}^{-1} g = \delta \implies \frac{1}{2} \lambda^{-2} g^T \mathbf{F}^{-1} g = \delta.
21λ−2gTF−1FF−1g=δ⟹21λ−2gTF−1g=δ.
解得:
λ
−
2
=
2
δ
g
T
F
−
1
g
⟹
λ
=
g
T
F
−
1
g
2
δ
.
\lambda^{-2} = \frac{2\delta}{g^T \mathbf{F}^{-1} g} \implies \lambda = \sqrt{\frac{g^T \mathbf{F}^{-1} g}{2\delta}}.
λ−2=gTF−1g2δ⟹λ=2δgTF−1g.
将
λ
\lambda
λ 代入
Δ
θ
\Delta\theta
Δθ 的表达式:
Δ
θ
=
2
δ
g
T
F
−
1
g
F
−
1
g
.
\Delta\theta = \sqrt{\frac{2\delta}{g^T \mathbf{F}^{-1} g}} \mathbf{F}^{-1} g.
Δθ=gTF−1g2δF−1g.
令步长
α
=
2
δ
g
T
F
−
1
g
\alpha = \sqrt{\frac{2\delta}{g^T \mathbf{F}^{-1} g}}
α=gTF−1g2δ,则:
θ
new
=
θ
old
+
Δ
θ
=
θ
old
+
α
F
−
1
g
=
θ
old
+
2
δ
g
T
F
−
1
g
F
−
1
∇
θ
L
(
θ
old
)
\begin{align*} \theta_{\text{new}} &= \theta_{\text{old}} + \Delta\theta \\ &= \theta_{\text{old}} + \alpha \mathbf{F}^{-1} g \\ &= \theta_{\text{old}} + \sqrt{\frac{2\delta}{g^T \mathbf{F}^{-1} g}} \mathbf{F}^{-1} \nabla_\theta L(\theta_{\text{old}}) \end{align*}
θnew=θold+Δθ=θold+αF−1g=θold+gTF−1g2δF−1∇θL(θold)
6.3.1 关键性质与意义
- 自然梯度的本质
- F − 1 g \mathbf{F}^{-1} g F−1g 是 自然梯度方向,它在参数空间中考虑了策略分布的局部几何结构(Fisher 信息矩阵描述了分布的曲率),相比普通梯度,自然梯度能更有效地指向“最优”方向,避免因参数尺度问题导致的更新不稳定。
- 步长的约束满足
- 步长 α \alpha α 由约束条件 δ \delta δ 和梯度方向的“长度”(通过 F − 1 \mathbf{F}^{-1} F−1 加权)共同决定,确保更新后的参数满足 1 2 Δ θ T F Δ θ = δ \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta = \delta 21ΔθTFΔθ=δ,即新旧策略的 KL 散度恰好等于信任区域半径,在允许的最大范围内实现目标函数的最大提升。
- 求解的高效性
- 实际中,直接计算 F − 1 g \mathbf{F}^{-1} g F−1g 对高维矩阵来说计算量巨大,通常使用 共轭梯度法 等迭代方法近似求解,避免显式矩阵求逆,这也是 TRPO 能处理大规模策略(如神经网络)的关键原因之一。
6.4 总结
通过拉格朗日乘子法,我们将带二次约束的优化问题转化为无约束优化问题,求得的最优解 Δ θ \Delta\theta Δθ 满足两个核心条件:
- 梯度条件:沿自然梯度方向(考虑策略分布曲率),
- 约束条件:策略变化幅度被严格限制在信任区域内(KL 散度等于 δ \delta δ)。
这一过程确保了 TRPO 算法在稳定更新策略的同时,实现性能的最大提升,是其理论严谨性和实际有效性的关键保证。
7. 推导过程总结
步骤 | 关键操作 | 数学形式 |
---|---|---|
1 | 定义替代目标函数 | L ( θ ) = E [ π θ π old A ] L(\theta) = \mathbb{E} \left[ \frac{\pi_\theta}{\pi_{\text{old}}} A \right] L(θ)=E[πoldπθA] |
2 | 引入KL散度约束 | E s [ D KL ( π old ∣ π θ ) ] ≤ δ \mathbb{E}_s [D_{\text{KL}}(\pi_{\text{old}} | \pi_\theta)] \leq \delta Es[DKL(πold∣πθ)]≤δ |
3 | 二阶泰勒展开KL散度 | D KL ≈ 1 2 Δ θ T F Δ θ D_{\text{KL}} \approx \frac{1}{2} \Delta\theta^T \mathbf{F} \Delta\theta DKL≈21ΔθTFΔθ |
4 | 拉格朗日乘子法求解 | θ new = θ old + 2 δ g T F − 1 g F − 1 ∇ θ L ( θ old ) \theta_{\text{new}} = \theta_{\text{old}} + \sqrt{\frac{2\delta}{g^T \mathbf{F}^{-1} g}} \mathbf{F}^{-1} \nabla_\theta L(\theta_{\text{old}}) θnew=θold+gTF−1g2δF−1∇θL(θold) |
8. 直观解释
- 替代目标函数:通过重要性采样,利用旧策略的数据估计新策略的改进方向。
- KL散度约束:限制策略更新的幅度,确保新策略不会偏离旧策略太远。
- 自然梯度: F − 1 ∇ L \mathbf{F}^{-1} \nabla L F−1∇L 是考虑参数空间曲率的更新方向,比普通梯度更稳定。
9. 与其他方法的对比
- TRPO vs 普通策略梯度:TRPO通过自然梯度和KL约束避免灾难性更新。
- TRPO vs PPO:PPO通过剪裁重要性权重简化约束,牺牲理论严谨性以提升效率。
通过上述推导,TRPO 在理论上确保了策略性能的单调提升,同时通过信任区域约束保障了稳定性,成为复杂强化学习任务中的核心算法之一。