Language agnostic 极小极大算法

Language agnostic 极小极大算法,language-agnostic,artificial-intelligence,minimax,Language Agnostic,Artificial Intelligence,Minimax,关于Minimax算法,我有一个简单的问题:例如,对于tic-tac-toe游戏,我如何确定每个玩家的效用函数?它不会自动这样做,是吗?我必须硬编码游戏中的值,它无法自己学习,是吗?不,极大极小值无法学习。这是蛮力树搜索的更智能版本 Tic Tac Toe足够小,可以将游戏进行到底,并为赢分配1,为平局分配0,为输分配-1 否则,您必须提供一个函数,以启发式方式确定位置的值。例如,在国际象棋中,一个重要因素是材料的价值,但也包括谁控制中心或棋子移动的容易程度 至于学习,你可以在位置的不同方面添加

关于Minimax算法,我有一个简单的问题:例如,对于tic-tac-toe游戏,我如何确定每个玩家的效用函数?它不会自动这样做,是吗?我必须硬编码游戏中的值,它无法自己学习,是吗?

不,极大极小值无法学习。这是蛮力树搜索的更智能版本

Tic Tac Toe足够小,可以将游戏进行到底,并为赢分配1,为平局分配0,为输分配-1

否则,您必须提供一个函数,以启发式方式确定位置的值。例如,在国际象棋中,一个重要因素是材料的价值,但也包括谁控制中心或棋子移动的容易程度

至于学习,你可以在位置的不同方面添加权重因子,并尝试通过反复玩游戏来优化这些权重因子。

如何确定每次游戏的效用函数

小心地;-)这说明了一个稍有缺陷的评估函数(例如,在可能的PLY树中展望未来时不够“深入”,或者未能捕获某些板位置的相对强度)是如何导致整体弱算法的(一个更容易松脱的算法)

它不能自己学习它们,是吗

不,没有。然而,有一些方法可以让计算机了解板位置的相对强度。例如,通过研究,您将看到如何使用随机过程来学习棋盘,而无需任何先验知识,只需了解游戏规则。有趣的是,虽然这可以在计算机上实现,但由于游戏空间相对较小,以及各种对称性,只需要几百个彩色珠子和火柴盒

在学习了一种教电脑如何玩的很酷的方法之后,我们可能对回到MinMax并不像Tic-Tac-Toe那样感兴趣。毕竟,MinMax是一种相对简单的修剪决策树的方法,,这在tic-tac-toe的小游戏空间中几乎不需要。但是,如果必须的话;-)[返回MinMax]

我们可以查看与下一个剧本相关联的“火柴盒”(即根本不深入),并使用与每个方块相关联的珠子百分比作为附加因素。然后,我们可以评估一棵传统的树,但只能进行2或3次移动(一个浅的前瞻深度,通常以损失或平局结束),并根据简单的-1(损失)、0(平局/未知)和+1(胜利)评级对下一次移动进行评级。通过结合珠子百分比和简单评级(比如说加法,当然不是乘法),我们能够以一种更类似于在无法评估博弈树到底的情况下使用MinMax的方式有效地使用MinMax


一句话:在Tic-Tac-Toe的情况下,当我们去除游戏的确定性时,MinMax只会变得更有趣(例如帮助我们探索特定效用函数的有效性),与完整树的简单评估相关。另一种使游戏[数学上]有趣的方法是与犯错误的对手一起玩

通常您会直接实现实用程序功能。在这种情况下,算法不会学习如何玩游戏,它将使用您在实现中显式硬编码的信息

然而,可以使用(GP)或某些等效技术自动导出效用函数。在这种情况下,您不必编码任何明确的策略。相反,进化将发现自己的游戏方式


您可以将minimax代码和GP代码组合成一个(可能非常慢)自适应程序,也可以先运行GP,找到一个好的实用函数,然后将该函数添加到你的minimax代码中,就像添加任何手工编码的函数一样。

因为它是一个蛮力算法,所以使用Alpha-Beta修剪之类的方法对其进行优化也很重要。伯瑞克:当然可以。但阿尔法/贝塔通常是隐含的,当然是在谈论negamax时。