使用Delphi/Pascal实现TD(λ) (时序差分学习)

我有一个玩井字游戏的神经网络,但尚未完成。


我已完成的部分:

  • 奖励数组 “R[t]”,对于每个时间步或移动 “t” 都有整数值(1=玩家A获胜,0=平局,-1=玩家B获胜)
  • 输入值已正确地通过网络传播。
  • 调整权重的公式:

enter image description here


缺失的部分:

  • TD学习:我仍然需要一个使用TD(λ)算法“反向传播”网络误差的过程。

但我并不真正理解这个算法。


我目前的方法…

踪迹衰减参数λ应为“0.1”,因为远端状态不应获得那么多的奖励。

学习率在两层(输入层和隐藏层)中均为“0.5”。

这是一个延迟奖励的案例:奖励保持“0”直到游戏结束。然后,对于第一个玩家的胜利,奖励变为“1”,对于第二个玩家的胜利,奖励变为“-1”,或者在平局的情况下奖励变为“0”。


我的问题:

  • 你如何以及何时计算网络的误差(TD误差)?
  • 你如何实现误差的“反向传播”?
  • 如何使用TD(λ)调整权重?

非常感谢您的提前帮助 🙂


回答:

如果你真的想让它工作,那么理解TD-lambda会非常有帮助。Sutton和Barto的著作《Reinforcement Learning》可以免费提供HTML格式,并详细介绍了该算法。基本上,TD-lambda所做的是在游戏状态和游戏结束时的预期奖励之间创建一个映射。随着游戏的进行,更可能导致获胜状态的状态往往会获得更高的预期奖励值。

对于像井字游戏这样简单的游戏,最好从表格映射开始(只需跟踪每个可能的游戏状态的预期奖励值)。一旦你完成了这项工作,你就可以尝试使用NN来进行映射。但我建议首先尝试一个单独的、更简单的NN项目…

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注