Neural network 深Q网络中的Q-学习方程

Neural network 深Q网络中的Q-学习方程,neural-network,deep-learning,artificial-intelligence,reinforcement-learning,q-learning,Neural Network,Deep Learning,Artificial Intelligence,Reinforcement Learning,Q Learning,我对强化学习一无所知,所以我可能错了 我的问题是: Q-学习方程(Q(s,a)=r+y*max(Q(s',a')))是否仅用于计算损失函数 这个等式是循环的吗?假设我使用DQN,比如说,玩Atari Breakout,可能的状态数量非常大(假设状态是单个游戏的帧),所以创建一个包含所有Q值的矩阵是没有效率的。方程应该更新给定[状态,动作]对的Q值,那么在DQN的情况下它会做什么呢?它会递归地调用自己吗?如果是这样的话,这个方程就无法计算,因为循环永远不会停止 我已经试着找到我想要的,我看过很

我对强化学习一无所知,所以我可能错了

我的问题是:

  • Q-学习方程(
    Q(s,a)=r+y*max(Q(s',a'))
    )是否仅用于计算损失函数

  • 这个等式是循环的吗?假设我使用DQN,比如说,玩Atari Breakout,可能的状态数量非常大(假设状态是单个游戏的帧),所以创建一个包含所有Q值的矩阵是没有效率的。方程应该更新给定[状态,动作]对的Q值,那么在DQN的情况下它会做什么呢?它会递归地调用自己吗?如果是这样的话,这个方程就无法计算,因为循环永远不会停止

我已经试着找到我想要的,我看过很多教程,但是几乎每个人都不展示背景,只是使用像Keras这样的Python库来实现它


提前谢谢,如果有些事情听起来很愚蠢,我道歉,我就是不明白。

首先,Q函数用于损失函数和保单。Q函数和“理想”函数的实际输出用于计算损耗。在一个状态中,对所有可能的操作获取Q函数输出的最大值是您的策略

第二,不,它不是经常性的。这个方程式实际上与你发布的略有不同(也许一位数学家可以纠正我这一点)。它实际上是
Q(s,a):=r+y*max(Q(s',a'))
。注意等号前的冒号。这称为赋值运算符,意味着我们更新等式的左侧,使其与右侧相等一次(而不是重复)。您可以认为它与大多数编程语言中的赋值运算符相同(
x=x+1
不会引起任何问题)

Q值将通过网络传播,因为您仍在执行更新,但这可能需要一段时间

Q-学习方程
(Q(s,a)=r+y*max(Q(s',a'))
是否仅在DQN中用于计算损失函数

是的,一般来说,这个等式只是用来定义我们的损失。更具体地说,它被重新安排了一点;这个等式是我们所期望的,但在训练期间,它通常还不能精确地成立。我们从左侧减去右侧来计算(时间差)误差,该误差用于损失函数

这个等式是循环的吗?假设我使用DQN,比如说,玩Atari Breakout,可能的状态数量非常大(假设状态是单个游戏的帧),所以创建一个包含所有Q值的矩阵是没有效率的。方程应该更新给定[状态,动作]对的Q值,那么在DQN的情况下它会做什么呢?它会递归地调用自己吗?如果是这样的话,这个方程就无法计算,因为循环永远不会停止

事实上,状态-动作对的空间太大,无法在矩阵/表中全部枚举。换句话说,我们不能使用表格RL。这就是为什么我们在DQN中使用神经网络。您可以将
Q(s,a)
作为函数查看。在表格的情况下,
Q(s,a)
只是一个函数,它使用
s
a
索引到值的表格/矩阵中

在DQN和其他深度RL方法的情况下,我们使用神经网络来近似这种“函数”。我们使用
s
(以及潜在的
a
,尽管在DQN的情况下并非如此)基于该状态(和操作)创建特性。在DQN和Atari游戏中,我们只需将一堆原始图像/像素作为特征。然后将其用作神经网络的输入。在NN的另一端,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(也称伽马)设置为0.95。现在,我们如何将这些变量放入损失函数公式中?我不明白如果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