当代理最终处于终端状态时,我们如何计算目标值?

人工智能 强化学习 q学习 dqn 深度学习
2021-10-19 06:34:34

我正在研究一个深度强化学习问题。在整个情节中,对好或坏的决定都有一个小的正面和负面奖励。最后,完成这一集会有巨大的奖励。所以,这个奖励函数是相当稀疏的。

这是我对 DQN 工作原理的理解。神经网络预测可以从状态中采取的每个可能动作的质量值S1. 让我们假设一个动作的预测质量值AQ(S1,A), 这个动作允许代理到达S2.

我们现在需要目标质量值Qtarget, 这样使用Q(S1,A)Qtarget可以计算时间差,并可以对价值网络的参数进行更新。

Qtarget由两个词组成。即时奖励R以及这个选择的动作留给我们的结果状态的最大质量值,可以表示为Qfuture=maxaQ(S2,a),这实际上是通过输入新状态获得的S2进入神经网络并选择(从每个动作的质量值列表中)最大质量值。然后我们乘以折扣因子γ有了这个Qfuture并将其添加到奖励中R, IEQtarget=R+γmaxaQ(S2,a)=R+γQfuture.

现在,让我们假设代理处于倒数第二个状态,S1,并选择动作A这导致他进入完成状态,S2, 并获得奖励R.

我们如何形成目标值Qtarget为了S1现在?我们还包括Qfuture学期?或者只是在这种情况下的奖励?我不确定是否Qfuture甚至在达到最终状态后才有意义S2. 所以,我认为,对于最后一步,目标值必须只是奖励。这是正确的吗?

1个回答

现在,让我们假设代理处于倒数第二个状态,S1,并选择动作A这导致他进入完成状态,S2, 并获得奖励R.

我们如何形成目标值Qtarget为了S1现在?我们还包括Qfuture学期?或者只是在这种情况下的奖励?

您的术语“完成状态”通常称为“终端状态”。在终止状态下,不再需要采取任何行动,不再有时间步长,也没有采取任何行动的可能性。因此,根据定义,在您所在的州S2,预期的未来回报是0.

在数学上,这通常被称为v(ST)=0或者q(ST,)=0T代表情节的最后一个时间步,点代表不需要提供任何动作,或者具体的动作值不相关。因此,因此使用您的术语,Qfuture=maxaQ(S2,a)=0

这使得方程在理论上有效,但没有解释在代码中要做什么。实际上,在您的代码中,您会按照您的建议进行操作,并在计算 TD 目标时仅使用奖励Q(S1,A). 这通常使用条件if周围的块来完成,done例如

if done:
  td_target = r
else:
  td_target = r + gamma * np.max(q_future_values) 
end

当然,细节取决于您如何构建和命名变量。不过,您会在大多数 DQN 实现中找到与此类似的代码。

你不应该真的尝试学习 V(S2)或者Q(S2,A), 或计算 TD 目标从S2,因为结果应该是0根据定义。