用经验重放计算dqn中的Q值

时间:2018-01-11 18:06:56

标签: neural-network reinforcement-learning q-learning

考虑深度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值是否安全?

1 个答案:

答案 0 :(得分:1)

是,在步骤16中,在训练网络时,您正在使用丢失函数(tt - Q(ss, aa))^2,因为您要更新网络权重以便近似最近的Q值,计算为{{1}并用作目标。因此,rr + γmaxa’Q(ss’, aa’)是当前估计,其通常在训练时间期间计算。

Here你可以找到一个简单的深度Q学习实现的Jupyter笔记本,可能会有所帮助。