【问题标题】:Tic Tac Toe using Machine Learning with LMS rule井字游戏使用机器学习和 LMS 规则
【发布时间】:2011-12-22 10:21:17
【问题描述】:

我正在尝试使用具有最小均方 (LMS) 规则的机器学习来实现著名的游戏 Tic Tac Toe(在 Tom Mitchell 的著名著作 Machine Learning 中提出的练习)。

我通过与选择最佳动作的最佳对手对战,然后与随机玩家对战来让计算机学习。在与最佳对手的比赛中,我的程序赢得了大约 90% 的比赛,其余的比赛并没有输球。面对一个随机的对手,它赢了大约 83%,输掉了 15% 的比赛。

但是,当我与程序对战时,我每次都使用相同的策略获胜。

我的程序是这样工作的:
* 创建学习者和玩家(随机或最优)
* while(游戏运行)
* 生成转弯的所有可能状态并使用最佳状态进行转弯
* 最佳转弯已保存
* 浏览已保存的图板并计算每个功能的价值
* 使用特征和当前权重计算棋盘分数
* 计算训练分数:
* 如果最后一局获胜:最后一局的训练值 == 100
* 如果最后一局输了:最后一局的训练值:-100
* 使用 LMS 规则调整权重

我希望这种方法可以使计算机完美运行(大部分时间获胜,否则平局)?是我错了,还是我的训练方法有问题?

非常感谢您在此问题上使用有关板载功能的想法、想法、代码和建议。

【问题讨论】:

  • 井字游戏只需很短的搜索即可解决。您打算收集哪些功能?鉴于棋盘位置的数量很少,人们可以简单地创建足够的功能来以编程方式解决这个问题。机器学习在这里不仅没有必要,而且也不合适。
  • 我知道状态空间对于蛮力来说足够小,但我想看看机器学习是否可以在这里完成,这是在 Tom Mitchell 的书(机器学习)中作为练习发布的,并且换一种方式回答我,是否可以选择某些棋盘特征,以便学习算法可以完美地玩游戏?
  • 是的:棋盘配置,最多轮换,可存储,完美玩游戏。我只需要一张特征小表来描述董事会位置“类别”,将类别中的成员资格作为特征,然后对类别之间的变化进行评分。
  • “与最佳对手相比,我的程序赢得了大约 90% 的比赛” - 可以肯定这不是最佳对手。
  • 正如 rob mayoff 正确注意到的那样,您的最佳对手肯定不是最佳的(或者您的程序中存在一些其他错误),因为井字游戏的最佳策略永远不会失败。但是,当始终使用相同策略仅从单个对手生成训练数据时,您可能会过度拟合该策略。相反,对于井字游戏来说,使用随机播放生成所有训练数据是有意义的。

标签: machine-learning


【解决方案1】:

1968-1969 年,我在 Lehigh 的大四时做了一个类似的项目,当时计算机靠水运行。 ;-) 一个模块是最佳玩家,第二个模块是学习机。在最好的情况下,学习机在很短的训练游戏中就达到了完美的发挥。为了让事情更有趣,我还插入了一个控件,让“最佳”玩家以我可以控制的速度随机出错。然后我可以测量学习率与培训伙伴的“智力”(不再是最佳)。重要的是,学习机器仍然设法成为最佳玩家,尽管需要更长的时间。虽然是一场微不足道的游戏,但当人们沿着哲学路线扩展这个概念时,它确实表明计算机最终会变得比它们的“老师”更聪明。

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多