RL中的策略优化问题

一、策略迭代

如果使用值函数重新定义强化学习的目标,我们可以得到:RL就是找到最优的策略,使得每一个状态的价值最大化。相当于求解
π ∗ = a r g m a x a q π ∗ ( s , a ) \pi^{*}=argmax_{a}q_{\pi^{*}}(s,a) π=argmaxaqπ(s,a)
而对于每一个状态对应的行为,我们希望找到使其价值最大化的行为:
a ∗ = a r g m a x a q π ∗ ( s , a ) a^{*}=argmax_{a}q_{\pi^{*}}(s, a) a=argmaxaqπ(s,a)

可以看出为了求出最终的结果,我们需要同时更新交织在一起的策略与价值。这个问题有一个解决算法是 策略迭代法。

只要能得到精确的值函数,就可以使用贝尔曼公式求出最优策略,也就是说最优策略满足上面提到的公式2。

二、策略梯度

策略梯度法不采用迂回的方式更新策略,而是直接计算策略可能更新的方向。

回到问题的本质,RL的目标是最大化长期回报期望,于是目标可以写成如下形式:

π ∗ = argmax ⁡ π E τ ∼ π ( τ ) [ r ( τ ) ] \pi^{*}=\operatorname{argmax}_{\pi} E_{\boldsymbol{\tau} \sim \pi(\boldsymbol{\tau})}[r(\boldsymbol{\tau})] π=argmaxπEτπ(τ)[r(τ)]

其中 τ \tau τ 表示使用策略进行交互得到的一条轨迹, r ( τ ) r(\tau) r(τ) 表示这条轨迹的总体回报。由于值函数也是一个函数,我们可以将之表示为策略参数的函数,然后就可以通过求导的方式,使参数沿着梯度上升的方向更新,也就是提升策略了。这就是利用梯度的方法进行策略优化。

算法推导

将上述目标函数用 J ( θ ) J(\theta) J(θ) 表示,将轨迹的期望回报展开,可以得到

J ( θ ) = E τ ∼ π θ ( τ ) [ r ( τ ) ] = ∫ τ ∼ π θ ( τ ) π θ ( τ ) r ( τ ) d τ J(\theta)=E_{\boldsymbol{\tau} \sim \pi_{\theta}(\tau)}[r(\boldsymbol{\tau})]=\int_{\boldsymbol{\tau} \sim \pi_{\theta}(\tau)} \pi_{\theta}(\boldsymbol{\tau}) r(\boldsymbol{\tau}) \mathrm{d} \boldsymbol{\tau} J(θ)=Eτπθ(τ)[r(τ)]=τπθ(τ)πθ(τ)r(τ)dτ

由于策略函数通常是定义良好的函数,所以求导运算可以和积分运算互换,这样可以得到

∇ θ J ( θ ) = ∫ τ ∼ π θ ( τ ) ∇ θ π θ ( τ ) r ( τ ) d τ \nabla_{\theta} J(\theta)=\int_{\tau \sim \pi_{\theta}(\tau)} \nabla_{\theta} \pi_{\theta}(\tau) r(\tau) \mathrm{d} \tau θJ(θ)=τπθ(τ)θπθ(τ)r(τ)dτ

为了方便计算,我们将上式进行一下变形。这里用到对数求导的基本公式
∇ x log ⁡ y = 1 y ∇ x y \nabla_{x} \log y=\frac{1}{y} \nabla_{x} y xlogy=y1xy

y y y 乘到左边可得到
y ∇ x log ⁡ y = ∇ x y y \nabla_{x} \log y=\nabla_{x} y yxlogy=xy

y y y 替换成 π θ ( τ ) \pi_{\theta}(\tau) πθ(τ), 将 x x x 替换成 θ \theta θ ,同时将公式左右两边互换,就可以得到
∇ θ π θ ( τ ) = π θ ( τ ) ∇ θ log ⁡ π θ ( τ ) \nabla_{\theta} \pi_{\theta}(\tau)=\pi_{\theta}(\tau) \nabla_{\theta} \log \pi_{\theta}(\tau) θπθ(τ)=πθ(τ)θlogπθ(τ)

带入前面的公式,得到

