valued-based learnning with Deep Q-Network (DQN)
目标:使reward最大化
a的选择:
1)如果已经知道了
Q
?
(
s
,
a
)
Q^*(s,a)
Q?(s,a) ,那么最好的
a
?
=
a
r
g
m
a
x
Q
?
(
s
,
a
)
a^*=\rm{argmax}Q^*(s,a)
a?=argmaxQ?(s,a), 也就是使得平均回报值最大的a
2)其实我们不知道
Q
?
(
s
,
a
)
Q^*(s,a)
Q?(s,a) ,我们需要把他学习出来,比如用Deep Q-Network (DQN)。基本思路:用一个神经网络
Q
(
s
,
a
;
w
)
Q(s,a;w)
Q(s,a;w) 来近似出
Q
?
(
s
,
a
)
Q^*(s,a)
Q?(s,a) ,其中w是参数,s为输入,输出为一系列打分值,不断提高打分值的合理性,以此优化网络。
一、TD算法
如何训练DQN?TD算法(temporal difference learning,瞬时差分法)最常用
先来看一个例子。一般的参数更新方法:比如我想知道从NYC到atlanta要多久,我先估计是1000min,然后实际开车去一次,测得860min,最后更新估计值。具体的表达式如下:
估计:
q
=
Q
(
w
)
q=Q(w)
q=Q(w)
真实值:
y
y
y
loss:
L
=
1
2
(
q
?
y
)
2
L=\frac{1}{2}(q-y)^2
L=21?(q?y)2
gradient:
gradient descent(梯度下降): 其中 α 称为学习率
缺点:需要完成整个旅途才能对模型做一次更新
利用半路上的数据进行w的优化:先估计是1000min,然后从NYC开到DC,发现用了300min,此时重新估计剩余路程的时间为600min,则从NYC到atlanta的估计为300+600=900,这个900称为TD target,它比原来的1000更准,用y表示(这里y不再是真实值了,因为包含了一段估计,应该理解为“充分利用已知信息得到的最好的值”)。(越接近亚特兰大,TD target越准)
TD error:
Q
(
w
)
?
y
Q(w)-y
Q(w)?y,注意这不是估计值与真实值的差,而是第一次估计和第二次估计的差
loss:
L
=
1
2
(
Q
(
w
)
?
y
)
2
L=\frac{1}{2}(Q(w)-y)^2
L=21?(Q(w)?y)2
gradient:
gradient descent(梯度下降):
TD算法的目标就是让TD error趋于0(也就是前一次估计和后一次估计一样,说明估计值不能再好了)
TD算法的使用条件:
二、在DRL中使用TD算法
上面的式子是怎么来的呢?先看
U
t
U_t
Ut? 的动态:
而Q是对U的期望,因此:
它的形式和TD算法的迭代是相同的
用TD算法训练DQN(更新其参数的过程):
三、参考资料
深度强化学习(全)
|