8

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

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

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

  • 激活乙状结肠
  • 输入,输入数量 + 1 用于动作神经元(所有输入缩放 0-1)
  • 输出,单输出。Q值
  • N 个 M 隐藏层。
  • 探索方法 random 0 < rand() < propExplore

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

在此处输入图像描述

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

error = QTarget - LastQValueReturnedFromNN

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

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

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

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

4

1 回答 1

6

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

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

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

于 2016-02-27T08:22:39.770 回答