我正在使用q学习,在Q值更新中有些我不了解的内容: 我的神经网络输出处于特定的状态's1'Q值,例如:[x1,x2,... xn]。 这是一维列表。
我有一个动作列表,例如:[0,1,0 ... An] ,这意味着我选择了第二个动作,使我们进入状态's2'< / strong>在哪里获得这些 Q值[y1,y2,... yn]
例如,这样做的奖励是“ 10” ,现在我想调整我的Q值,以便在状态“ s1”中采取行动“ A2”的新Q值是等于:
learning_rate *(奖励+伽玛* max_Qvalues_in_state's2')。
我们将其称为“ new_qvalue”。
现在的损失是(new_qvalue-“操作'2'处于状态's1'中的qvalue”)
在张量流中,我们可以使用 tf.train.AdamOptimiser(learning_rate).minimize(loss)来调整我们的Q_value,但是它如何工作?我们只需要调整与所选择的动作相对应的Q值,而不是状态's1'的所有Q值,那么函数如何知道必须在神经网络张量上进行哪些调整才能仅校正良好的Q值? / p>
从我的角度来看,我们必须传递类似数组的内容,该数组代表每个Q值的损失,然后所有期望值都将为0,因为与选择的动作相对应的不是吗?
如果我的问题不清楚,请告诉我,我真的需要帮助...