Python 深度Q网络中的目标值训练

Python 深度Q网络中的目标值训练,python,deep-learning,reinforcement-learning,q-learning,Python,Deep Learning,Reinforcement Learning,Q Learning,我了解Q-learning的全部要点及其更新公式: Q(s,a)=r+\gamma*max_a'(Q(s',a')) 其中%s%是当前状态,a是已采取的行动,r是奖励,s'是行动的下一个状态,我们在该状态下的行动中最大化。这一切都很好,我能够使用一个表来实现Q-learning 当我转化为训练一个深度的Q网络时,我的困难就来了。到目前为止,我知道我们需要两个网络(输出特定状态的所有Q值),一个是实际训练,一个是预测下一个状态的Q值。预测网络的权重周期性地与主网络的权重一起更新我的问题集中在培训期

我了解Q-learning的全部要点及其更新公式:

Q(s,a)=r+\gamma*max_a'(Q(s',a'))

其中%s%是当前状态,
a
是已采取的行动,
r
是奖励,
s'
是行动的下一个状态,我们在该状态下的行动中最大化。这一切都很好,我能够使用一个表来实现Q-learning

当我转化为训练一个深度的Q网络时,我的困难就来了。到目前为止,我知道我们需要两个网络(输出特定状态的所有Q值),一个是实际训练,一个是预测下一个状态的Q值。预测网络的权重周期性地与主网络的权重一起更新我的问题集中在培训期间目标输出应该是什么。

例如,在传统的数字分类中,使用一组10个输出的热编码集对模型进行训练。但是,比如说,在一个有3个动作(向前、向左、向右)的蛇游戏中,我们得到的每个动作的输出在经验回放中只有一个数字。我们不知道其他两个动作的值是什么其他两个动作的值应该是多少?

我曾考虑过让它们
0
,但这没有意义,因为它实际上不是
0
。我还考虑过让它们成为预测网络输出的Q值。但是,这仍然没有意义,因为它不是实际的Q值。对于每个示例,我必须仅从该输出手动反向传播连接(这保证了另一个问题,因为我不知道如何做)

编辑:一个想法刚刚出现。也许我们可以使用从目标网络输出的Q值作为缺失Q值的输出本身?在这种情况下,与这些输出相对应的梯度将为零,因为没有变化,因此相应的权重不会得到更新。这是解决这个问题的恰当方法,还是会给目标模型的训练带来意想不到的偏差