使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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