使用机器学习改进益智游戏AI

时间:2014-10-03 13:49:30

标签: graph machine-learning artificial-intelligence 2d-games

我提出这个问题的动机是我在图形数据集上使用机器学习发现了一个有趣的问题。有关于这个主题的论文。例如,"从有向图上的标记和未标记数据中学习" (周,黄,Scholkopf)。但是我没有人工智能或机器学习的背景,所以我想在开展任何科学工作之前为更广泛的受众编写一个较小的程序。

几年前,我写了一款名为Solumns的游戏。它是经典的Sega游戏Columns的邪恶变体。灵感来自bastet,它有助于对玩家不利的颜色组合。这很难。

我想改进它的人工智能。我认为游戏空间(彩色块的网格,列位置,列颜色)比属性列表更适合图形结构。如果是这种情况,那么这个问题就像我的研究问题一样。

我正在考虑使用以下高级计划来解决这个问题:

  1. 我认为如果AI对手可以基于比移动后棋盘上现有方块的数量更多的数据为可能的移动分配健身等级,那将是有用的。我正在考虑使用分类器。在移动中训练和所有过去的动作,使用游戏剩余部分的过程作为衡量成功的标准。
  2. 我也在考虑开发能够击败标准AI对手的玩家机器人。在为1生成数据时,这可能很有用。
  3. 使用玩家机器人游戏的样本来构建一个击败战略玩家的AI。也许也可以将此数据用于1。
  4. 编写一个有趣的AI,在适当时委托给可能的1,3和原始AI的组合,我将通过实验来确定启发式软糖因子。
  5. 为了构建播放器机器人,我想我可以使用强力来计算样本空间。然后使用机器学习技术,例如用于构建随机森林的机器学习技术来创建某种决策者。

    建立AI对手是我最困惑的地方。

    具体问题:

    • 评级移动的声音就像人们用国际象棋做的事情一样,虽然我承认我的方法可能是无知的,但在文献中有很多关于此的内容,我可以从中学习。问题是,玩家机器人和AI对手是否应该创建数据样本?听起来我在不同的样本集之间感到困惑,这听起来像是训练不良的秘诀。我应该只玩一堆游戏吗?
    • 我应该考虑采用什么样的算法来训练玩家机器人对抗当前的AI?
    • 我应该考虑采用什么样的算法训练AI对手对抗玩家机器人?

    额外信息:

    • 我故意不问这个策略是否适合编程游戏AI。当然,你可能能够更简单地编写一个优秀的AI(毕竟它已经已经难以发挥)。我想通过做一些有趣的事情来学习机器学习。
    • 原始游戏是用球拍和C混合编写的。我将其移植到jruby有各种原因,可能是扩展或RPC调用另一种更快的语言。我对这里现有的语言特定解决方案不太感兴趣。我想在这方面发展技能,并且不怕为自己实施算法。

    您可以获取original game here

    的来源

1 个答案:

答案 0 :(得分:0)

我不会去机器学习。看看玩AI的游戏。

你有两个不对称玩家的对抗游戏(比如Go):

  • 放置作品的用户
  • 和选择作品的计算机(而不是偶然选择作品)。

我可能会从蒙特卡罗树搜索开始。