当每个动作有一个输出单元时,使用神经网络进行 Q 学习的效率如何?

机器算法验证 机器学习 神经网络 强化学习 q学习
2022-03-29 00:41:30

背景:
我在强化学习任务中使用神经网络 Q 值近似。该方法与此问题中描述的方法完全相同,但问题本身不同。

在这种方法中,输出的数量是我们可以采取的行动的数量。简而言之,算法如下:执行动作 A,探索奖励,要求 NN 预测所有可能动作的 Q 值,选择最大 Q 值,计算特定动作 A 的 Q 为R + max(new_state_Q)在预测的 Q 值上拟合模型,其中只有一个替换为R + max(new_state_Q)

问题:如果输出数量很大,这种方法的效率如何?

尝试:假设我们可以采取 10 种行动。在每一步,我们要求模型预测 10 个值,在模型的早期,这个预测是一团糟。然后我们修改输出的 1 个值并将模型拟合到这些值上。

对于这种方法有多好\坏,我有两种相反的想法,无法决定哪一种是正确的:

  • 从一个角度来看,我们在随机数据上训练每个神经元 9 次,并且只在接近真实值的数据上训练一次。如果 NN 为状态 S 中的动作 A 预测 5,但实际值为 -100,我们将 NN 9 次拟合值为 5,然后拟合一次值为 -100。听起来很疯狂。
  • 从另一个角度来看,神经网络的学习是作为误差的反向传播来实现的,所以当模型预测为 5 并且我们在 5 上训练它时,它不会学到任何新的东西,因为误差为 0。没有触及权重. 只有当我们计算 -100 并将其拟合到模型时,它才会重新计算权重。

哪个选项是正确的?也许还有其他一些我没有考虑到的事情?

更新: “效率如何”是指与具有一个输出的方法相比 - 预测奖励。当然,在这种情况下,动作将是输入的一部分。所以方法#1根据某个状态对所有动作进行预测,方法#2对在某个状态下采取的特定动作进行预测。

1个回答

所以我们要比较的两个选项是:

  1. 输入 = 状态表示,输出 = 每个动作 1 个节点
  2. 输入 = 状态表示 + 动作的 one-hot 编码,输出 = 1 个节点

根据我自己的直觉,我怀疑这两个选项在表示能力或学习速度(在迭代方面)方面存在显着差异。

对于表示能力,第一个选项在输入附近给出一个稍微“更小”的网络,在输出附近给出一个“更宽”的网络。例如,如果出于某种原因在输入节点附近拥有更多权重是有益的,那么这几乎可以通过使第一个隐藏层(靠近输入)也更大一点来实现。

至于学习速度,您似乎关心的基本上是通常只有一个输出的准确学习信号,而不是其他输出。对于第二个选项,可以说连接到输入节点的权重完全相同,所以我怀疑那里存在显着差异。

就像我提到的那样,以上所有内容都只是基于我的直觉,如果看到更多可信的参考资料会很有趣。

我看到第一个选项的一个重要优势是计算速度。假设你想计算Q-所有动作的值,以决定选择哪个动作;单个转发通过网络,为您提供所有Q-值一次,在计算上将比拥有n单独的前向传球(对于一组大小的动作n)。