
0 引言
为了解决连续动作空间的问题,也是绞尽了脑汁。D. Silver在2014和2016年分别提出了DPG[1]和DDPG[2]。就是封面的大神。
首先要区分两个概念:确定性策略和随机性策略。
- 随机性策略:πθ(a|s)=P[a|s;θ]
其含义是,在状态s时,动作符合参数为θ的概率分布。比如说高斯策略:
πθ(a|s)=1√2πσexp(−(a−fθ(s))2σ2)
在状态s时,使用该策略获取动作,多次采样可以看到动作服从均值为fθ(s),方差为σ2的正太分布。也就是说,当使用随机策略时,虽然每次处于相同的状态,但是采取的动作也不一样。 - 确定性策略:a=μθ(s)
其含义是,对于相同的状态,确定性地执行同一个动作。
确定策略有哪些优点呢?需要的采样数据少,算法效率高
1 DPG
为什么要提出DPG?
在解决连续动作空间的问题上,确定性策略的求解通过动作值函数的梯度来实现,形式比较简单。相对随机性策略,估计起来也更加方便。
是什么?
确定性策略:μθ:S→A,其中,θ是策略函数的参数。目标就是确定θ。
目标函数:
J(μθ)=∫Sρμ(s)r(s,μθ(s))ds=Es∼ρμ[r(s,μθ(s))]
其中,状态转移的概率分布可以表示为p(s→s′,t,π),即根据策略π从状态s经过t时间转移到状态s′的概率分布。有了状态转移的概率分布,就可以定义折扣的状态分布
ρπ(s′):=∫S∞∑t=1γt−1p1(s)p(s→s′,t,π)ds
p1(s)为初始的状态分布。
确定性策略梯度:
∇θJ(μθ)=∫Sρμ(s)∇θμθ(s)∇aQμ(s,a)∣a=μθ(s)ds
=Es∼ρμ[∇θμθ(s)∇aQμ(s,a)∣a=μθ(s)]
为什么要对Q函数求偏导数呢?因为对于连续动作空间问题,使用贪婪法,每一步都需要求解概率最大的动作,相当于寻找Q函数的全局最大值,比较困难。于是,一个自然的想法就是将策略函数每次都沿着Q函数的梯度更新参数,而不是求解Q函数的全局最大值。于是,
θk+1=θk+αEs∼ρμk[∇θQμk(s,μθ(s))]
根据链式法则,可以将上式改写成,
θk+1=θk+αEs∼ρμk[∇θμθ(s)∇aQμk(s,a)∣a=μθ(s)]
同策略实现
使用同一个策略产生训练数据,并提升这个策略,会导致“探索”不够充分,最终得到一个此优解。但是,为了展示算法的完整性,还是介绍一下。同样实现的过程用到了AC的思想,actor使用确定性策略梯度更新参数,critic使用Sarsa更新动作-状态值函数。同样的,状态值函数使用函数逼近的方式获得:Qw(s,a)
TD-error: δt=rt+γQw(st+1,at+1)−Qw(st,at)
critic参数更新: wt+1=wt+αwδt∇wQw(st,at)
actor参数更新: θt+1=θt+αθ∇θμθ(st)∇aQw(st,at)∣a=μθ(s) (SGD)
异策略实现
实现大致和同策略一致,只不过学习的数据是通过一个随机策略生成的。
2 DDPG
为什么要提出DDPG?
DDPG解决了四大问题:
一是使用神经网络解决优化问题的一个前提是训练数据独立同分布,但是根据随机策略产生的数据不具备这样的属性,而且为了发挥硬件的特性,需要使用minibatch的数据来进行训练。借鉴DQN的思路,使用Experience Replay的思想。
使用双端队列的代码实现[4]
|
|
二是直接使用神经网络实现Q-learning被证明是不稳定的,可能不会收敛。解决的办法是复制一份actor和critic网络作为target网络,使用相同的网络结构但是不同的参数。
三是当状态特征向量的纬数比较低,不同特征由于不同的单位,数值大小各不相同,并且随着环境的变化而发生变化,这时候就很难有效学习一组参数可以适用于各种环境。通常的解决办法是batch normalization,将每个minibatch中的样本的特征归一化到具有单位均值和方差。
四是增加探索的成分,获取全局最优解。
μ′(st)=μ(st∣θμt)+N
是什么?
算法的伪代码如下:

critic: Q(s,a∣θQ)
L=1N∑i(yi−Q(si,ai∣θQ))2
其中,yi=ri+γQ′(si+1,μ′(si+1∣θμ′)∣θQ′)
actor: μ(s∣θμ)
∇θμJ≈1N∑i∇aQ(s,a∣θQ)∣s=si,a=μ(si)∇θμμ(s∣θμ)∣si
actor: μ′(s∣θμ′)
critic: Q′(s,a∣θQ′)
两种更新策略:
- 每隔C步更新一次;
- 每次更新一点点,如伪代码所示,通常τ是一个很小的数。
DDPG代码实现[4]
Actor的DNN类:
|
|
Critic的DNN类:
|
|
|
|
参考文献
[1] Deterministic Policy Gradients. D. Silver, G. Lever, N. Heess, T. Degris, D. Wierstra, M. Riedmiller. ICML 2014.
[2] Continuous Control with Deep Reinforcement Learning. T. Lillicrap, J. Hunt, A. Pritzel, N. Heess, T. Erez, Y. Tassa, D. Silver, D. Wierstra. ICLR 2016.
[3] 天津包子馅儿 强化学习知识大讲堂 知乎专栏
[4] http://pemami4911.github.io/blog/2016/08/21/ddpg-rl.html