我对目标网络和当前(在线)网络的损失函数有疑问。我理解动作价值函数。我不确定的是为什么我们要尽量减少qVal
目标网络中的下一个状态与本地网络中的当前状态之间的损失。Mnih 等人的 Nature 论文。解释得很好,但是,我并没有从中得到上述目的。这是我正在运行的脚本中的训练部分:
for state, action, reward, next_state, done in minibatch:
target_qVal = self.model.predict(state)
# print(target_qVal)
if done:
target_qVal[0][action] = reward #done
else:
# predicted q value for next state from target model
pred = self.target_model.predict(next_state)[0]
target_qVal[0][action] = reward + self.gamma * np.amax(pred)
# indentation position?
self.model.fit(np.array(state),
np.array(target_qVal),
batch_size=batch_size,
verbose=0,
shuffle=False,
epochs=1)
我了解预期回报是即时回报加上展望未来的折扣回报的累积总和(如果我的理解有误,请纠正我)遵循给定的政策。
我的基本误解是损失方程:
在哪里和分别是目标和在线神经网络的权重。
为什么我们的目标是最小化目标模型中下一个状态的 Q 值和在线模型中当前状态的 Q 值?
一个额外的问题是,为了收集降维的值(如 Mnih 等人的 t-sne 图),我是否会简单地target_qVal[0]
在训练期间收集这些值并在每一步之后将它们输入到一个列表中以随着时间的推移累积 Q 值?