2

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

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

如果有人可以提供任何示例代码,我将不胜感激。

4

2 回答 2

2

是的,您应该包括偏差节点,是的,您应该使用资格跟踪。偏置节点只提供了一个额外的可调参数。将神经网络视为 Sutton 和 Barto 的书(免费在线)中描述的“函数逼近器”。如果神经网络有参数 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),它通过调整参数 \theta 来估计 Q(s,a)。

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

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

如果你真的想为 RL 使用神经网络,那么你应该使用自然的 actor-critic (NAC)。NAC 遵循一种叫做“自然梯度”的东西,它是由 Amari 专门为使用神经网络加速学习而开发的,它产生了巨大的差异。

于 2013-07-28T18:56:27.357 回答
0

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

RL 可能需要很长时间来训练,并且取决于你的训练方式,在训练期间可能会从好到好到好到不太好。因此,您应该在学习期间绘制代理的性能,而不仅仅是最终结果。

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

于 2013-01-10T21:17:53.183 回答