∇ θ J ( θ ) = ∫ τ ∼ π θ ( τ ) π θ ( τ ) ∇ θ log ⁡ π θ ( τ ) r ( τ ) d τ = E τ ∼ π θ ( τ ) [ ∇ θ log ⁡ π θ ( τ ) r ( τ ) ] \begin{aligned} \nabla_{\theta} J(\theta) &=\int_{\tau \sim \pi_{\theta}(\tau)} \pi_{\theta}(\tau) \nabla_{\theta} \log \pi_{\theta}(\tau) r(\tau) \mathrm{d} \tau \\ &=\boldsymbol{E}_{\tau \sim \pi_{\theta}(\tau)}\left[\nabla_{\theta} \log \pi_{\theta}(\boldsymbol{\tau}) r(\boldsymbol{\tau})\right] \end{aligned} θJ(θ)=τπθ(τ)πθ(τ)θlogπθ(τ)r(τ)dτ=Eτπθ(τ)[θlogπθ(τ)r(τ)]

求出的梯度公式还是有不易计算的部分,比如 ∇ θ l o g π θ \nabla_{\theta} log \pi_{\theta} θlogπθ.下面将公式进一步拆解。之前我们说过, τ \tau τ 表示的是从状态 s t s_{t} st 出发的某条路径,那么假设轨迹总长度为 T T T,将其展开可以得到:

π ( τ ) = π ( s 0 , a 0 , ⋯   , s T , a T ) = p ( s 0 ) ∏ t = 0 T π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) \begin{aligned} \pi(\boldsymbol{\tau}) &=\pi\left(\boldsymbol{s}_{0}, \boldsymbol{a}_{0}, \cdots, \boldsymbol{s}_{T}, \boldsymbol{a}_{T}\right) \\ &=p\left(\boldsymbol{s}_{0}\right) \prod_{t=0}^{T} \pi_{\theta}\left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right) p\left(\boldsymbol{s}_{t+1} | \boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right) \end{aligned} π(τ)=π(s0,a0,,sT,aT)=p(s0)t=0Tπθ(atst)p(st+1st,at)

对齐求导,可以得到
∇ θ l o g π ( τ ) = ∇ θ l o g [ ∏ t = 0 T π θ ( a t ∣ s t ) ] = ∇ θ [ p ( s 0 ) + ∑ t = 0 T l o g π θ ( a t ∣ s t ) + ∑ t = 0 T l o g π θ p ( s t + 1 ∣ s t , a t ) ] = ∑ t = 0 T ∇ θ l o g π θ ( a t ∣ s t ) \begin{aligned} \nabla_{\theta}log\pi(\boldsymbol{\tau}) &=\nabla_{\theta}log[\prod_{t=0}^{T}\pi_{\theta}\left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right)] \\ &=\nabla_{\theta}[p\left(\boldsymbol{s}_{0}\right)+\sum_{t=0}^{T}log\pi_{\theta}\left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right)+\sum_{t=0}^{T}log\pi_{\theta}p\left(\boldsymbol{s}_{t+1} | \boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right)] \\ &=\sum_{t=0}^{T}\nabla_{\theta}log\pi_{\theta} \left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right)\end{aligned} θlogπ(τ)=θlog[t=0Tπθ(atst)]=θ[p(s0)+t=0Tlogπθ(atst)+t=0Tlogπθp(st+1st,at)]=t=0Tθlogπθ(atst)

到这里公式和最大似然公式没有区别。再想一下蒙特卡罗方法,他是一种通过随机采样估计期望的方法,所以我们可以通过样本序列逼近真实的期望,样本序列就是从状态 s s s和行为 a a a开始不断地与环境交互得到的,
s t , a t , s t + 1 i , a t + 1 i i = 1 N {s_t, a_t,s_{t+1}^{i}, a_{t+1}^{i}}_{i=1}^{N} st,at,st+1i,at+1ii=1N

将上式中的期望用蒙特卡罗近似的方法进行替换,可以得到求解梯度的最终形式

总结 PG方法

  1. 计算 ∇ θ J ( θ ) \nabla_{\theta}J(\theta) θJ(θ)
  2. 更新参数 θ = θ + α ∗ ∇ θ J θ \theta =\theta + \alpha*\nabla_{\theta}J{\theta} θ=θ+αθJθ
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值