RL策略梯度方法之(六): Deterministic policy gradient(DPG)

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


文章目录

  • 原理解析
    • 回顾策略梯度
    • DPG算法
  • 算法实现
    • 总体流程
    • 代码实现


D P G \color{red}DPG DPG :[ paper | code ]


原理解析

Stochastic Policy Gradient (SPG) 是通过参数化的概率分布 π θ ( a ∣ s ) = P [ a ∣ s ; θ ] {\pi _\theta }(a|s) = P[a|s;\theta ] πθ(as)=P[as;θ] 随机地选择动作,即 π θ ( a ∣ s ) {\pi _\theta }(a|s) πθ(as) 是一个动作的概率分布。
Deterministic Policy Gradient (DPG) 与SPG 不同之处是,这个方法会确定地选择一个动作 a = μ θ ( s ) a = {\mu _\theta }(s) a=μθ(s)

简而言之:

  • 随机策略,在同一个状态处,采用的动作是基于一个概率分布的,即是不确定的。
  • 确定性策略,虽然在同一个状态处,采用的动作概率不同,只取最大概率的动作。

看起来很奇怪吧!当仅仅只输出一个动作的时候,怎么计算动作概率的梯度呢?
接下来我们一步一步地看看~


回顾策略梯度

  1. 策略梯度:
    首先解决一个强化学习问题,我们想到的就是累计折扣奖励的定义,即状态满足 ρ π \rho^{\pi} ρπ 分布上的累计奖励,如下:
    J ( π θ ) = ∫ S ρ π ( s ) ∫ A π θ ( s , a ) r ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ r ( s , a ) ] \begin{aligned}J(\pi_\theta)=&\int_S \rho^\pi(s)\int_A \pi_\theta (s,a)r(s,a)dads\\=&\textcolor{red}{E_{s\sim \rho^\pi ,a\sim \pi_\theta}[r(s,a)]}\end{aligned} J(πθ)==Sρπ(s)Aπθ(s,a)r(s,a)dadsEsρπ,aπθ[r(s,a)]
    ρ π ( s ′ ) = ∫ S ∑ t = 1 ∞ γ t − 1 p 1 ( s ) p ( s → s ′ , t , π ) d s \rho^\pi(s') = \int_S \sum_{t=1}^ {\infty} \gamma^{t-1}\textcolor{blue}{p_1(s) }p(s\to s',t,\pi)ds ρπ(s)=St=1γt1p1(s)p(ss,t,π)ds

    • p 1 ( s ) \textcolor{blue}{p_1(s)} p1(s) 表示初始状态为 s s s 的概率
    • p ( s → s ′ , t , π ) p(s\to s',t,\pi) p(ss,t,π) 表示在策略 π π π 下状态 s s s 经过t时间步到达 s ′ s′ s
  2. 策略梯度定理:
    那么什么是策略梯度呢?策略梯度就是沿着使目标函数变大的方向调整策略的参数,它被定义为:
    ∇ θ J ( π θ ) = ∫ S ρ π ( s ) ∫ A ∇ θ π θ ( s , a ) Q π ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ ∇ θ l o g π θ ( s , a ) Q π ( s , a ) ] \begin{aligned} \nabla_\theta J(\pi_\theta)=&\int_S \rho^\pi(s)\int_A \nabla_\theta \pi_\theta (s,a)Q^\pi(s,a)dads\\=&E_{s\sim \rho^\pi ,a\sim \pi_\theta}[\nabla_\theta log \pi_\theta(s,a)Q^\pi(s,a)]\end{aligned} θJ(πθ)==Sρπ(s)Aθπθ(s,a)Qπ(s,a)dadsEsρπ,aπθ[θlogπθ(s,a)Qπ(s,a)]

  3. stochastic Actor-Critic algorithm
    critic 通过TD的方式估计 action-value function: Q w ( s , a ) = Q π ( s , a ) Q^w(s,a)=Q^\pi(s,a) Qw(s,a)=Qπ(s,a)
    所以,策略梯度定理演化为: ∇ θ J ( π θ ) = ∫ S ρ π ( s ) ∫ A ∇ θ π θ ( s , a ) Q w ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ ∇ θ l o g π θ ( s , a ) Q w ( s , a ) ] \begin{aligned} \nabla_\theta J(\pi_\theta)=&\int_S \rho^\pi(s)\int_A \nabla_\theta \pi_\theta (s,a)Q^w(s,a)dads\\=&E_{s\sim \rho^\pi ,a\sim \pi_\theta}[\nabla_\theta log \pi_\theta(s,a)Q^w(s,a)]\end{aligned} θJ(πθ)==Sρπ(s)Aθπθ(s,a)Qw(s,a)dadsEsρπ,aπθ[θlogπθ(s,a)Qw(s,a)]
    公式非常直白的告诉我们, J ( ) J() J() 函数主要与策略梯度和值函数的期望有关,尽管状态空间分布 ρ π \rho^{\pi} ρπ 的分布依赖于策略参数,但是策略梯度并不依赖于状态分布上的梯度。另外, 在DQN中我们使用了 评价网络 和 target网络,采用了experimence replay的方式打乱了数据之间的相关性而使得满足独立同分布条件,利用softupdating方式更新target网络,但总结一句话,它的策略网路和值函数网络使用的是同一个网络。在DPG的公式表明, J ( ) J() J() 和策略梯度与值函数有关,因此为了解决策略和值函数之间的问题,采用了一种新的解决思路将两个网络分开,即:Actor-critic异步框架。(Actor就是策略网络,来做动作选择(空间探索)。Critic就是值函数,对策略函数进行评估),具体的流程如图:
    RL策略梯度方法之(六): Deterministic policy gradient(DPG)_第1张图片
    简单描述一下图:其中的TD-error就是Critic告诉Actor的偏差。
    具体的更新过程:

