如何实现深度Q学习梯度下降

How to implement Deep Q-learning gradient descent

所以我正在尝试实施由 Google DeepMind 创建的深度 Q 学习算法,我想我现在已经掌握了它。然而,还有一件事(非常重要)我不太明白,我希望你能帮忙。

yj 不会导致双精度数 (Java),而后一部分不会导致包含当前状态下每个动作的 Q 值的矩阵,如下一行(算法中的倒数第 4 行):



那么我怎样才能将它们相互减去呢?

我是否应该将 yj 设为包含来自此处 的所有数据的矩阵,除非将当前选定的操作替换为

这似乎不是正确的答案,如您所见,我在这里有点迷路。


其实是自己找的。 (从一开始就做对了:D)

  1. 对当前状态 s 进行前馈传递,以获得所有动作的预测 Q 值。
  2. 对下一个状态 s' 进行前馈传递并计算最大整体网络输出 max a' Q(s', a')。
  3. 将动作的 Q 值目标设置为 r + γmax a’ Q(s’, a’)(使用步骤 2 中计算的最大值)。 对于所有其他操作,将 Q 值目标设置为与最初从步骤 1 返回的相同,使这些输出的错误为 0。
  4. 使用反向传播更新权重。