DQN 中的目标 Q 值是多少?

人工智能 强化学习 q学习 dqn 深度学习 价值函数
2021-10-27 04:59:51

我知道在 DQN 中,损失是通过输出 Q 值和目标 Q 值的 MSE 来衡量的。

目标 Q 值代表什么?它是如何由 DQN 获得/计算的?

3个回答

在使用经验丰富的回放训练 Deep Q 网络时,您会积累所谓的训练经验et=(st,at,rt,st+1). 然后,您对一批此类体验进行抽样,并对每个样本执行以下操作。

  1. 喂养st进入网络获取Q(s,a;θ).
  2. 喂养st+1进入网络获取Q(s,a,θ).
  3. 选择maxaQ(s,a,θ)并设置γmaxaQ(s,a,θ)+rt作为网络的目标。
  4. 训练网络st作为更新的输入θ. 从输入的输出stQ(s,a,θ)和梯度下降步骤最小化之间的平方距离Q(s,a,θ)γmaxaQ(s,a,θ)+rt

深度 Q 学习 (DQL) 算法与表格 Q 学习算法非常相似。我认为这两种算法实际上都很简单,至少,如果你看一下它们的伪代码,它不超过 10-20 行。

这是突出显示 Q 目标的 DQL 伪代码的屏幕截图(来自原始论文)。

在此处输入图像描述

这是突出 Q 目标的 Q-learning 的屏幕截图(来自Barto 和 Sutton 的书)。

在此处输入图像描述

在这两种情况下,target奖励加上折扣后的最大未来 Q 值(最终状态除外,在 DQL 的情况下,目标只是奖励)。

这两种算法之间至少有 3 个不同之处。

  • DQL 使用梯度下降,因为Q函数由神经网络而不是表来表示,就像在 Q-learning 中一样,所以你有一个明确的损失函数(例如 MSE)。

  • DQL 通常使用经验回放(但原则上,您也可以在 Q-learning 中这样做)

  • DQL 对状态进行编码(即ϕ对状态进行编码)。

除此之外,这两种算法的逻辑或多或少是相同的,所以,如果你知道 Q-learning(在深入研究 DQL 之前你应该知道它),那么学习 DQL 应该不是问题(如果你也有不错的深度学习知识)。

目标 Q 值代表什么?

在使用离策略学习的 DQN 中,它们代表了对采取行动的预期未来奖励的精确估计a处于状态s,并从那时起遵循目标政策。Q 学习中的目标策略基于始终根据当前的价值估计在每个状态下采取最大化行动。

这个估计是基于至少一点点经验数据的改进的——直接的回报,以及接下来发生的转变——但通常它不会是完美的。

它是如何由 DQN 获得/计算的?

有很多方法可以做到这一点。DQN 中最简单的方法是根据经验重放表处理单步前瞻。

如果您的表包含元组[state, action, immediate reward, next state, done?][s,a,r,s,d]然后是TD目标的公式,gt:t+1

r+γmaxa[Qtarget(s,a)],when d is false

r,when d is true

通常Qtarget使用“目标网络”计算,它是 Q 的学习网络的副本,每 N 步更新一次。目标预测的这种延迟更新是为了 DQN 中的数值稳定性而完成的——从概念上讲,它是对您正在学习的相同动作值的估计。

每次您使用经验回放中的任何特定记忆时,此目标值都会发生变化。所以你必须对每个小批量执行相同的计算,你不能存储目标值。