graph - 使用机器学习改进益智游戏人工智能

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

我问这个问题的动机是我在图数据集上使用机器学习发现了一个有趣的问题。有关于这个主题的论文。例如,“从有向图上的标记和未标记数据中学习”(Zhou、Huang、Scholkopf)。然而,我没有人工智能或机器学习的背景,因此我想在从事任何科学工作之前为更广泛的受众编写一个较小的程序。

几年前,我编写了一款名为 Solumns 的游戏。它是经典世嘉游戏《Columns》的邪恶变体。灵感来自bastet ,它会暴力破解对玩家不利的颜色组合。很难。

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

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

  1. 我在想,如果 AI 对手可以根据比移动后棋盘上现有方 block 数量更多的数据来为可能的移动分配适合度评级,那会很有用。我正在考虑使用分类器。训练移动和所有过去的移动,使用游戏其余部分的过程作为成功的衡量标准。
  2. 我还在考虑开发一个可以击败标准人工智能对手的玩家机器人。这在生成 1 的数据时可能很有用。
  3. 使用玩家机器人游戏的样本来构建击败战略玩家的 AI。也许也可以将此数据用于 1。
  4. 编写一个有趣的 AI,在适当的时候将其委托(delegate)给 1、3 和原始 AI 的可能组合,我将通过实验来找到启发式模糊因素来确定该组合。

为了构建玩家机器人,我想我可以使用暴力来计算样本空间。然后使用机器学习技术(例如用于构建随机森林的技术)来创建某种决策者。

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

具体问题:

  • 评分 Action 听起来就像人们在国际象棋中所做的那样,虽然我承认我的方法可能是无知的,但文献中有很多关于这方面的内容,我可以从中学习。问题是,玩家机器人和人工智能对手是否应该创建数据样本?听起来我对不同的样本集感到困惑,这听起来像是糟糕训练的秘诀。我应该经常玩游戏吗?
  • 我应该考虑使用什么样的算法来针对当前的 AI 训练玩家机器人?
  • 我应该考虑使用什么样的算法来训练 AI 对手对抗玩家机器人?

额外信息:

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

您可以获得 original game here 的源代码

最佳答案

我不会在这里进行机器学习。看看玩游戏的人工智能。

您有一个由两个不对称玩家组成的对抗性游戏(例如围棋):

  • 放置棋子的用户,
  • 以及选择棋子的计算机(而不是随机选择棋子)。

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

关于graph - 使用机器学习改进益智游戏人工智能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26180218/

相关文章:

perl - 用于神经网络的易于使用的 Perl 模块

language-agnostic - 绘制二维点图

python - 尽管输入发生变化,神经网络仍返回相同的输出

c - 试图在 c 中对图进行拓扑排序?

python - TensorFlow GradientDescentOptimizer 未达到预期成本

python - Keras 模型获得恒定的损失和准确性

c# - 具有 6 个特征的人工神经网络训练

machine-learning - 机器学习: specific strategy learned because of playing against specific agent?

javascript - C3.js,y轴时间

javascript - 关于jquery中的气泡显示