考虑深度Q学习算法
1 initialize replay memory D
2 initialize action-value function Q with random weights
3 observe initial state s
4 repeat
5 select an action a
6 with probability ε select a random action
7 otherwise select a = argmaxa’Q(s,a’)
8 carry out action a
9 observe reward r and new state s’
10 store experience <s, a, r, s’> in replay memory D
11
12 sample random transitions <ss, aa, rr, ss’> from replay memory D
13 calculate target for each minibatch transition
14 if ss’ is terminal state then tt = rr
15 otherwise tt = rr + γmaxa’Q(ss’, aa’)
16 train the Q network using (tt - Q(ss, aa))^2 as loss
17
18 s = s'
19 until terminated
在步骤16中,Q(ss,aa)的值用于计算损失。该Q值何时计算?在采取行动时还是在培训期间?
由于重放存储器仅存储&lt; S,A,R,S&#39; &GT;而不是q值,假设在训练期间计算q值是否安全?
答案 0 :(得分:1)
是,在步骤16中,在训练网络时,您正在使用丢失函数(tt - Q(ss, aa))^2
,因为您要更新网络权重以便近似最近的Q值,计算为{{1}并用作目标。因此,rr + γmaxa’Q(ss’, aa’)
是当前估计,其通常在训练时间期间计算。
Here你可以找到一个简单的深度Q学习实现的Jupyter笔记本,可能会有所帮助。