δ t = R t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) ; TD error in SARSA w t + 1 = w t + α w δ t ∇ w Q w ( s t , a t ) θ t + 1 = θ t + α θ ∇ a Q w ( s t , a t ) ∇ θ μ θ ( s ) ∣ a = μ θ ( s ) ; 确定性策略梯度定理 \begin{aligned} \quad \delta_t &= R_t + \gamma Q_w(s_{t+1}, a_{t+1}) - Q_w(s_t, a_t) & \scriptstyle{\text{; TD error in SARSA}}\\ w_{t+1} &= w_t + \alpha_w \delta_t \nabla_w Q_w(s_t, a_t) & \\ \qquad\qquad \theta_{t+1} &= \theta_t + \alpha_\theta \color{red}{\nabla_a Q_w(s_t, a_t) \nabla_\theta \mu_\theta(s) \rvert_{a=\mu_\theta(s)}} & \scriptstyle{\text{; 确定性策略梯度定理}} \end{aligned} δtwt+1θt+1=Rt+γQw(st+1,at+1)Qw(st,at)=wt+αwδtwQw(st,at)=θt+αθaQw(st,at)θμθ(s)a=μθ(s); TD error in SARSA确定性策略梯度定理

但是,由于策略的确定性,除非环境中有足够的噪声,否则很难保证足够的探索。我们可以在策略中添加噪声(讽刺的是这会使它变得不确定)或者通过遵循不同的随机行为策略来收集样本来 离线策略地学习它。下面来简单提一下。

  1. Off-policy AC
    比如说,在离线策略方法中,训练轨迹是由随机策略 β ( a ∣ s ) \beta(a|s) β(as) 产生的,因此,状态分布遵循相应的折扣状态密度 ρ β \rho^\beta ρβ
    行为策略: β ( a ∣ s ) ≠ π θ ( a ∣ s ) \beta(a|s)\neq \pi_\theta(a|s) β(as)=πθ(as)
    J β ( π θ ) = ∫ S ρ β ( s ) V π ( s ) d s = ∫ S ∫ A ρ β π θ ( s , a ) Q π ( s , a ) d a d s \qquad\begin{aligned}J_\beta(\pi_\theta)=&\int_S \rho^\beta(s)V^\pi(s)ds\\ =&\int_S \int_A \rho^\beta \pi_\theta (s,a)Q^\pi(s,a)dads\end{aligned} Jβ(πθ)==Sρβ(s)Vπ(s)dsSAρβπθ(s,a)Qπ(s,a)dads
    ∇ θ J β ( π θ ) ≈ ∫ S ∫ A ρ β ( s ) ∇ θ π θ ( s , a ) Q π ( s , a ) d a d s = E s ∼ ρ β , a ∼ β [ π θ ( a ∣ s ) β θ ( a ∣ s ) ∇ θ l o g π θ ( s , a ) Q π ( s , a ) ] \quad\begin{aligned}\nabla_\theta J_\beta(\pi_\theta)\approx&\int_S \int_A \rho^\beta(s)\nabla_\theta \pi_\theta (s,a)Q^\pi(s,a)dads\\=&E_{s\sim \rho^\beta ,a\sim \beta}[\frac{\pi_\theta(a|s)}{\beta_\theta(a|s)} \nabla_\theta log \pi_\theta(s,a)Q^\pi(s,a)]\end{aligned} θJβ(πθ)=SAρβ(s)θπθ(s,a)Qπ(s,a)dadsEsρβ,aβ[βθ(as)πθ(as)θlogπθ(s,a)Qπ(s,a)]
    注意,由于策略是确定性的,所以我们只需要 Q μ ( s , μ θ ( s ) ) Q^\mu(s, \mu_\theta(s)) Qμ(s,μθ(s)) 作为给定状态 s s s 的估计奖励,而不是 ∑ a π ( a ∣ s ) Q π ( s , a ) \sum_a \pi(a \vert s) Q^\pi(s, a) aπ(as)Qπ(s,a)
    在随机策略的 off-policy 方法中,我们经常使用重要性采样 来纠正 行为和目标政策 之间的不匹配,正如我们上面所描述的。然而,由于确定性策略梯度消除了对动作的积分,我们可以避免重要性抽样。

