Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 如何用神经网络实现Q学习?_Neural Network_Reinforcement Learning - Fatal编程技术网

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

Neural network 如何用神经网络实现Q学习?,neural-network,reinforcement-learning,Neural Network,Reinforcement Learning,我创建了一个包含2个输入节点、4个隐藏节点和3个输出节点的神经网络。初始权重在-1到1之间是随机的。我使用反向传播方法更新带有TD错误的网络。但是,性能并不好 我想知道问题出在哪里? 1.是否需要偏差节点? 2.是否需要资格跟踪 如果有人能给我提供任何示例代码,我非常感谢。我们需要更多信息。什么是问题域。输入是什么?输出是什么 RL训练可能需要很长时间,根据你的训练方式,在训练过程中可能会从好到好再到不好。因此,您应该在学习过程中规划代理的性能,而不仅仅是最终结果 始终应使用偏移节点。资格跟踪?

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

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


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

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

RL训练可能需要很长时间,根据你的训练方式,在训练过程中可能会从好到好再到不好。因此,您应该在学习过程中规划代理的性能,而不仅仅是最终结果


始终应使用偏移节点。资格跟踪?可能没有。

是的,您应该包括偏差节点,是的,您应该使用合格性跟踪。偏置节点只提供一个额外的可调参数。把神经网络想象成萨顿和巴托的书()中描述的“函数逼近器”。如果神经网络具有参数θ(包含网络中所有权重的向量),则Sarsa更新仅为(使用LaTeX表示法):

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

\θ{t+1}=\θ{t+\alpha*\delta{\u t*\frac{\partial Q(s,a,\theta)}{\partial\theta}

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

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


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

我认为4个隐藏节点对于3个输出节点来说太小了,我建议绝对最小为10个。这显然取决于你想学习多少复杂的功能。我很确定偏差节点只应该被异常忽略。