【问题标题】:Questions about Q-Learning using Neural Networks关于使用神经网络的 Q-Learning 的问题
【发布时间】:2015-02-05 02:29:00
【问题描述】:

我已经实现了 Q-Learning,如中所述,

http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf

为了大约。 Q(S,A) 我使用如下的神经网络结构,

  • 激活 sigmoid
  • 输入,输入数量 + 1 用于动作神经元(所有输入的比例为 0-1)
  • 输出,单输出。 Q 值
  • N 个 M 隐藏层。
  • 探索方法随机0

在每次学习迭代中使用以下公式,

我计算一个 Q-Target 值,然后使用,计算一个错误,

error = QTarget - LastQValueReturnedFromNN

并通过神经网络反向传播误差。

Q1,我在正确的轨道上吗?我看过一些论文,它们实现了一个神经网络,每个动作都有一个输出神经元。

Q2,我的reward function返回-1到1之间的数字,激活函数为sigmoid(0 1)时返回-1到1之间的数字可以吗

Q3,根据我对这种方法的理解,如果有足够的训练实例,应该隔离它以找到最佳策略吗?在进行 XOR 训练时,有时它会在 2k 次迭代后学习它,有时它甚至在 40k 50k 次迭代后也不会学习。

【问题讨论】:

  • 你也可以考虑在datascience.stackexchange.com提出这个问题
  • 我猜答案是肯定的,是的,是的,但是神经网络是复杂的野兽。很容易给出错误的参数、学习率、隐藏单元的数量。相比之下,表格 Q 学习的实现和调试很简单。
  • @maxy Tabular Q-learning 只要状态空间很小,就很简单。
  • 如果你觉得这个答案有用,你介意接受吗?

标签: machine-learning artificial-intelligence neural-network reinforcement-learning q-learning


【解决方案1】:

第一季度。如果将所有动作神经元都放在输出中,效率会更高。一次前向传递将为您提供该状态的所有 q 值。此外,神经网络将能够以更好的方式进行泛化。

第二季度。 Sigmoid 通常用于分类。虽然您可以在其他层中使用 sigmoid,但我不会在最后一层中使用它。

第三季度。嗯.. 使用神经网络的 Q 学习以不总是收敛而闻名。看看 DQN (deepmind)。他们所做的是解决两个重要问题。他们通过使用记忆重放对训练数据进行去相关。随机梯度下降不喜欢按顺序给出训练数据。其次,他们使用旧的权重进行引导。这样他们就减少了非平稳性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多