这篇文章看题目就知道在DQN的基础上加上LSTM变为DRQN,再加上Attention机制就变为DRAQN。
这篇文章也说了DQN的两个缺点:第一个是它不能玩那些需要记住更多帧数的游戏。另一个是训练时间很长,这让我们很难去调整网络结构和参数。
这篇文章扩展了两种attention一种是“soft”一种是“hard”。内置注意机制允许通过突出代理在决策时关注的游戏屏幕区域来直接在线监控训练过程。使用注意力机制,使得DRQN从输入图像中可以选择和关注某些相对小的信息区域,这样可以帮助减少网络参数和计算。因此相比于DRQN,DARQN的LSTM层不仅要选择下一个动作,还要选择下一个要关注的区域。
加入attention机制除了加速计算,还增加了DQN学习过程的可解释性,因为可以展示出Agent的注意力到底放在那里,放在什么目标上。
结构
包含三种网络结构:CNN,attention,LSTM.
过程:每个时间t,CNN接受当前游戏状态(一帧),然后生成Feature maps(每一张都是
m
m
mx
m
m
m,总共D个特征图),然后attention netrwork将这些转换为向量集合
v
t
=
{
v
t
1
,
.
.
.
,
v
t
L
}
,
v
t
i
∈
R
D
v_t=\{v_t^1,...,v_t^L\},v_t^i\in R^D
vt={vt1,...,vtL},vti∈RD(这里可以看到
v
t
i
v_t^i
vti是D维的这说明,经过attention机制后,不同feature map上的同一位置特征放在了同一个向量中,也就是
v
t
i
v_t^i
vti中每一个元素都是不同feature map上的同一个点),
L
=
m
∗
m
L=m*m
L=m∗m,并输出它们的线性组合
z
t
∈
R
D
z_t\in R^D
zt∈RD这个向量称为context向量(也就是
z
t
z_t
zt实际上只是包含了要关注的那个区域)。
在LSTM中将context vector
z
t
z_t
zt作为输入和上一时刻隐藏状态
h
t
−
1
h_{t-1}
ht−1和
c
t
−
1
c_{t-1}
ct−1产生隐藏状态
h
t
h_{t}
ht。文中介绍两种不同机制。
soft attention
z
t
z_t
zt是
v
t
=
{
v
t
1
,
.
.
.
,
v
t
L
}
v_t=\{v_t^1,...,v_t^L\}
vt={vt1,...,vtL}的加权求和,每一个
v
t
i
v_t^i
vti对应着一个CNN图像中提取的不同位置的特征,也就是比如
v
t
1
v_t^1
vt1可能对应着输入图像的左上角的特征。加权求和中的权重,与向量的性对重要性成比例,而向量的重要性是由attention网络g来评估的。g包含了两个全连接层,然后还接着一个softmax激活操作:
其中Z是一个归一化常数。然后
z
t
z_t
zt的计算如下:
也就是说这里
g
(
v
t
i
,
h
t
−
1
)
g(v_t^i,h_{t-1})
g(vti,ht−1)作为加权求和的权重使用的。
整个DARQN模型训练的损失函数是:
其中
Y
t
=
r
t
+
γ
m
a
x
a
t
+
1
Q
(
s
t
+
1
,
a
t
+
1
;
θ
t
−
1
)
Y_t=r_t+\gamma max_{a_{t+1}}Q(s_{t+1},a_{t+1};\theta_{t-1})
Yt=rt+γmaxat+1Q(st+1,at+1;θt−1)这里
r
t
r_t
rt是采取行动
a
t
a_t
at的立即奖赏
γ
∈
[
0
,
1
]
\gamma\in[0,1]
γ∈[0,1],同DQN一样,DARQN采取的是
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy策略。更新参数如下:
Hard attention
实际上感觉这才是一种更加自然地attention的机制,它很自然的结合了强化学习中的策略梯度算法(REINFORCE),这个类似于Attention,都是结合强化学习的attention机制。
每个时间步attention机制会依据一个随机注意力策略
π
g
\pi_g
πg从
L
=
m
∗
m
L=m*m
L=m∗m抽样一个需要注意的位置。这个策略使用一个神经网络
g
g
g来表示,它的输出是又位置选择的概率组成的。这个网络使用了REINFORCE来训练。这里我给出REINFORCE的梯度计算和更新公式:
其中
▽
J
(
θ
)
\bigtriangledown J(\theta)
▽J(θ)表示策略梯度
G
t
G_t
Gt就是累积奖赏(折扣),
α
\alpha
α是步长参数,
γ
\gamma
γ是折扣因子。这里我github以前写过这个算法跑的随机漫步的代码。
假设
s
t
s_t
st是从环境分布中抽样的,受策略
π
g
(
i
t
∣
v
t
,
h
t
−
1
)
\pi_g(i_t|v_t,h_{t-1})
πg(it∣vt,ht−1)影响(这里
v
t
,
h
t
−
1
v_t,h_{t-1}
vt,ht−1是状态,而
i
t
i_t
it表示动作,动作的集合是
(
1
t
,
2
t
,
.
.
.
.
.
.
,
L
t
)
(1_t,2_t,......,L_t)
(1t,2t,......,Lt)也就是向量
v
t
v_t
vt中元素的个数每一个都代表了图像上的一个位置,那么输出的就是一个向量,每个元素对应每个动作的概率
(
p
1
,
p
2
.
.
.
.
.
p
L
)
(p_1,p_2.....p_L)
(p1,p2.....pL))。attention network g的softmax层会给出一个分类分布。策略的参数更新新如下:
这里
R
t
R_t
Rt是策略选择关注位置
i
t
i_t
it时的折扣回报。在实际更新时,加入了基线,也就是使用REINFORCE with Baseline算法的形式,这个是REINFORCE算法的泛化。更新参数如下:
这里
G
t
G_t
Gt使用了另外一个单独神经网络来估计,表示状态值
G
t
=
L
i
n
e
a
r
(
h
t
)
G_t=Linear(h_t)
Gt=Linear(ht)。
Y
t
Y_t
Yt期望在此处应该是累积期望回报
E
[
R
t
]
E[R_t]
E[Rt]。所以
G
t
=
L
i
n
e
a
r
(
h
t
)
G_t=Linear(h_t)
Gt=Linear(ht)的训练更新的目标是让其估计值
G
t
G_t
Gt更加靠近
E
[
R
t
]
E[R_t]
E[Rt],也就是把
E
[
R
t
]
E[R_t]
E[Rt]当做标签值计算。实际上这里可以使用REINFORCE with Baseline算法来计算。但是文中说道
G
t
−
Y
t
G_t-Y_t
Gt−Yt也可以使用泛化优势函数估计来计算。其实也就是另外一种更好的估计方式。
(6)的训练可以被描述为调整注意网络的参数
θ
\theta
θ,使得注意位置的对数概率更高,并且预期未来奖励增加,而其他有低奖赏的位置则降低。为了降低随机梯度的方差,使用了一个技巧,也就是context向量有50%的机会是由(2)式生成的。