Artificial intelligence Delphi/Pascal(时差学习)中的TD(λ;)

Artificial intelligence Delphi/Pascal(时差学习)中的TD(λ;),artificial-intelligence,neural-network,reinforcement-learning,temporal-difference,Artificial Intelligence,Neural Network,Reinforcement Learning,Temporal Difference,我有一个人工神经网络,它可以玩井字游戏-但它还没有完成 我所拥有的: 奖励数组“R[t]”,每个时间步或移动“t”都有整数值(1=玩家A赢,0=平局,-1=玩家B赢) 输入值通过网络正确传播 调整重量的公式如下: 缺少什么: TD学习:我仍然需要一个使用TD(λ)算法“反向传播”网络错误的过程 但我真的不明白这个算法 我目前的做法… 轨迹衰减参数λ应为“0.1”,因为远端状态不应获得那么多奖励 两层(输入和隐藏)的学习率均为“0.5” 这是一个延迟奖励的案例:奖励保持为“0”,直

我有一个人工神经网络,它可以玩井字游戏-但它还没有完成


我所拥有的:

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


缺少什么:

  • TD学习:我仍然需要一个使用TD(λ)算法“反向传播”网络错误的过程
但我真的不明白这个算法


我目前的做法…

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

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

这是一个延迟奖励的案例:奖励保持为“0”,直到游戏结束。然后,第一名玩家获胜的奖励变为“1”,第二名玩家获胜的奖励变为-1,平局的奖励变为“0”


我的问题:

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


提前非常感谢:)

如果您对这项工作很认真,那么了解TD lambda将非常有帮助。萨顿和巴托的书《强化学习》是一本非常有趣的书,详细介绍了这种算法。基本上,TD lambda所做的是在游戏状态和游戏结束时的预期奖励之间创建映射。随着游戏的进行,更有可能导致获胜的州往往会获得更高的预期奖励值


对于tic tac toe这样的简单游戏,最好从表格映射开始(只需跟踪每个可能的游戏状态的预期奖励值)。然后,一旦你有了工作,你可以尝试使用一个NN来代替映射。但我建议先尝试一个单独的、更简单的NN项目……

我对此也感到困惑,但我相信这就是它的工作方式:

从结束节点开始,检查R(接收到的输出)和E(预期的输出)。如果E=R,这很好,并且您没有要做的更改

如果E!=R、 根据阈值等等,你可以看到距离有多远,然后将权重或阈值向上或向下移动一点。然后,根据新的权重,你返回,猜测它是否太高或太低,然后重复,效果较弱


我从来没有真正尝试过这个算法,但据我所知,这基本上就是这个想法的版本。

据我所知,你用一个已知的结果集进行训练-因此你计算已知输入的输出,然后从中减去已知的输出值-这就是错误

然后你用这个误差来修正网络-对于一个用delta规则调整的单层NN,我知道ε0.5太高了-比如0.1更好-更慢但更好。对于反向传播,它更高级一点——但据我记忆所及,神经网络的数学方程描述是复杂且难以理解的——它并没有那么复杂

看看


或者谷歌的“反向传播c”-它可能更容易理解的代码。

是的,我也这么认为,这可能是它的工作方式。但重要的是:如何调整重量是的,当然,了解TD lambda很重要。但我真的不明白。当然,我读过萨顿的那本书。我很清楚这个算法的大致功能。我已经尝试过表格映射,但现在我想实现一个TD lambda工作的ANN。谢谢你的回答。不幸的是,这不是时间差分学习-这是“反向传播”与德尔塔规则,正如你所描述的。谢谢你的反对票-我现在看到,我的贡献真的没有帮助。所以不管是谁投的谢谢!至于NN-所以你不是在看广义三角法则。我确实觉得介绍它的PDP书籍非常有趣。对于tic-tac-toe,我认为使用遗传算法更有趣。