强化学习:浅析DDPG
写在文章开头
DDPG作为Actor-Critic方法的典型代表,是强化学习中众多前沿算法的根基,像TD3、MADDPG等等。
本文作为个人的学习笔记,对于一些个人已经理解的要点便不会再过多阐述,因此文章的知识体系可能会显得不够系统。文末会附上DDPG的实现代码。欢迎大家指出文章中的错误,共同学习。
DDPG之前
在谈DDPG之前,我们首先来回顾一下强化学习的目标,这有利于我们去理解deterministic policy gradient(注意,这里说的确定性策略梯度不是DPG本身这个算法,而是指数学上DPG这一梯度表达式)。
目标
简单来讲,强化学习的目标就是要为智能体找到一个策略
π
\pi
π,使得奖励
R
t
R_t
Rt(需要满足
t
=
1
t=1
t=1也即从智能体与环境交互之初就开始计算)的期望值最大,也就是下式最大:
J
=
E
r
i
,
s
i
∼
E
,
a
i
∼
π
[
R
1
]
J=\Epsilon_{r_i,s_i \sim E,a_i\sim\pi}[R_1]
J=Eri,si∼E,ai∼π[R1]
式中,
E
E
E代表环境。
基本要素
强化学习中对状态价值函数的定义是
V
π
(
s
)
=
E
π
[
R
t
∣
S
t
=
s
]
V^{\pi}(s)=\Epsilon_{\pi}[R_t|S_{t}=s]
Vπ(s)=Eπ[Rt∣St=s]对动作价值函数的定义则是
Q
π
(
s
,
a
)
=
E
π
[
R
t
∣
S
t
=
s
,
A
t
=
a
]
Q^{\pi}(s,a)=\Epsilon_{\pi}[R_{t}|S_{t}=s,A_t=a]
Qπ(s,a)=Eπ[Rt∣St=s,At=a]所以实际上,
V
π
V^{\pi}
Vπ就是对
Q
π
Q^{\pi}
Qπ中动作
A
t
A_t
At积分后的结果,也就是有如下的关系式:
V
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
Q
π
(
s
,
a
)
V^{\pi}(s)=\sum_{a∈A}\pi(a|s)Q^{\pi}(s,a)
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
贝尔曼方程
许多value-based的强化学习算法都基于下面这个递归式也即贝尔曼方程:
Q
π
(
s
t
,
a
t
)
=
E
r
t
,
s
t
+
1
∼
E
[
r
(
s
t
,
a
t
)
+
γ
E
a
t
+
1
∼
π
[
Q
π
(
s
t
+
1
,
a
t
+
1
)
]
]
Q^{\pi}(s_t,a_t)=\Epsilon_{r_t,s_{t+1}\sim E}\Big[r(s_t,a_t)+\gamma\Epsilon_{a_{t+1}\sim\pi}[Q^{\pi}(s_{t+1},a_{t+1})]\Big]
Qπ(st,at)=Ert,st+1∼E[r(st,at)+γEat+1∼π[Qπ(st+1,at+1)]]这个式子其实可以通过
Q
π
Q^{\pi}
Qπ和
V
π
V^{\pi}
Vπ的关系推导出来,这里就不再赘述。
深度确定性策略
我们观察上面的贝尔曼方程,如果目标策略 π \pi π(target policy)是确定性的,那么就可以避免内部的期望项。为什么这样说呢?我们首先把这一确定性策略描述为一个映射函数 μ : S → A \mu:S→A μ:S→A,也就是说这一确定性策略抹去了概率,那么就不存在采样的动作 a t + 1 ∼ π a_{t+1}\sim \pi at+1∼π。
其实这种确定性策略的定义非常常见,其实Q-learning也使用过:
μ
(
s
)
=
arg
max
a
Q
(
s
,
a
)
\mu(s)=\arg \max_{a}Q(s,a)
μ(s)=argamaxQ(s,a)
从上面这个式子就可以知道Q-learning based的强化学习算法其都是某种意义上的确定性策略,并且这些确定性策略的计算方法便是取那些能够使
Q
Q
Q值最大的动作。不过,正是因为这一点,Q-learning based的强化学习算法,哪怕是DQN,Double DQN,Dueling DQN,也无法解决这样的一个问题:当动作空间
A
A
A是离散的时候,求最大值就像是在极少的数值内作比较,找最大值;但当动作空间是连续的时候,求最大值变成了求导的问题,我们会对
Q
Q
Q关于
a
a
a求偏导,去寻找极值点,这样的话,在算法迭代的每一轮都要求导,训练周期明显加大,算法效率极低。所以,才有Policy-based的方法诞生,而DDPG是它们中最闪耀的算法之一。
尽管Q-learning based的方法有局限性,但DDPG却集百家之长。简单来讲,DDPG的组成可以这样来说明:
DDPG = DPG + DQN + (BatchNormalization)
对这个公式我分两方面理解。
DDPG继承了DPG的衣钵,它们都有所谓的“ 确定性策略 ”。这个词在强化学习中非常常见,那么到底是什么意思呢?
对这个问题我们这样来讲:DDPG恰好又继承了Q-learning的策略形式(只是继承了思想,但不是上面这个式子),不过它加入了这样的一种确定性策略:
μ
(
s
∣
θ
μ
)
\mu(s|\theta^{\mu})
μ(s∣θμ)。其中的
θ
μ
\theta^{\mu}
θμ是确定性策略
μ
\mu
μ的参数。看到一个函数带有参数,我们很快就能想到用一个神经网络来拟合。
μ
(
s
∣
θ
μ
)
\mu(s|\theta^{\mu})
μ(s∣θμ)的输出是一个动作的确定之,而不是概率(这与Policy Gradient算法恰恰相反)。注意,这个确定性策略也被称为actor,而critic则是
Q
π
(
s
,
a
)
Q^{\pi}(s,a)
Qπ(s,a)(critic通过贝尔曼迭代方程来学习,这是Q-learning的思想,但实际采用了DQN的网络)。actor通过下式进行学习
这个公式来源于DDPG的原论文。对于这个式子原论文是这样说的:
Silver et al. (2014) proved that this is the policy gradient, the gradient of the policy’s performance
总结来讲有两点,DDPG驱动的整个智能体,包含了四个神经网络。
PS
先写到这里,吃午饭。