如何用神经网络实现Q学习?

时间:2012-12-18 07:47:03

标签: neural-network reinforcement-learning

我创建了一个神经网络,有2个输入节点,4个隐藏节点和3个输出节点。初始权重在-1到1之间是随机的。我使用反向传播方法用TD错误更新网络。但是,表现并不好。

我想知道问题可能出在哪里? 1.是否需要偏置节点?
2.资格跟踪是否必要?

如果有人能提供任何示例代码,我将非常感激。

2 个答案:

答案 0 :(得分:2)

是的,您应该包含偏向节点,是的,您应该使用资格跟踪。偏置节点只提供一个额外的可调参数。将神经网络视为Sutton和Barto的书(free online)中描述的“函数逼近器”。如果神经网络具有参数theta(包含网络中所有权重的向量),那么Sarsa更新就是(使用LaTeX表示法):

\ delta_t = r_t + \ gamma * Q(s_ {t + 1},a_ {t + 1},\ theta_t) - Q(s_t,a_t,\ theta_t)

\ theta_ {t + 1} = \ theta_t + \ alpha * \ delta_t * \ frac {\ partial Q(s,a,\ theta)} {\ partial \ theta}

这适用于任何函数逼近Q(s,a,\ theta),它通过调整其参数来估计Q(s,a),<θ>

但是,我必须问你为什么要这样做。如果您只是想让Q学习工作得非常好,那么您应该使用傅立叶基础而不是神经网络:

http://all.cs.umass.edu/pubs/2011/konidaris_o_t_11.pdf

如果你真的想将神经网络用于RL,那么你应该使用一个自然的演员评论家(NAC)。 NAC遵循一种称为“自然梯度”的东西,这是由Amari开发的,专门用于加速使用神经网络的学习,并且它产生巨大的差异。

答案 1 :(得分:0)

我们需要更多信息。有什么问题域名。有什么投入?有什么输出?

RL可能需要很长时间才能进行训练,并且根据您的训练方式,在训练期间可以从优秀到优秀到良好到不那么好。因此,您应该在学习期间绘制代理的表现,而不仅仅是最终结果。

你总是应该使用偏向节点。资格痕迹?可能不是。