在介绍Q-learning之前先介绍两种学习策略:1)Monte Carlo 2)Temporal Difference(TD) Learning.
Monte Carlo
在一个episode结束时开始学习,value function 的更新策略为: V ′ ( s t ) = V ( s t ) + α ( G t − V ( s t ) ) V'(s_t) = V(s_t)+\alpha(G_t-V(s_t)) V′(st)=V(st)+α(Gt−V(st)),其中V’ 是更新后的value function V是更新前的value function G是return
TD learning
每个step结束时都会学习,由于没有完整的 G t G_t Gt,所以用 R t + γ V ( S t + 1 ) R_t+\gamma V(S_{t+1}) Rt+γV(St+1)来代替这块也就是temporal difference,那么更新策略就是 V ′ ( s t ) = V ( s t ) + α ( R t + γ V ( S t + 1 ) − V ( s t ) ) V'(s_t) = V(s_t)+\alpha(R_t+\gamma V(S_{t+1})-V(s_t)) V′(st)=V(st)+α(Rt+γV(St+1)−V(st))
Q-learning 是一个 off-policy 的value-based method 用的更新策略是TD-learning。目的是为了获得一个Q-table,其中包含了state-action的value值。
步骤:
首先初始化这个Q-table(可以将其中的所有value都设为1),然后执行行动策略(
ϵ
−
g
r
e
e
d
y
\epsilon -greedy
ϵ−greedy),获得reward,然后再根据公式来更新这个state-action的value值,如此反复直到一定次数就可以得到一个完备的Q-table,之后再根据这个Q-table执行greedy function
Deep Q-learning
当观测维数和行动维数增大之后Q-table的学习就变的越发的困难,所以就出现了用神经网络来拟合Q-table的想法。
神经网络的loss function称为Q-loss,表达式设置为
Q
−
L
o
s
s
(
S
t
,
A
t
)
=
R
t
+
1
+
γ
m
a
x
a
Q
(
S
t
+
1
,
a
)
−
Q
(
S
t
,
A
t
)
Q-Loss(S_t,A_t) = R_{t+1}+\gamma max_aQ(S_{t+1},a)-Q(S_t,A_t)
Q−Loss(St,At)=Rt+1+γmaxaQ(St+1,a)−Q(St,At)
其中
R
t
+
1
+
γ
m
a
x
a
Q
(
S
t
+
1
,
a
)
R_{t+1}+\gamma max_aQ(S_{t+1},a)
Rt+1+γmaxaQ(St+1,a)被称为Q-target
训练算法分为两步:采样和训练,采样是将
s
t
,
a
t
,
s
t
+
1
,
r
t
+
1
s_t,a_t,s_{t+1},r_{t+1}
st,at,st+1,rt+1记录储存到D中,然后训练就是从D中取出一批样本用梯度下降法来做参数的更新。
由于非线性Q-value function和自举法的结合会导致不稳定,所以采取一下三种方法来解决1)经历回放 2)固定Q-Target 3)Double Deep Q-learning
Experience Replay
好处:1)将过去的经历记录下来,使得在训练过程中重复使用,使得智能体能从一段经历多次学习 2)避免遗忘先前的经历(catastrophic forgetting)并且减少经历之间的相关性。
Fixed Q-Target
如果不适用固定Q-target的化当我们更新参数时Q-Target也会随之改变,使得我们无法赶上它造成震荡,所以需要另外使用一个固定参数的网络来获得Q-Target(每C个step来更新一下其中的参数)