强化学习-TRPO算法详解

TRPO(Trust Region Policy Optimization)算法详解

TRPO(信任区域策略优化)是一种基于策略梯度的强化学习算法,由John Schulman等人在2015年提出。其核心思想是通过限制策略更新的幅度,确保新策略的性能不会显著下降,从而提升训练稳定性。以下是TRPO的详细介绍:


1. 背景与动机

  • 传统策略梯度的问题:策略梯度方法直接优化策略参数,但步长选择敏感。过大的更新可能导致策略性能骤降,而过小的步长则收敛缓慢。
  • 信任区域的引入:TRPO提出在策略更新时定义一个“信任区域”,确保新策略与旧策略的差异在可控范围内。数学上通过KL散度约束实现。

2. 策略优化的基本目标

在强化学习中,策略优化的目标是找到一个策略 πθ(a∣s)\pi_\theta(a|s)πθ(as),使得期望累积回报最大化:
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πθ(atst)Qπθ(st,at)]
推导过程如下:

  1. 从定义出发
    • 首先,目标函数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πθ(atst)是轨迹τ\tauτ出现的概率。
  2. 应用对数求导技巧
    • 为了求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θ
    • 根据对数求导公式∇θ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∞γ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πθ(atst),根据复合函数求导法则和对数求导技巧,∇θπθ(τ)=πθ(τ)∑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πθ(atst)θπθ(atst)∇θπθ(τ)=πθ(τ)∑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πθ(atst)

  3. 引入动作 - 价值函数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πθ(atst)代入∇θ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θ
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值