machine-learning - 时间差异学习的更新

标签 machine-learning tic-tac-toe reinforcement-learning temporal-difference

我读到了 Tesauro 的 TD-Gammon 程序,并且很想将其应用于 tic tac toe,但作为一名高中生,我几乎无法访问所有信息,因为我不知道术语。

这里的第一个方程,http://www.stanford.edu/group/pdplab/pdphandbook/handbookch10.html#x26-1310009.2

给出了“一般监督学习范式”。它表示方程左侧的 w sub t 是时间步 t 处的参数向量。 “时间步长”到底是什么意思?在旨在输出棋盘状态值的井字棋神经网络框架内,时间步长是否指给定游戏中的棋子数量?例如,由字符串“xoxoxoxox”表示的棋盘将在时间步骤 9 处,而棋盘“xoxoxoxo”将在时间步骤 8 处?或者时间步长是指自训练开始以来耗时量?

由于 w sub t 是给定时间步的权重向量,这是否意味着每个时间步都有自己的评估函数(神经网络)?因此,要仅用一次移动来评估棋盘状态,您必须输入不同的神经网络,而不是用两次移动来输入棋盘状态?我认为我在这里误解了一些东西,因为据我所知 Tesauro 仅使用一个 NN 来评估所有棋盘状态(尽管很难找到有关 TD-Gammon 的可靠信息)。

为什么输出的梯度是相对于 w 而不是 w sub t 获取的?

预先感谢您澄清这些想法。如果您对我的项目有任何建议或对无障碍阅读 Material 的建议,我将不胜感激。

最佳答案

TD 涉及 Markov Decision Process 框架内的学习。 。也就是说,您从某种状态 st 开始,执行操作 at,获得奖励 rt,并最终进入另一种状态 — st+1。初始状态称为 s0。下标称为时间。

TD 智能体开始不知道自己会因哪些操作而获得什么奖励,也不知道这些操作会将其带到什么其他状态。其目标是了解哪些行动可以最大化长期总返回。

状态可以代表井字游戏棋盘的状态。因此,在您的情况下, s0 将是一个透明板:“---------”,s1 可能是“-o----” ---”,s2 可能是“-o--x----”等。操作可能是要标记的单元格索引。通过这种表示,您将拥有 39=19 683 种可能的状态和 9 种可能的操作。学习游戏后,您将得到一张表格,告诉您在每个可能的棋盘上标记哪个单元格。

同样类型的直接表示对于双陆棋来说效果不佳,因为可能的状态太多了。 TD-Gammon 所做的是使用神经网络来近似状态。网络的权重被视为状态向量,奖励始终为 0,除非获胜。

这里棘手的部分是 TD-Gammon 算法学习的状态是用于评估棋盘位置的神经网络的状态,而不是棋盘的状态。因此,在 t=0 时,您还没有玩过任何游戏,网络处于初始状态。每次你必须采取行动时,你都使用网络来选择最好的一步,然后根据该行动是否导致胜利来更新网络的权重。在进行移动之前,网络的权重为 wt,之后网络的权重为 wt+1。在玩了数十万场游戏后,您学习了权重,使神经网络能够非常准确地评估棋盘位置。

我希望这能解决问题。

关于machine-learning - 时间差异学习的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10696087/

相关文章:

machine-learning - 逻辑回归对于线性可分离数据更好吗?

machine-learning - 返回置信度的分类算法?

c++ - 井字游戏二维数组

machine-learning - 分层强化学习的实现

machine-learning - 进行特征选择、PCA 和标准化的正确顺序?

scala - 从 FlinkML 多元线性回归中提取权重

java - 井字游戏(Java): finding a tie game

python - X 未在 Tic-Tac-Toe 中定义

algorithm - Q-Learning 算法的实现是递归的吗?

machine-learning - 在 RL 中理解近端策略优化算法的方法是什么?