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

Dop*_*ope 3 java algorithm neural-network q-learning deep-learning

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

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


1


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

我是否应该将 yj 设为包含此处所有数据的矩阵 2 除了用

在此处输入图片说明

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


在此处输入图片说明

Dop*_*ope 6

其实是自己找的。(从一开始就正确:D)

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