一、DGP推导

本篇介绍确定性策略梯度算法,该算法主要用于off-policy(on-policy也能用)。在DQN等值函数估计算法中,最终策略的形式是需要对动作状态值函数取极大a=argmaxaQ(s,a)a={\rm argmax}_{a'}Q(s,a'),这种方法只能用在有限的离散动作空间中,无法应用在较大离散空间或是连续的动作空间。

随机策略梯度法的核心公式为
θJ(θ)=Eτπθ[(t=0Tθlogπθ(ai,tsi,t))(t=0Tr(si,t,ai,t))] \nabla_{\theta}J(\theta)=E_{\tau\sim\pi_{\theta}}[(\sum_{t=0}^T\nabla_{\theta}\log\pi_{\theta}(a_{i,t}|s_{i,t}))(\sum_{t=0}^Tr(s_{i,t},a_{i,t}))]
策略梯度算法直接对轨迹的价值函数求导,因此它不用完成最优动作选取的过程,就算在AC算法中也是使用的rt+v(st+1)v(st)r_{t}+v(s_{t+1})-v(s_{t}),不需要选取下一次的动作。但这种方法是on-policy算法,非常依赖与环境交互的过程,并且无法利用之前采样的数据进行更新策略,造成资源的浪费。DQN可以采用off-policy算法进行学习,DPG是将这两种方法的优势相结合。

DPG与DQN都是采用e-greedy的方法与环境进行交互,因为DPG是确定性策略,可以在确定的行动上加上噪声作为随机策略。

DPG与随机策略梯度算法相同,也是直接对轨迹的期望价值函数进行求导,公式推导如下所示
θvμ(s)=θ[qμ(s,μθ(s))] \nabla_{\theta}v_{\mu}(s)=\nabla_{\theta}[q_{\mu}(s,\mu_\theta(s))]
与随机策略不同,确定性策略的价值函数与确定性策略有关,因此求导时应该使用链式法则,如下所示
μ(s)qμ(s,μ(s))θμθ(s) \nabla_{\mu(s)}q_\mu(s,\mu(s))\nabla_\theta\mu_\theta(s)
由于是确定性策略,在价值函数q(s,μ(s))q(s,\mu(s))中有策略参数θ\theta,因此需要将价值函数对策略求导。在这个梯度公式中,没有了与动作有关的期望项,因此相对于随机性策略,确定性策略需要的学习数据少,算法效率高,尤其对于动作空间维数很大的情况。


策略模型参数一致性

下面引入DPG重要的一个概念:策略模型参数的一致性。
在DPG中,为了更好的能适用于off-policy的算法,并且采用TD的方式降低方差。需要定义一个函数Qω:S×ARQ^\omega:S\times A\to R来拟合真实的动作状态值函数。若Qω:S×ARQ^\omega:S\times A\to R最终收敛,则梯度满足下面的公式
Ea,sτ[(Q(s,a)Qω(s,a))ωQω(s,a)]=0 E_{a,s\sim\tau}[(Q(s,a)-Q^\omega(s,a))\nabla_\omega Q^\omega(s,a)]=0
论文《policy gradient methods for reinforcement learning with function approximation》中证明,当Qω:S×ARQ^\omega:S\times A\to R满足上式,并且满足下式时
ωQω(s,a)=θlogπθ(s,a)=θπθ(s,a)1π(s,a) \nabla_\omega Q^\omega(s,a)=\nabla_\theta \log \pi_\theta(s,a)=\nabla_\theta \pi_\theta(s,a)\frac{1}{\pi(s,a)}
在计算梯度时可以使用Qω:S×ARQ^\omega:S\times A\to R代替真实的动作状态值函数Q(s,a)Q(s,a)。并且神经网络满足这个性质,因此可以使用神经网络拟合动作状态值函数。这样价值模型不需要遵循某个具体的策略,因此可以使用off-policy的方式进行学习更新。


下面给出on-policy的确定性策略梯度算法(DPG)
θJ(μθ)=Esρμθ[θμθ(s)μQω(s,μ)] \nabla_{\theta}J(\mu_\theta)=E_{s\sim\rho^{\mu_\theta}}[\nabla_{\theta}\mu_\theta(s)\nabla_\mu Q^\omega(s,\mu)]
给出off-policy策略梯度算法
θJ(μθ)=Esβ[θμθ(s)μQω(s,μ)] \nabla_{\theta}J(\mu_\theta)=E_{s\sim\beta}[\nabla_{\theta}\mu_\theta(s)\nabla_\mu Q^\omega(s,\mu)]
上两式的区别就是使用了不同的数据采样分布。可以看到off-policy缺少了重要性采样,这是由于确定性策略的动作是固定值,不是一个分布;其次是因为确定性策略值函数的评估采用的是Q-learning的方法,即使用TD(0)估计动作值函数并忽略重要性权重,值函数不依赖于任何策略,并贪心获取下一个动作。

最终DPG的目标函数为
J(ω)=minωEβ[12(rt+γQω(st+1,at+1)Qω(st,at))2]J(θ)=maxθEβ[Qω(st,μ(st))] \begin{aligned} J(\omega)&=\min_\omega E_\beta[\frac{1}{2}(r_t+\gamma Q^\omega(s_{t+1},a_{t+1})-Q^\omega(s_t,a_t))^2]\\ J(\theta)&=\max_\theta E_\beta[Q^\omega(s_t,\mu(s_t))] \end{aligned}
则DPG参数更新公式为
ωt+1=ωt+αEβ[(rt+γQω(st+1,at+1)Qω(st,at))ωQω(st,at)]θt+1=θt+αEβ[aQω(st,at)a=μθ(s)θμθ(st)] \begin{aligned} \omega_{t+1}=\omega_{t} + \alpha E_\beta[(r_t+\gamma Q^\omega(s_{t+1},a_{t+1})-Q^\omega(s_t,a_t))\nabla_\omega Q^\omega(s_t,a_t)]\\ \theta_{t+1} = \theta_{t}+\alpha E_\beta[\nabla_a Q^\omega(s_t,a_t)|_{a=\mu_\theta(s)}\nabla_\theta \mu_\theta(s_t)] \end{aligned}

二、DDGP

DDPG借鉴了DQN的经验回放与目标网络。采用滑动平均的方法更新目标网络的参数,其具体更新情况如下
δt=rt+γQω(st+1,μθ(st+1))Qω(st,at)ωt+1=ωt+αωδtωQω(st,at)θt+1=θt+αθθμθ(st)aQω(st,at)a=μθ(s)θ=τθ+(1τ)θω=τω+(1τ)ω \begin{aligned} \delta_t&=r_t+\gamma Q^{\overline \omega}(s_{t+1},\mu_{\overline \theta}(s_{t+1}))-Q^\omega(s_t,a_t)\\ \omega_{t+1}&=\omega_t + \alpha_\omega \delta_t \nabla_\omega Q^\omega(s_t,a_t)\\ \theta_{t+1}&=\theta_t + \alpha_\theta \nabla_\theta\mu_\theta(s_t)\nabla_a Q^\omega(s_t,a_t)|_{a=\mu_\theta(s)}\\ \overline \theta &= \tau \theta+(1-\tau)\overline \theta\\ \overline \omega &= \tau \omega + (1-\tau) \overline \omega \end{aligned}
其中τ\tau通常设置的非常接近1。

算法流程如下
DQN&DDQN算法推导及分析

相关文章: