本文为博主“声时刻”原创文章,未经博主允许不得转载。
联系方式:shenshikexmu@163.com
缘起
DDPG,是Google Deepmind第一篇关于连续动作的深度加强学习论文(是否第一篇存疑)。DQN(Deep Q Network)生成的策略执行的动作是离散或者低维的,虽然在状态输入上可以是高维的观察状态。如在DQN2014中,有效的动作在4到18个之间,而输入的状态是84×84×4的图片。相对于连续动作,DQN的动作空间太小了,原文的to to simply,使得DQN瞬间沦为香港记者,呵呵。文中举的例子,是7个自由度(DOF)的机械臂,只是粗糙的控制,每一个DOF只有三种动作状态
a
i
∈
{
−
k
,
0
,
k
}
a_i\in\{-k,0,k\}
ai∈{−k,0,k},那么整个机械臂的运动状态就有
3
7
=
2187
3^7=2187
37=2187。这样的动作空间,DQN在学习中很难一一搜索,更何况一个DOF很难只有三种动作状态。再加上,简单离散的动作空间中的动作是不需要根据运动空间的结构进行动作取舍,而在复杂动作操作时这样的取舍是基本的(Additionally, naive discretization of action spaces needlessly throws away information about the structure of the action domain, which may be essential for solving many problems)。发现这句话理解起来有点难,我的理解是(不保证对),由于DQN运动状态空间比较少,所有的运动状态在策略学习时都可以遍历,取舍的问题直接由策略决定,但连续动作的控制就不行了,不可能每个动作都遍历,形成策略,策略决定动作取舍。
于是需要新的深度强化学习方法,来解决连续动作空间的策略问题。
背景知识
s
t
=
(
x
1
,
a
1
,
.
.
.
,
a
t
−
1
,
x
t
)
s_t=(x_1,a_1,...,a_{t-1},x_t)
st=(x1,a1,...,at−1,xt)
状态动作轨迹
π
:
S
→
P
(
A
)
\pi: S \rightarrow P(A)
π:S→P(A)
策略概率
π
\pi
π ,
π
\pi
π首先是概率分布,这对理解强化学习很重要。不同的状态,所对应的不同动作出现的概率。也就是对于特定的
S
i
S_i
Si状态,
P
(
A
i
)
P(A_i)
P(Ai)是个概率分布,如在
S
i
S_i
Si状态下,选择
A
1
A_1
A1的动作概率是
P
(
A
1
)
P(A_1)
P(A1),选择
A
2
A_2
A2的动作概率是
P
(
A
2
)
P(A_2)
P(A2)。
p
(
s
t
+
1
∣
s
t
,
a
t
)
p(s_{t+1}\mid s_t,a_t)
p(st+1∣st,at)
状态转移概率,当前状态是
s
t
s_t
st,在此状态下完成
a
t
a_t
at动作,下一个状态变成
s
t
+
1
s_{t+1}
st+1的概率。
r
(
s
t
,
a
t
)
r(s_t,a_t)
r(st,at)
回报函数,这里给出的
r
r
r值,可不是单独在
s
t
s_t
st状态下,完成
a
t
a_t
at的回报(算法要求出的
Q
(
s
t
,
a
t
)
Q(s_t,a_t)
Q(st,at)是单独在
s
t
s_t
st状态下,完成
a
t
a_t
at的回报),而是之前所有动作在当时特定状态下的回报的累加。也就是之前的动作对当前的
r
r
r值也是有贡献的。
R
t
=
∑
i
=
t
T
γ
i
−
t
r
(
s
i
,
a
i
)
R_t=\sum_{i=t}^{T}\gamma^{i-t}r(s_i,a_i)
Rt=∑i=tTγi−tr(si,ai)
R
t
=
γ
0
r
(
s
t
,
a
t
)
+
γ
1
r
(
s
t
+
1
,
a
t
+
1
)
+
.
.
.
γ
T
−
t
r
(
s
T
,
a
T
)
R_t=\gamma^{0}r(s_t,a_t)+\gamma^{1}r(s_{t+1},a_{t+1})+...\gamma^{T-t}r(s_T,a_T)
Rt=γ0r(st,at)+γ1r(st+1,at+1)+...γT−tr(sT,aT)
折扣累计奖赏,这是在
s
t
s_t
st状态下,完成
a
t
a_t
at后,在接下来的
T
−
t
T-t
T−t步后,
s
t
s_t
st状态和动作
a
t
a_t
at,累加的奖赏。
R
t
R_t
Rt更接近算法求出的
Q
(
s
t
,
a
t
)
Q(s_t,a_t)
Q(st,at)。说是接近,在于
Q
(
s
t
,
a
t
)
Q(s_t,a_t)
Q(st,at)更像是量子力学中的叠加态,它是概率分布的,
R
t
R_t
Rt更像是坍缩态,也就是你已经知道薛定谔的猫是死是活的结果。
J
=
E
r
i
,
s
i
∼
E
,
a
i
∼
π
[
R
1
]
J=E_{r_i,s_i\sim{E},a_i\sim{\pi}}[R_1]
J=Eri,si∼E,ai∼π[R1]
首先这是个期望值,这是全篇论文理解的一个眼,这个公式理解了,论文思想理解80%了。里面包含
s
i
∼
E
s_i\sim{E}
si∼E,用周志华《机器学习》中p378中(16.8)的表示方式为
P
s
i
→
s
i
+
1
a
i
P_{s_i \rightarrow s_{i+1}}^{a_i}
Psi→si+1ai,在状态
s
i
s_i
si下,动作
a
i
a_i
ai产生下一个状态为
s
i
+
1
s_{i+1}
si+1的概率。
a
i
∼
π
a_i\sim{\pi}
ai∼π为上面讲的策略概率。在DPG2014第一个公式写得更容易理解:
J
(
π
θ
)
=
∫
S
ρ
π
(
s
)
∫
A
π
θ
(
s
,
a
)
r
(
s
,
a
)
d
a
d
s
=
E
s
∼
ρ
π
,
a
∼
π
θ
[
r
(
s
,
a
)
]
J(\pi_\theta)=\int_{S}\rho^{\pi}(s)\int_A\pi_\theta(s,a)r(s,a)dads\\ \qquad =E_{s\sim{\rho^{\pi}},a\sim{\pi_{\theta}}}[r(s,a)]
J(πθ)=∫Sρπ(s)∫Aπθ(s,a)r(s,a)dads=Es∼ρπ,a∼πθ[r(s,a)]
两个公式是一样的,在概率策略
π
θ
\pi_\theta
πθ下,所有的状态对应动作概率下回报的期望,这么说也很难理解吧,通俗一点,有点像原子核周围的电子云,原子核周围的电子并不像地球、火星之类有明确的轨道,其状态也是呈概率分布,
J
J
J相当于电子云带的能量。
$ Q^{\pi}(s_t,a_t)=E_{r_{i \ge t},s_i>t\sim{E},a_i>t\sim{\pi}}[R_t\mid s_t,a_t]\qquad(1) $
文中第一个标号的公式,也是期望值,类似前面的解释,再说一点,
π
\pi
π和
E
E
E都是很多动作或者状态的叠加,叠加的权值是概率。打符号开始差点打错了,是
i
≥
t
i \ge t
i≥t,而不是
r
i
≥
t
r_i \ge t
ri≥t。也就是说
i
i
i是一个长的序列。在下面的公式中
i
i
i就只是下一步了。
$ Q^{\pi}(s_t,a_t)=E_{r_t ,s_{t+1}\sim{E}}[r(s_t,a_t)+\gamma E_{a_{t+1}\sim {\pi}}[Q^{\pi}(s_{t+1},a_{t+1})]]\qquad(2)$
Bellman等式,由上面的公式变形来的,也是期望值。有点像信号处理的Z变换(傅立叶变换是Z变换的特殊形式),把时域的信号转化成频域的信号。
Q
π
(
s
t
,
a
t
)
Q^{\pi}(s_t,a_t)
Qπ(st,at)脱掉了长长的
i
i
i,只对应
t
+
1
t+1
t+1的时刻,注意这里是
Q
π
(
s
t
,
a
t
)
Q^{\pi}(s_t,a_t)
Qπ(st,at)和
Q
π
(
s
t
+
1
,
a
t
+
1
)
Q^{\pi}(s_{t+1},a_{t+1})
Qπ(st+1,at+1)都是期望值。
$ Q^{\mu}(s_t,a_t)=E_{r_t ,s_{t+1}\sim{E}}[r(s_t,a_t)+\gamma Q^{\mu}(s_{t+1},\mu(s_{t+1}))]\qquad(3)$
当策略概率
π
\pi
π,坍缩成目标策略
μ
\mu
μ时,
(
2
)
(2)
(2)中的中括号期望变成了确定
μ
(
s
t
+
1
)
\mu(s_{t+1})
μ(st+1)对应的动作。但
Q
μ
(
s
t
,
a
t
)
Q^{\mu}(s_t,a_t)
Qμ(st,at)仍旧是个期望值,因为这样的式子
P
s
i
→
s
i
+
1
a
i
P_{s_i \rightarrow s_{i+1}}^{a_i}
Psi→si+1ai,同样状态
s
i
s_i
si下同样动作
a
i
a_i
ai产生的结果并不是固定的。同样
Q
π
(
s
t
+
1
,
a
t
+
1
)
Q^{\pi}(s_{t+1},a_{t+1})
Qπ(st+1,at+1)也都是期望值。
L
(
θ
Q
)
=
E
s
t
∼
ρ
β
,
a
t
∼
β
,
r
t
∼
E
[
(
Q
(
s
t
,
a
t
∣
θ
Q
)
−
y
t
)
2
]
(
4
)
L(\theta^Q)=E_{s_t\sim{\rho^\beta},a_t\sim{\beta},r_t\sim{E}}[(Q(s_t,a_t\mid\theta^Q)-y_t)^2]\qquad(4)
L(θQ)=Est∼ρβ,at∼β,rt∼E[(Q(st,at∣θQ)−yt)2](4)
其中
y
t
=
r
(
s
t
,
a
t
)
+
γ
Q
(
s
t
+
1
,
μ
(
s
t
+
1
)
∣
θ
Q
)
(
5
)
y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})\mid \theta^Q) \qquad(5)
yt=r(st,at)+γQ(st+1,μ(st+1)∣θQ)(5)
其中
μ
(
s
)
=
a
r
g
m
a
x
a
Q
(
s
,
a
)
\mu(s)=arg max_aQ(s,a)
μ(s)=argmaxaQ(s,a)是贪心算法,选择期望最大回报的执行动作。由于算法采用“异策略“(off-policy),也就是被评估与被改进的不是同一个策略,被评估的策略是随机动作策略
β
\beta
β。
算法
算法利用了DQN2014中的”行为-评价”方法(actor-critic),建立两个神经网络,一个行为函数网络(actor function) μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ(s∣θμ),其中 θ μ \theta^\mu θμ是其神经网络的参数;一个评价函数网络(critic) Q ( s , a ∣ θ Q ) Q(s,a\mid \theta^Q) Q(s,a∣θQ),其中 θ Q \theta^Q θQ是其神经网络参数。
算法在迭代的过程中,评价函数网络 Q ( s , a ∣ θ Q ) Q(s,a\mid \theta^Q) Q(s,a∣θQ)通过bellman等式,也就是(4)(5),使得 L ( θ Q ) L(\theta^Q) L(θQ)越来越小,这样 Q ( s , a ∣ θ Q ) Q(s,a\mid \theta^Q) Q(s,a∣θQ)越来越接近实际值(对场景的建模越来越精准);与此同时,提供一种优化 μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ(s∣θμ)方法,使得回报期望 J J J变得越来越大。而 J J J的梯度函数,在 θ Q \theta^Q θQ固定的情况下,只与 μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ(s∣θμ)有关。
∇ θ μ J ≈ E s t ∼ ρ β [ ∇ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ∣ θ μ ) ] = E s t ∼ ρ β [ ∇ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ) ∇ θ μ μ ( s ∣ θ μ ) ∣ s = s t ] ( 6 ) \nabla_{\theta^\mu}J\approx E_{s_t\sim{\rho^\beta}}[\nabla_{\theta^\mu}Q(s,a\mid \theta^Q)\mid _{s=s_t,a=\mu(s_t\mid {\theta^\mu})}]\\ \qquad =E_{s_t\sim{\rho^\beta}}[\nabla_{\theta^\mu}Q(s,a\mid \theta^Q)\mid _{s=s_t,a=\mu(s_t)}\nabla_{\theta^\mu}\mu(s\mid\theta^\mu)\mid _{s=s_t}] \qquad(6) ∇θμJ≈Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st∣θμ)]=Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st)∇θμμ(s∣θμ)∣s=st](6)
一次迭代后的产生的新的 μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ(s∣θμ),将在探索过程发挥作用。
算法框架图
算法中
J
J
J函数只给了梯度,博主推测如下:
J
(
θ
μ
)
≈
1
N
∑
i
Q
(
s
i
,
a
∣
θ
Q
)
∣
a
=
μ
(
s
i
)
J(\theta^\mu)\approx\frac{1}{N}\sum\limits_{i}Q(s_i,a\mid \theta^Q)\mid_{a=\mu(s_i)}
J(θμ)≈N1i∑Q(si,a∣θQ)∣a=μ(si)