当前位置: 代码迷 >> 综合 >> RL策略梯度方法之(十七): Stein Variational Policy Gradient (SVPG)
  详细解决方案

RL策略梯度方法之(十七): Stein Variational Policy Gradient (SVPG)

热度:11   发布时间:2023-12-15 05:33:02.0

本专栏按照 https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html 顺序进行总结 。


文章目录

  • 原理解析
  • 算法实现
    • 总体流程
    • 代码实现


斯坦变分策略梯度

SVPG\color{red}SVPGSVPG :[ paper:Stein Variational Policy Gradient | code ]


原理解析

这是一种 应用Stein变分梯度下降法更新策略参数的算法。

在最大熵策略优化设置中,θ\thetaθ 被认为是一个随机变量,服从于:θ?q(θ)\theta \sim q(\theta)θ?q(θ),模型期望学到 分布 q(θ)q(\theta)q(θ);假设我们知道一个先验知识,即 qqq 看起来像 q0q_0q0?,我们想要引导学习过程使得 θ\thetaθ 这套参数的分布 接近于 q0q_0q0?,即优化以下目标函数
J^(θ)=Eθ?q[J(θ)]?αDKL(q∥q0)\hat{J}(\theta) = \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0)J^(θ)=Eθ?q?[J(θ)]?αDKL?(qq0?)

其中,当 θ?q(θ)\theta \sim q(\theta)θ?q(θ) 时,Eθ?q[R(θ)]\mathbb{E}_{\theta \sim q} [R(\theta)]Eθ?q?[R(θ)] 是 期望回报;DKLD_{KL}DKL? 是 KL 散度。

如果我们没有任何先验信息,我们可以将 q0q_0q0? 设为均匀分布,将 q0(θ)q_0(\theta)q0?(θ) 设为常数。那么上述目标函数即为 SAC,其中熵这一个项鼓励探探索:
J^(θ)=Eθ?q[J(θ)]?αDKL(q∥q0)=Eθ?q[J(θ)]?αEθ?q[log?q(θ)?log?q0(θ)]=Eθ?q[J(θ)]+αH(q(θ))\begin{aligned} \hat{J}(\theta) &= \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0) \\ &= \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha \mathbb{E}_{\theta \sim q} [\log q(\theta) - \log q_0(\theta)] \\ &= \mathbb{E}_{\theta \sim q} [J(\theta)] + \alpha H(q(\theta)) \end{aligned} J^(θ)?=Eθ?q?[J(θ)]?αDKL?(qq0?)=Eθ?q?[J(θ)]?αEθ?q?[logq(θ)?logq0?(θ)]=Eθ?q?[J(θ)]+αH(q(θ))?
J^(θ)=Eθ?q[J(θ)]?αDKL(q∥q0)\hat{J}(\theta) = \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0)J^(θ)=Eθ?q?[J(θ)]?αDKL?(qq0?) 关于 qqq 求导:
?qJ^(θ)=?q(Eθ?q[J(θ)]?αDKL(q∥q0))=?q∫θ(q(θ)J(θ)?αq(θ)log?q(θ)+αq(θ)log?q0(θ))=∫θ(J(θ)?αlog?q(θ)?α+αlog?q0(θ))=0\begin{aligned} \nabla_q \hat{J}(\theta) &= \nabla_q \big( \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0) \big) \\ &= \nabla_q \int_\theta \big( q(\theta) J(\theta) - \alpha q(\theta)\log q(\theta) + \alpha q(\theta) \log q_0(\theta) \big) \\ &= \int_\theta \big( J(\theta) - \alpha \log q(\theta) -\alpha + \alpha \log q_0(\theta) \big) \\ &= 0 \end{aligned} ?q?J^(θ)?=?q?(Eθ?q?[J(θ)]?αDKL?(qq0?))=?q?θ?(q(θ)J(θ)?αq(θ)logq(θ)+αq(θ)logq0?(θ))=θ?(J(θ)?αlogq(θ)?α+αlogq0?(θ))=0?

最优分布是:
log?q?(θ)=1αJ(θ)+log?q0(θ)?1thus q?(θ)?"posterior"∝exp?(J(θ)/α)?"likelihood"q0(θ)?prior\log q^{*}(\theta) = \frac{1}{\alpha} J(\theta) + \log q_0(\theta) - 1 \text{ thus } \underbrace{ q^{*}(\theta) }_\textrm{"posterior"} \propto \underbrace{\exp ( J(\theta) / \alpha )}_\textrm{"likelihood"} \underbrace{q_0(\theta)}_\textrm{prior} logq?(θ)=α1?J(θ)+logq0?(θ)?1 thus "posterior" q?(θ)??"likelihood" exp(J(θ)/α)??prior q0?(θ)??

温度 ααα 决定开发和探索之间的权衡。当 α→0\alpha \rightarrow 0α0 时,θ\thetaθ 仅根据期望回报J(θ)J(\theta)J(θ) 进行更新;当 α→∞\alpha \rightarrow \inftyα 时,θ\thetaθ 始终遵循先验信念。

当 利用SVGD方法估计目标的后验分布 q(θ)q(\theta)q(θ)的时候,它依赖于 一组:{θi}i=1n\{\theta_i\}_{i=1}^n{ θi?}i=1n?,(independently trained policy agents),每一个是这么更新:
θi←θi+???(θi)where ??=max??∈H{???DKL(q[θ+??(θ)]′∥q)s.t. ∥?∥H≤1}\theta_i \gets \theta_i + \epsilon \phi^{*}(\theta_i) \text{ where } \phi^{*} = \max_{\phi \in \mathcal{H}} \{ - \nabla_\epsilon D_\text{KL} (q'_{[\theta + \epsilon \phi(\theta)]} \| q) \text{ s.t. } \|\phi\|_{\mathcal{H}} \leq 1\} θi?θi?+???(θi?) where ??=?Hmax?{ ????DKL?(q[θ+??(θ)]?q) s.t. ?H?1}
其中:

  • ?\epsilon? 是学习率
  • ??\phi^{*}?? 是 θ型值向量的 RKHS H\mathcal{H}H 的单位球;极大地降低了粒子与目标分布之间的KL散度。

比较不同的基于梯度的更新方法:

在这里插入图片描述
在这里插入图片描述

算法实现

总体流程

在这里插入图片描述

代码实现

  相关解决方案