紧接上文,当我们学习了Policy Gradient方法之后便可以对其他方法有更好的理解基础了,如下:
(本文仅供自己学习,如有错误或不足之处欢迎指出)
2.Deep Q Network(DQN,深度Q学习网络)
论文名称:Playing Atari with Deep Reinforcement Learning
发表时间:2013年
主要内容:
参考Q学习的方法,使用深度神经网络代替了Q表,并基于经验回放进行Q学习,这一方法是Value-based的方法,与Policy-based的方法在梯度更新方式上完全不同。Value-based的方法直接输出了当前状态下各个动作的价值,直接选择价值最高的动作。
3.Deterministic Policy Gradient Algorithm(DPG,确定型策略梯度)
论文名称:Deterministic Policy Gradient Algorithms
发表时间:2014年
主要内容:
确定型策略梯度法的提出是一种新的动作策略选择方法,即每次输出的不再是一个具有随机性的策略,而是直接输出确定动作,这就很好地解决了连续动作空间的问题,值网络和动作网络梯度更新方式就发生了相应的改变,以此还产生了多种变体。
δ
t
=
r
t
+
γ
Q
w
(
s
t
+
1
,
a
t
+
1
)
−
Q
w
(
s
t
,
a
t
)
\delta_t=r_t+\gamma Q^w(s_{t+1},a_{t+1})-Q^w(s_t,a_t)
δt=rt+γQw(st+1,at+1)−Qw(st,at)
w t + 1 = w t + a w δ t ∇ w Q w ( s t , a t ) w_{t+1}=w_t+a_w\delta_t\nabla_wQ^w(s_t,a_t) wt+1=wt+awδt∇wQw(st,at)
θ t + 1 = θ t + α θ ∇ θ μ θ ( s t ) ∇ a Q w ( s t , a t ) \theta_{t+1}=\theta_t+\alpha_\theta\nabla_\theta\mu_\theta(s_t)\nabla_aQ^w(s_t,a_t) θt+1=θt+αθ∇θμθ(st)∇aQw(st,at)
上面三个式子的含义如下:
式(15)表示的是选择了确定的动作下,值函数的误差。
式(16)表示的是在选择MSE作为误差函数的前提下,值网络的梯度更新方式。
式(17)表示的是在当前值网络的状态下,计算策略函数对 θ \theta θ的偏导数乘值函数对于动作的偏导数,基于链式法则,实际上就是在值函数与策略函数之间建立了一座桥梁,基于值函数反向推导策略函数的参数梯度。
4.Double Deep Q Network(DDQN)
论文名称:Deep Reinforcement Learning with Double Q-learning
发表时间:2015年
主要内容:
实际上就是改变了DQN网络的更新方式,为了解决乐观估计的问题。
具体来讲就是后一阶段的Q值估计由简单的取最大值变为了交由另一个网络(DDQN中使用的是过去的网络)来选择动作,然后基于这个动作评估Q值作为将来的奖励来训练网络。
论文中最重要的几个式子如下:
Deep Q Networks
Y
t
D
Q
N
≡
R
t
+
1
+
γ
max
q
Q
(
S
t
+
1
,
a
;
θ
t
−
)
Y_t^{DQN}\equiv R_{t+1}+\gamma \underset{q}\max Q(S_{t+1},a;\theta^-_t)
YtDQN≡Rt+1+γqmaxQ(St+1,a;θt−)
上式中
Y
t
D
Q
N
Y_t^{DQN}
YtDQN表示神经网络的目标值,即为当前的奖励加上后一个步骤的最高奖励的折扣值。在DQN方法中使用了过去的网络参数来对后一阶段的价值进行评估,并取其中的最大值作为后续阶段的价值。
Double Q-learning
double Q-learning比Q-learning多使用了一个Q表,两个Q表在参数和结构上完全一致,其优化流程可以简单概括为使用一个Q表进行动作选择,使用另一个Q表来评估下一阶段的价值。
Q-learning:
Y
t
Q
=
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg
max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
)
Y_t^Q=R_{t+1}+\gamma Q(S_{t+1},\arg\underset{a}\max Q(S_{t+1},a;\theta_t))
YtQ=Rt+1+γQ(St+1,argamaxQ(St+1,a;θt))
在上式子中的更新方式实际上是Sarsa更新的,因为在评估下一阶段的价值的时候选择的动作是Q表中选择的,因此是On-Policy的更新方式。
Double Q-learning
Y
t
D
o
u
b
l
e
Q
≡
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg
max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
;
θ
t
′
)
Y_t^{DoubleQ}\equiv R_{t+1}+\gamma Q(S_{t+1},\arg\underset{a}\max Q(S_{t+1},a;\theta_t);\theta_t^\prime)
YtDoubleQ≡Rt+1+γQ(St+1,argamaxQ(St+1,a;θt);θt′)
在Double Q-learing中我们可以发现,下一阶段的动作是根据
θ
\theta
θ网络选取的,而价值则交由了
θ
t
′
\theta_t^\prime
θt′网络进行评估。两个网络的更新方式可以通过不断交换角色进行交替更新,可以有效地抑制乐观估计。
Double Deep Q networks(DDQN)
DDQN借鉴了Double Q-learning的方式改进DQN方法,DQN方法在原来的方法中为了抑制乐观估计已经采取了使用过去的网络来评估下一阶段的价值,而现在我们将过去网络直接改为第二个Q-Network。实际上DDQN与DQN最大的不同就是对第二阶段的价值的评估方式做了修改,即让动作网络在第二阶段中选择的动作的价值作为后续阶段的价值,如下:
Y
t
D
o
u
b
l
e
D
Q
N
≡
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg
max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
;
θ
′
)
Y_t^{DoubleDQN}\equiv R_{t+1}+\gamma Q(S_{t+1},\arg\underset{a}\max Q(S_{t+1},a;\theta_t);\theta^\prime)
YtDoubleDQN≡Rt+1+γQ(St+1,argamaxQ(St+1,a;θt);θ′)
5.Dueling Network (对决网络)
论文名称:Dueling Network Architectures for Deep Reinforcement Learning
发表时间:2015年
主要内容:
将DQN的输出分为了两个部分,多出这一部分用于评估优势函数。简单思维思维如下:
Q
(
s
,
a
;
θ
,
α
,
β
)
=
V
(
s
;
θ
,
β
)
+
A
(
s
,
a
;
θ
,
α
)
Q(s,a;\theta,\alpha,\beta)=V(s;\theta,\beta)+A(s,a;\theta,\alpha)
Q(s,a;θ,α,β)=V(s;θ,β)+A(s,a;θ,α)
这个式子就是我们的直观理解,而这个式子却是不合理的,因为产生的参数不是唯一的,最简单的反例就是给V加上一个常数,A减去一个常数同样可以拟合Q值。并且在Policy Gradient论文中也提到了准确的优势函数应该满足
E
α
∼
π
(
s
)
[
A
π
(
s
,
a
)
]
=
0
E_{\alpha\sim\pi(s)}[A^\pi(s,a)]=0
Eα∼π(s)[Aπ(s,a)]=0,所以不能简单的相加,应当强令A函数必须有0值,因此产生了最大值法和均值法,实际上最大值法是可用的,但是效果不如均值法。
Q
(
s
,
a
;
θ
,
α
,
β
)
=
V
(
s
;
θ
,
β
)
+
(
A
(
s
,
a
;
θ
,
α
)
−
1
∣
A
∣
∑
a
′
A
(
s
,
a
′
;
θ
,
α
)
)
Q(s,a;\theta,\alpha,\beta)=V(s;\theta,\beta)+(A(s,a;\theta,\alpha)-\frac{1}{\vert{A}\vert}\sum_{a^\prime}A(s,a^\prime;\theta,\alpha))
Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)−∣A∣1a′∑A(s,a′;θ,α))
6.Deep Deterministic Policy Gradient(DDPG)
论文名称:CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING
发表时间:2016年
主要内容:
使用深度神经网络代替确定型策略函数和价值函数,基于神经网络的Actor-Critic方法,并用于各种连续控制问题。
背景知识:
首先是动作价值函数的定义:
Q
π
(
s
t
,
a
t
)
=
E
r
i
≥
t
,
s
t
>
t
∼
E
,
a
i
>
t
∼
π
[
R
t
∣
s
t
,
a
t
]
Q^\pi(s_t,a_t)=\mathbb E _{r_i\ge t,s_{t>t}\sim E,a_{i>t}\sim\pi}[R_t\vert s_t,a_t]
Qπ(st,at)=Eri≥t,st>t∼E,ai>t∼π[Rt∣st,at]
上式表示在
s
t
状态下采取了
a
t
动作后
s_t状态下采取了a_t动作后
st状态下采取了at动作后在策略$ \pi $下后续奖励总和的平均值,这个值就作为了我们当前步骤的价值。
由PG论文中我们知道还有另一种表示方式,折扣奖励。但是当我们基于递归关系中的贝尔曼不等式,即只需要考虑后续一个步骤的价值就可以代表后续所有步骤的价值:
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)=\mathbb{E}_{r_t,s_{t+1}\sim E}[r(s_t,a_t)+\gamma\mathbb{E}_{a_{t+1}\sim \pi}[Q^\pi(s_{t+1},a_{t+1})]]
Qπ(st,at)=Ert,st+1∼E[r(st,at)+γEat+1∼π[Qπ(st+1,at+1)]]
如果上面这一式子中的策略函数是一个确定型的,我们使用
μ
(
s
)
\mu(s)
μ(s)来表示这个动作值,那么上式可化为:
Q
μ
(
s
t
,
a
t
)
=
E
r
t
,
s
t
+
1
∼
E
[
r
(
s
t
,
a
t
)
+
γ
Q
μ
(
s
t
+
1
,
μ
(
s
t
+
1
)
)
]
Q^\mu(s_t,a_t)=\mathbb{E}_{r_t,s_{t+1}\sim E}[r(s_t,a_t)+\gamma Q^\mu(s_{t+1},\mu(s_{t+1}))]
Qμ(st,at)=Ert,st+1∼E[r(st,at)+γQμ(st+1,μ(st+1))]
通过上式我们可以看出,价值函数只与动作和状态有关系,我们的Q值已经与策略毫无关系,因此可以进行off-policy训练。
on-policy&off-policy:
on-policy和off-policy都是policy-based的方法的,但可以推广到Q学习,从策略梯度的方法中出发来理解这两个概念,首先是为什么提出这个概念,这是由于才策略梯度法中,由近似条件可以得出,当policy发生改变时,近似函数也会发生改变,这表示历史经验中将无法依据现有近似函数计算参数优化的梯度和方向,因此必须采用on-policy的方法。但是当我们采用确定型策略时,近似函数直接与动作空间绑定了,而跟策略无关,策略变为了一个能够描述最优动作与状态映射,而动作空间是不变的,也就是说无论我们的确定型策略怎么变,甚至是随机选取,都不会影响价值近似函数的结构和参数,因此就可以采用off-policy的训练方法。至于Q学习,我们可以采用off-policy也可以采用on-policy。
综上所述,off-policy方法适用于确定型策略,但遇到不确定策略时,我们必须使用on-policy方法在完成整个一个过程后更新。确定型策略同样也可以使用on-policy方法。off-policy相比于on-policy方法在训练上会更高效地利用学习数据,从而能够更快地并行训练。
因此神经网络的MSE损失函数为:
L
(
θ
Q
)
=
E
r
t
,
s
t
+
1
∼
E
[
(
Q
(
s
t
,
a
t
∣
θ
Q
)
−
y
t
)
2
]
L(\theta^Q)=\mathbb{E}_{r_t,s_{t+1}\sim E}[(Q(s_t,a_t\vert\theta^Q)-y_t)^2]
L(θQ)=Ert,st+1∼E[(Q(st,at∣θQ)−yt)2]
其中
y
t
=
r
(
s
t
,
a
t
)
+
γ
Q
(
s
t
+
1
,
μ
(
s
t
+
1
)
∣
θ
Q
)
y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})\vert\theta^Q)
yt=r(st,at)+γQ(st+1,μ(st+1)∣θQ)
DDPG方法
∇
θ
μ
J
≈
E
s
t
∼
ρ
β
[
∇
θ
μ
Q
(
s
,
a
∣
θ
Q
)
∣
s
=
s
t
,
a
=
μ
(
s
t
∣
θ
μ
)
]
=
E
s
t
∼
ρ
β
[
∇
a
Q
(
s
,
a
∣
θ
Q
)
∣
s
=
s
t
,
a
=
μ
(
s
t
)
∇
θ
μ
μ
(
s
∣
θ
μ
)
∣
s
=
s
t
]
\nabla_{\theta^\mu}J\approx\mathbb{E}_{s_t\sim\rho^\beta}[\nabla_{\theta^\mu}Q(s,a\vert\theta^Q)\vert _{s=s_t,a=\mu(s_t\vert\theta^\mu)}]=\mathbb{E}_{s_t\sim\rho^\beta}[\nabla_aQ(s,a\vert\theta^Q)\vert_{s=s_t,a=\mu(s_t)}\nabla_{\theta_\mu}\mu(s\vert\theta^\mu)\vert_{s=s_t}]
∇θμJ≈Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st∣θμ)]=Est∼ρβ[∇aQ(s,a∣θQ)∣s=st,a=μ(st)∇θμμ(s∣θμ)∣s=st]
其中约等表示当前的函数是近似函数,并不是真实的Q函数。这个近似函数就是Critic网络。
最后算法流程图如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRHe80J1-1680147777346)(C:\Users\308b_2\Desktop\强化学习\1680146807510.png)]
在神经网络中,我们想要获得Q对action的梯度,则需要一个特殊的损失函数定义,即使用负的mean(q)作为损失函数,神经网络都是极小化损失,因此这一损失函数就变为了极大化价值收益,即对Q进行梯度上升,因此梯度就成功进行了回传到了动作,然后根据这一上升梯度回传到了动作网络里面完成了优化。