我正在尝试进入机器学习,并决定亲自尝试一下。我写了一个小井字游戏。到目前为止,计算机通过随机移动来对抗自己。

现在,我想通过编写一个代理来应用强化学习,该代理将基于其对董事会当前状态的了解来进行探索或利用。

我不明白的部分是这样的:
代理如何使用自身来针对当前状态进行训练?假设RNG机器人(o)播放器执行以下操作:

[..] [..] [..]

[..] [x] [o]

[..] [..] [..]

现在,代理必须决定最好的举动。受过良好训练的人会选择第一,第三,第七或第九。它在DB中是否找到了类似的状态,使他获得了胜利?因为如果是这样,我想我需要将每一步都保存到数据库中,直到最终达到结束状态(胜利/失败/平局状态),并且一次播放就需要很多数据?

如果我想错了,我想知道如何正确地做。

最佳答案

学习

1)观察当前的板状态

2)根据下一动作的所有可用V(s)的分布进行下一动作。严格地,选择通常基于Boltzman的V(s')分布,但可以简化为最大值移动(贪婪),也可以简化为使用中的随机移动;

3)按顺序记录s';

4)如果游戏结束,它将按顺序更新访问状态的值并重新开始;否则,请执行1)。

游戏玩法

1)观察当前的板状态

2)根据下一动作的所有可用V(s)的分布进行下一动作;

3)直到游戏结束并重新开始;否则,请执行1)。

关于您的问题,是的,在“游戏”阶段中的查找表是在“学习”阶段中建立的。每次从所有V(s)中选择状态,最大可能数为3 ^ 9 = 19683。这是a sample code written by Python,在训练中可以运行10000场比赛。

关于machine-learning - 我应该使用Reinforcement Learning将哪些内容保存到文件/数据库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21818145/

10-12 21:17
查看更多