3

TLDR:我有一个用于实现 negamax 的不对称评估函数 - 这可以接受吗?还是我需要使它对称?

Longer:我正在编写一个游戏 AI(用于类似国际象棋的棋盘游戏“Hive”),它使用带有 alpha-beta 修剪和非对称评估函数的 minimax。

但是我在正确添加转置表时遇到了麻烦,并且对我的 minimax 实现失去了信心,所以我决定使用这里的伪代码切换到 negamax:https ://en.wikipedia.org/wiki/Negamax#Negamax_with_alpha_beta_pruning_and_transposition_tables

我的一切都“正常工作”了,AFAIK 准确地遵循了伪代码,但我的 AI 现在做出了一些与以前截然不同的动作,通常在 10-15 回合后结束的游戏现在需要 30+,我不相信AI实际上比以前玩得更好。我担心具有不对称的评估函数意味着我对节点的评分与以前不同(因为 negamax 触发器)。

我不想更改为对称函数,除非我真的必须这样做——我一直在尝试通过实验(AI 与 AI 之战)生成一个最佳函数,并且已经投入了数百甚至数千小时的计算时间来生成强大的评估功能。

4

1 回答 1

1

Negamax 支持非对称评估函数,但它不会导致最佳游戏(假设您对对手一无所知)。

我对 Hive 知之甚少,但在计算机国际象棋中,一般来说,具有不对称评估函数是一个错误。其背后的原因对于国际象棋和 Hive 应该是一样的。

例如,采取起始位置(在国际象棋中)。白方下一步走,让我们假设您的评估函数给出的位置得分为+0.08。

现在改变位置,让黑色先移动。一切都一样,只是白人和黑人的角色发生了变化。在假设 +0.08 是白色位置的最佳分数的情况下,为什么黑色的位置不能也被评估为 +0.08?

同样的论点适用于任何立场。如果你把一切都颠倒过来,就没有充分的理由以不同的方式玩这个位置。

这条规则只有一个例外。如果一个对手明显强于另一个,则存在不对称评估的论据。例如,采取这样一个完全绘制的位置:

在此处输入图像描述

分:4k3/8/8/p1p1p1p1/PpPpPpPp/1P1P1P1P/8/4K3 b - - 0 1

这个位置可以安全地评估为 0。现在成像起始位置,但白色开始时没有一个骑士。这对黑色来说应该是一个强大的优势。

让我们假设您是 Magnus Carlsen,并且您正在与甚至不知道国际象棋规则的对手对战。你更喜欢哪个职位?在这里,我认为非对称评估可能是有意义的(例如,评估类似于损失的可能平局)。卡尔森应该避免平局,而初学者应该更喜欢它。

初学者即使在一个骑士的赔率下也能与世界冠军抗衡的机会几乎为零。另一方面,在平局中,技术优势并不重要,因为任何移动顺序都不会导致输赢。

在计算机国际象棋中,Rebel 在与人类对战时具有偏好战术位置的功能(参见ANTI GRANDMASTER PLAY)。还有一个常见的概念是“蔑视”,这是引擎给remis的分数。

但请注意,在我的两个示例中,这都不是最佳玩法。Magnus Carlsen 在与强(或未知)对手比赛时不会选择没有骑士的位置。此外,Rebel 不会对其他机器使用反人类策略,这些机器在战术战斗中也很出色。(尽管根据位置不同,Rebel 10确实使用了 ANTI GRANDMASTER PLAY 对抗计算机。)

于 2017-06-07T21:22:30.700 回答