我有一个玩井字游戏的神经网络,但尚未完成。
我已完成的部分:
- 奖励数组 “R[t]”,对于每个时间步或移动 “t” 都有整数值(1=玩家A获胜,0=平局,-1=玩家B获胜)
- 输入值已正确地通过网络传播。
- 调整权重的公式:
缺失的部分:
- TD学习:我仍然需要一个使用TD(λ)算法“反向传播”网络误差的过程。
但我并不真正理解这个算法。
我目前的方法…
踪迹衰减参数λ应为“0.1”,因为远端状态不应获得那么多的奖励。
学习率在两层(输入层和隐藏层)中均为“0.5”。
这是一个延迟奖励的案例:奖励保持“0”直到游戏结束。然后,对于第一个玩家的胜利,奖励变为“1”,对于第二个玩家的胜利,奖励变为“-1”,或者在平局的情况下奖励变为“0”。
我的问题:
- 你如何以及何时计算网络的误差(TD误差)?
- 你如何实现误差的“反向传播”?
- 如何使用TD(λ)调整权重?
非常感谢您的提前帮助 🙂
回答:
如果你真的想让它工作,那么理解TD-lambda会非常有帮助。Sutton和Barto的著作《Reinforcement Learning》可以免费提供HTML格式,并详细介绍了该算法。基本上,TD-lambda所做的是在游戏状态和游戏结束时的预期奖励之间创建一个映射。随着游戏的进行,更可能导致获胜状态的状态往往会获得更高的预期奖励值。
对于像井字游戏这样简单的游戏,最好从表格映射开始(只需跟踪每个可能的游戏状态的预期奖励值)。一旦你完成了这项工作,你就可以尝试使用NN来进行映射。但我建议首先尝试一个单独的、更简单的NN项目…