我有一个玩Tic-Tac-Toe的人工神经网络 - 但还没有完成。
我还有什么:
缺少什么:
但我真的不明白这个算法。
到目前为止我的方法......
痕迹衰减参数λ应该是“0.1”,因为远端状态不应该得到那么多的奖励。
两层(输入和隐藏)的学习率均为“0.5”。
这是延迟奖励的情况:奖励在游戏结束前保持为“0”。然后奖励对于第一个玩家的胜利变为“1”,对于第二个玩家的胜利变为“-1”或者在抽奖的情况下变为“0”。
我的问题:
提前非常感谢你:)
答案 0 :(得分:2)
如果你认真对待这项工作,那么理解TD-lambda会非常有帮助。 Sutton和Barto的书“强化学习”是available for free in HTML format并详细介绍了这个算法。基本上,TD-lambda所做的是在游戏结束时创建游戏状态与预期奖励之间的映射。随着比赛的进行,更有可能获得胜利状态的状态往往会获得更高的预期奖励值。
对于像tic-tac-toe这样的简单游戏,最好从表格映射开始(只跟踪每个可能的游戏状态的预期奖励值)。然后,一旦你有了工作,你可以尝试使用NN进行映射。但我建议先尝试一个单独的,更简单的NN项目......
答案 1 :(得分:0)
我也对此感到困惑,但我相信这是它的工作方式:
从结束节点开始,检查R,(接收输出)和E,(预期输出)。如果E = R,那很好,你没有任何改变。
如果E!= R,你会看到它有多远,基于阈值和诸如此类,然后将权重或阈值向上或向下移动一点。然后,根据新的权重,您返回,并猜测它是否太高,或太低,并重复,效果较弱。
我从来没有真正尝试过这个算法,但这基本上是我理解的想法的版本。
答案 2 :(得分:0)
据我记得,您使用已知结果集进行训练 - 因此您计算已知输入的输出并从中减去已知输出值 - 即错误。
然后你使用错误来纠正网络 - 对于使用delta规则调整的单层NN我知道0.5的epsilon太高 - 像0.1这样的东西更好 - 更慢但更好。使用反向传播它会更先进 - 但据我记得,NN的数学方程描述很复杂且难以理解 - 它并不复杂。
看一看 http://www.codeproject.com/KB/recipes/BP.aspx
或google for“backpropagation c” - 在代码中可能更容易理解。