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