DPG算法

现在考虑如何将策略梯度框架扩展到确定性政策。【确定性策略梯度定理实际上是随机策略梯度定理的一个极限情况,具体证明见论文】

那么极限情况是啥呢?就是当概率策略的方差趋近于0的时候,就是 确定性策略,即
在这里插入图片描述
上面这个式子的推导过程可以理解为



DPG算法本身采用的是PG方法,因而直接对轨迹的价值回报进行求导: ∇ θ v μ θ ( s ) = ∇ θ [ Q μ ( s , μ θ ( s ) ) ] \nabla_\theta v_{\mu_{\theta}} (s)=\nabla_\theta[Q^\mu(s,\mu_\theta(s))] θvμθ(s)=θ[Qμ(s,μθ(s))]

链式法则,由于 μ θ ( s ) μ_θ(s) μθ(s) 与确定性策略价值函数 Q μ Q^μ Qμ 有关,因而 : ∇ θ v μ ( s ) = ∇ μ θ ( s ) [ Q μ ( s , μ θ ( s ) ) ] ∇ θ μ θ ( s ) \nabla_\theta v_\mu(s) = \nabla_{\mu_\theta(s)}[Q^\mu(s, \mu_\theta(s))]\nabla_\theta\mu_\theta(s) θvμ(s)=μθ(s)[Qμ(s,μθ(s))]θμθ(s)

  • on-policy的确定性策略梯度算法
    img
  • off-policy的确定性策略梯度算法(Replay buffer中的数据是通过 β β β 采样得到的),异策略确定性策略梯度
    img
    上两式的区别就是使用了不同的数据采样分布。可以看到off-policy缺少了重要性采样,这是由于确定性策略的动作是固定值,不是一个分布。( β \beta β 是采样策略, μ \mu μ 是评估策略)


该算法采用AC框架:

  • [Actor] 衡量一个策略网络的表现(策略网络目标函数),最大化策略目标: (根据上面推导的DPG)
    J β ( θ ) = ∫ S ρ β ( s ) Q ω ( s , μ ( s ) ) d s = E s ∼ ρ β [ Q ω ( s , μ ( s ) ) ] \begin{aligned} J_\beta (\theta)&=\int_S ρ^\beta(s)Q^\omega(s, \mu(s))ds\\ &=\mathbb{E}_{s\simρ^\beta}[Q^\omega(s, \mu(s))] \end{aligned} Jβ(θ)=Sρβ(s)Qω(s,μ(s))ds=Esρβ[Qω(s,μ(s))]

    • s s s 是环境的状态,这些状态 是基于agent 的 行动策略产生的,它们的分布函数 为 ρ β ρ^β ρβ
    • Q ω ( s , μ ( s ) ) Q^ω(s,μ(s)) Qω(s,μ(s)) 是在每个状态下,如果都按照 μ μ μ 策略选择action时,能够产生的 Q Q Q 值。 也即, J β ( μ ) J_β(μ) Jβ(μ) 是在 s s s 根据 ρ β ρ^β ρβ 分布时, Q ω ( s , μ ( s ) ) Q^ω(s,μ(s)) Qω(s,μ(s)) 的期望值。
  • [Critic] 最小化值网络目标:

\qquad Q ^ ω ( s t , a t ) = E [ r ( s t , a t ) + γ Q ω ( s t + 1 , a t + 1 ) ] \hat{Q}^\omega(s_t, a_t)=\mathbb{E}[r(s_t,a_t)+\gamma Q^\omega(s_{t+1},a_{t+1})] Q^ω(st,at)=E[r(st,at)+γQω(st+1,at+1)]

\qquad J β ( ω ) = E s ∼ ρ β [ 1 2 ( r t + γ Q ω ( s t + 1 , a t + 1 ) − Q ω ( s t , a t ) ) 2 ] J_\beta(\omega)=\mathbb{E}_{s\simρ^\beta}[\frac{1}{2}(r_t+\gamma Q^\omega(s_{t+1},a_{t+1})-Q^\omega(s_t,a_t))^2] Jβ(ω)=Esρβ[21(rt+γQω(st+1,at+1)Qω(st,at))2]

最终DPG的目标函数为: ω ω ω 是值网络 , θ θ θ 是策略网络 )
img

参数更新为:
img
img

确定性策略梯度的优点在于 需要采样的数据少,算法效率高。

算法实现

总体流程

暂无

代码实现

暂无

你可能感兴趣的:(强化学习,RL,基础算法,强化学习)