Ham*_*aya 7 artificial-intelligence machine-learning reinforcement-learning neural-network q-learning
我已按照中所述实施了Q-Learning,
http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf
为了约 Q(S,A)我使用如下的神经网络结构,
在每次学习迭代时使用以下公式,

我计算一个Q-Target值然后使用计算错误,
error = QTarget - LastQValueReturnedFromNN
Run Code Online (Sandbox Code Playgroud)
然后通过神经网络传播错误.
Q1,我是在正确的轨道上吗?我已经看到一些文章为每个动作实现一个具有一个输出神经元的NN.
Q2,我的奖励函数返回介于-1和1之间的数字.当激活函数为sigmoid(0 1)时,可以返回介于-1和1之间的数字
问题3,根据我对这种方法的理解,给定足够的训练实例,应该隔离它以找到最佳策略?当训练XOR时,它有时会在2k次迭代后学习它,有时甚至在40k 50k迭代之后也不会学习.
Q1.如果将所有动作神经元放在输出中,效率会更高.单个前向传递将为您提供该状态的所有q值.此外,神经网络将能够以更好的方式进行推广.
Q2.Sigmoid通常用于分类.虽然你可以在其他层使用sigmoid,但我不会在最后一层中使用它.
Q3.嗯..用神经网络进行Q学习并不总是趋于融合.看看DQN(deepmind).他们所做的是解决两个重要问题.它们通过使用内存重放来对训练数据进行去相关.当按顺序给出训练数据时,随机梯度下降不喜欢.其次,他们使用旧重量进行自举.这样他们减少了非静止.