一、DGP推导
本篇介绍确定性策略梯度算法,该算法主要用于off-policy(on-policy也能用)。在DQN等值函数估计算法中,最终策略的形式是需要对动作状态值函数取极大a=argmaxa′Q(s,a′),这种方法只能用在有限的离散动作空间中,无法应用在较大离散空间或是连续的动作空间。
随机策略梯度法的核心公式为
∇θJ(θ)=Eτ∼πθ[(t=0∑T∇θlogπθ(ai,t∣si,t))(t=0∑Tr(si,t,ai,t))]
策略梯度算法直接对轨迹的价值函数求导,因此它不用完成最优动作选取的过程,就算在AC算法中也是使用的rt+v(st+1)−v(st),不需要选取下一次的动作。但这种方法是on-policy算法,非常依赖与环境交互的过程,并且无法利用之前采样的数据进行更新策略,造成资源的浪费。DQN可以采用off-policy算法进行学习,DPG是将这两种方法的优势相结合。
DPG与DQN都是采用e-greedy的方法与环境进行交互,因为DPG是确定性策略,可以在确定的行动上加上噪声作为随机策略。
DPG与随机策略梯度算法相同,也是直接对轨迹的期望价值函数进行求导,公式推导如下所示
∇θvμ(s)=∇θ[qμ(s,μθ(s))]
与随机策略不同,确定性策略的价值函数与确定性策略有关,因此求导时应该使用链式法则,如下所示
∇μ(s)qμ(s,μ(s))∇θμθ(s)
由于是确定性策略,在价值函数q(s,μ(s))中有策略参数θ,因此需要将价值函数对策略求导。在这个梯度公式中,没有了与动作有关的期望项,因此相对于随机性策略,确定性策略需要的学习数据少,算法效率高,尤其对于动作空间维数很大的情况。
策略模型参数一致性
下面引入DPG重要的一个概念:策略模型参数的一致性。
在DPG中,为了更好的能适用于off-policy的算法,并且采用TD的方式降低方差。需要定义一个函数Qω:S×A→R来拟合真实的动作状态值函数。若Qω:S×A→R最终收敛,则梯度满足下面的公式
Ea,s∼τ[(Q(s,a)−Qω(s,a))∇ωQω(s,a)]=0
论文《policy gradient methods for reinforcement learning with function approximation》中证明,当Qω:S×A→R满足上式,并且满足下式时
∇ωQω(s,a)=∇θlogπθ(s,a)=∇θπθ(s,a)π(s,a)1
在计算梯度时可以使用Qω:S×A→R代替真实的动作状态值函数Q(s,a)。并且神经网络满足这个性质,因此可以使用神经网络拟合动作状态值函数。这样价值模型不需要遵循某个具体的策略,因此可以使用off-policy的方式进行学习更新。
下面给出on-policy的确定性策略梯度算法(DPG)
∇θJ(μθ)=Es∼ρμθ[∇θμθ(s)∇μQω(s,μ)]
给出off-policy策略梯度算法
∇θJ(μθ)=Es∼β[∇θμθ(s)∇μQω(s,μ)]
上两式的区别就是使用了不同的数据采样分布。可以看到off-policy缺少了重要性采样,这是由于确定性策略的动作是固定值,不是一个分布;其次是因为确定性策略值函数的评估采用的是Q-learning的方法,即使用TD(0)估计动作值函数并忽略重要性权重,值函数不依赖于任何策略,并贪心获取下一个动作。
最终DPG的目标函数为
J(ω)J(θ)=ωminEβ[21(rt+γQω(st+1,at+1)−Qω(st,at))2]=θmaxEβ[Qω(st,μ(st))]
则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)]
二、DDGP
DDPG借鉴了DQN的经验回放与目标网络。采用滑动平均的方法更新目标网络的参数,其具体更新情况如下
δtωt+1θt+1θω=rt+γQω(st+1,μθ(st+1))−Qω(st,at)=ωt+αωδt∇ωQω(st,at)=θt+αθ∇θμθ(st)∇aQω(st,at)∣a=μθ(s)=τθ+(1−τ)θ=τω+(1−τ)ω
其中τ通常设置的非常接近1。
算法流程如下
