蒙特卡罗技术和马尔可夫链技术有什么区别?

9
我想要开发一个包含针对电脑玩家的AI的风险棋盘游戏。此外,我阅读了两篇关于这个游戏的文章,这篇那篇,并且我意识到我必须学习Monte Carlo模拟和Markov链技术。我想我必须把这些技术结合起来使用,但我猜它们是不同的技术,用于计算关于转换状态的概率。
所以,有人能解释一下它们之间的重要差异、优缺点吗?
最后,如果你要为风险游戏实现一个AI,你会选择哪种方式?
这里,你可以找到有关风险棋盘游戏战斗结果的简单确定概率,以及使用的暴力算法。有一棵树形图表明了所有可能的状态。我应该在这个树上使用Monte Carlo还是Markov链?
2个回答

12
好的,我浏览了这些文章以了解它们在做什么。以下是你提到的术语的概述: 马尔可夫链只是您的系统从一个状态转移到另一个状态的模型。从头开始开发马尔可夫模型有时可能很困难,但一旦掌握了其中一个,它们就相对容易使用和理解。基本思想是您的游戏将与之相关联的特定状态;作为游戏的一部分,您将从一个状态转移到另一个状态;并且,关键的是,这种从状态到状态的移动是基于概率的,并且您知道这些概率。
一旦您拥有了这些信息,您可以将其表示为图形,其中节点是状态,状态之间的弧(带有概率标签)是转换。您还可以表示为满足某些约束条件的矩阵,或者其他几种更奇特的数据结构。
简短的文章实际上都是关于马尔可夫链方法的,但是--这很重要--它仅使用该方法作为快速估计如果A军攻击由B保卫的领土会发生什么的一种方式。这是技术的不错应用,但它不是“Risk”的人工智能,它只是AI中帮助确定攻击的可能结果的模块。 蒙特卡罗技术则是估计器。一旦您拥有某种东西的模型,无论是马尔可夫模型还是其他任何东西,您经常发现自己希望对其进行某些估计。 (通常它会变成您可以在那个格式下很难处理的某些东西的积分形式。)蒙特卡罗技术只是随机抽样并将结果聚合成即将发生的估计值。蒙特卡洛技术在我看来并不是人工智能技术。它们是一种非常通用的技术,恰好对人工智能有用,但本质上并不是人工智能。马尔可夫模型也可以说同样的话,但该语句较弱,因为马尔可夫模型在规划人工智能方面非常有用,整个人工智能理论都围绕这种技术建立。马尔可夫模型在其他领域也被广泛应用。
那就是它们的含义。您还问我如果我必须实现一种风险人工智能,我会使用哪种方法。嗯,这两种方法都不够。正如我所说,蒙特卡罗不是一个人工智能技术,而是一种通用数学工具。而马尔可夫模型虽然理论上可以表示整个风险游戏,但它们最终会变得非常难以操作:您需要表示游戏的每个状态,这意味着领土中每个可能的军队配置以及手中每张牌的每个可能的配置等(此处省略了许多细节:这种方法还存在许多其他困难)。
Wolf论文的核心既不是马尔可夫方法也不是蒙特卡罗方法,而是他所描述的评估函数。这是人工智能问题的核心:如何确定最佳行动。Blatt论文中的蒙特卡罗方法描述了一种确定行动预期结果的方法,但这与确定最佳行动不同。此外,Wolf论文中还有一句话说,风险游戏中向前看变得很困难,因为游戏树变得非常大,这导致他(我认为)非常关注评估函数。

所以我的真正建议是:阅读搜索树方法,如极小化极大算法、Alpha-Beta 剪枝和特别是期望极小化极大算法。你可以在 Russell 和 Norvig 的早期著作中或者甚至在维基百科上找到这些算法的良好解释。尝试理解为什么这些技术通常有效,但对于风险游戏来说却很繁琐。这将引导您进一步讨论棋盘评估技术。然后回头看 Wolf 的论文,重点关注他的动作评估函数。最后,专注于他如何尝试自动学习一个好的评估函数。

这需要很多工作。但开发 AI 玩家来玩风险游戏并不容易。

(如果您只想计算给定攻击的预期结果,我建议使用蒙特卡罗算法。它简洁而易懂,并且非常容易实现。唯一困难的地方--虽然不是很大--是确保运行足够多的试验,以获得良好的结果。)


哇,我没有想到会得到这样一个好答案。非常感谢你。我很幸运刚刚订购并得到了Peter Norvig的书。(花了几个小时搜索最有帮助的AI教材)。我只会再问一个问题。我发现在每篇文章中,移动状态之间的概率和胜败的概率是相同的。我需要在每回合计算概率吗,还是使用相同的概率值就足够了?我只是想听听你的意见。 - quartaela
你是在询问是否可以预计算值并将其用于查找表中吗?在大多数情况下,是的。技术术语是“平稳分布”,这是这类问题中的常见假设。这意味着基础的马尔可夫模型或概率不会改变。但你需要注意一点 - 我已经有25年没有玩风险了,但我还记得那里有一叠牌。我不记得这些卡片是否会影响单个战斗,或者如何影响,但这可能会打破假设。(为了解决这个问题,你应该把这些卡片包括在你的状态空间中。) - Novak
实际上,这些卡片并不影响战斗,所以我不会将它们用于任何假设。(它们只确定增援的数量)。再次感谢您的回答,Novak :) - quartaela

6
马尔科夫链只是一组转换及其概率,假设没有过去事件的记忆。
蒙特卡罗模拟是对一组概率进行重复抽样的随机游走。
您可以通过使用马尔科夫链来建模您的概率,然后使用蒙特卡罗模拟来检查预期结果来同时使用它们。
对于风险问题,我认为我不会使用马尔科夫链,因为我看不到优势。与适当的适应性函数结合使用,可能会帮助您通过对可能移动的蒙特卡罗分析得出相当好的人工智能。
我知道这只是简单介绍了很多,但我希望它有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接