我对强化学习完全是新手,所以我可能会有错。
我的问题是:
-
Q-Learning方程(
Q(s, a) = r + y * max(Q(s', a'))
)在DQN中是否只用于计算损失函数? -
这个方程是否是递归的?假设我用DQN来玩Atari Breakout,状态的可能数量非常大(假设状态是单个游戏画面),所以创建一个包含所有Q值的矩阵效率不高。这个方程应该更新给定[状态,动作]对的Q值,那么在DQN的情况下它会做什么?它会递归调用自己吗?如果是的话,方程将无法计算,因为递归永远不会停止。
我已经尝试寻找我想要的答案,看了很多教程,但几乎每个人都不展示背景知识,只是用像Keras这样的Python库来实现它。
先谢谢你们,如果有什么听起来很傻,我道歉,我只是不明白这一点。
回答:
Q-Learning方程
( Q(s, a) = r + y * max(Q(s', a')) )
在DQN中是否只用于计算损失函数?
是的,通常这个方程只用于定义我们的损失。更具体地说,它稍作调整;这个方程是我们期望成立的,但在训练期间通常还不完全成立。我们从左边减去右边来计算一个(时间差分)误差,这个误差被用在损失函数中。
这个方程是否是递归的?假设我用DQN来玩Atari Breakout,状态的可能数量非常大(假设状态是单个游戏画面),所以创建一个包含所有Q值的矩阵效率不高。这个方程应该更新给定[状态,动作]对的Q值,那么在DQN的情况下它会做什么?它会递归调用自己吗?如果是的话,方程将无法计算,因为递归永远不会停止。
确实,状态-动作对的空间太大,无法在矩阵/表中枚举所有。换句话说,我们不能使用表格式强化学习。这正是我们使用DQN中的神经网络的原因。你可以将 Q(s, a)
视为一个函数。在表格式的情况下, Q(s, a)
只是一个使用 s
和 a
索引到一个值表/矩阵的函数。
在DQN和其他深度强化学习方法的情况下,我们使用神经网络来近似这样的“函数”。我们使用 s
(以及可能的 a
,虽然在DQN的情况下不是这样)来基于那个状态(和动作)创建特征。在DQN和Atari游戏的情况下,我们简单地将一组原始图像/像素作为特征。这些然后被用作神经网络的输入。在神经网络的另一端,DQN提供 Q
值作为输出。在DQN的情况下,提供多个输出;每个动作 a
一个。因此,总的来说,当你读到 Q(s, a)
时,你应该想到“当我们将 s
的特征/图像/像素作为输入插入我们的网络时,对应于 a
的输出”。
来自评论的进一步问题:
我想我仍然不明白这个想法…假设我们用状态S通过网络进行了一次迭代,我们得到了以下输出
[A = 0.8, B = 0.1, C = 0.1]
(其中A
、B
和C
是可能的动作)。我们还得到了奖励R = 1
并将y(也称为gamma)设置为0.95。现在,我们如何将这些变量放入损失函数公式 https://i.sstatic.net/Bu3S8.jpg?如果DQN输出要采取的动作,我不明白预测是什么?还有,目标Q值是什么?请你发布带有放置变量的公式,好吗?
首先进行一个小修正:DQN不会输出要采取的动作。给定输入(一个状态 s
),它为每个动作 a
提供一个输出值,可以解释为对输入状态 s
和对应于该特定输出的动作 a
的 Q(s, a)
值的估计。这些值通常随后用于确定要采取的动作(例如通过选择对应于最大 Q
值的动作),所以在某种意义上,动作可以从DQN的输出中推导出来,但DQN不会直接作为输出提供要采取的动作。
无论如何,让我们考虑一下示例情况。图像中的损失函数是:
loss = (r + gamma max_a' Q-hat(s', a') - Q(s, a))^2
请注意,图像中有一个小错误,它在 Q-hat
中使用了旧状态 s
而不是新状态 s'
。那里应该是 s'
才对。
在这个公式中:
r
是观察到的奖励gamma
是(通常)一个常数值Q(s, a)
是我们提供s
作为输入时从我们的神经网络获得的一个输出值。具体来说,它是我们执行的动作a
对应的输出值。所以,在你的例子中,如果我们在状态s
中选择执行动作A
,我们有Q(s, A) = 0.8
。s'
是我们在状态s
中执行动作a
后最终到达的状态。Q-hat(s', a')
(我们为每个可能的后续动作a'
计算一次)再次是我们神经网络的一个输出值。这次,它是我们提供s'
作为输入(而不是s
)时获得的值,同样它将是对应于动作a'
的输出值。
那里使用 Q-hat
而不是 Q
是因为,在DQN中,我们通常实际上使用两个不同的神经网络。使用我们通过训练也修改的相同神经网络计算 Q
值。使用不同的“目标网络”计算 Q-hat
值。这个目标网络通常是第一个网络的“移动较慢”的版本。它是通过偶尔(例如每10K步一次)复制另一个网络,并在这些复制操作之间保持其权重冻结来构建的。