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∞γtr(st,at)], 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πθ(at∣st)⋅Qπθ(st,at)] \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∞γtrt]J(\theta)=\mathbb{E}_{\tau\sim\pi_{\theta}}[\sum_{t = 0}^{\infty}\gamma^{t}r_{t}]J(θ)=Eτ∼πθ[∑t=0∞γtrt],这里τ=(s0,a0,r0,s1,a1,r1,⋯ )\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∞γtrt)dτJ(\theta)=\int_{\tau}\pi_{\theta}(\tau)(\sum_{t = 0}^{\infty}\gamma^{t}r_{t})d\tauJ(θ)=∫τπθ(τ)(∑t=0∞γtrt)dτ,其中πθ(τ)=∏t=0∞πθ(at∣st)\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∞γtrtg(\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\thetaJ(θ)=E[g(θ)]=∫p(θ)g(θ)dθ。
-
根据对数求导公式∇θlogp(θ)=∇θp(θ)p(θ)\nabla_{\theta}\log p(\theta)=\frac{\nabla_{\theta}p(\theta)}{p(\theta)}∇θlogp(θ)=p(θ)∇θp(θ),对J(θ)J(\theta)J(θ)求导可得:
∇θJ(θ)=∫∇θ[πθ(τ)(∑t=0∞γtrt)]dτ=∫[∇θπθ(τ)(∑t=0∞γtrt)+πθ(τ)∇θ(∑t=0∞γtrt)]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∞γtrt)=0\nabla_{\theta}(\sum_{t = 0}^{\infty}\gamma^{t}r_{t}) = 0∇θ(∑t=0∞γtrt)=0,因为rtr_{t}rt不依赖于θ\thetaθ。
-
对于∇θπθ(τ)\nabla_{\theta}\pi_{\theta}(\tau)∇θπθ(τ),由于πθ(τ)=∏t=0∞πθ(at∣st)\pi_{\theta}(\tau)=\prod_{t = 0}^{\infty}\pi_{\theta}(a_{t}|s_{t})πθ(τ)=∏t=0∞πθ(at∣st),根据复合函数求导法则和对数求导技巧,∇θπθ(τ)=πθ(τ)∑t=0∞∇θπθ(at∣st)πθ(at∣st)\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πθ(at∣st)\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π(st,at)Q^{\pi}(s_{t},a_{t})Qπ(st,at)
- 把∇θπθ(τ)=πθ(τ)∑t=0∞∇θlogπθ(at∣st)\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πθ(at∣st)(∑t=0∞γtrt)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∇θ
- 把∇θπθ(τ)=πθ(τ)∑t=0∞∇θlogπθ(at∣st)\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(θ)的表达式中,得到:

最低0.47元/天 解锁文章
4755

被折叠的 条评论
为什么被折叠?



