negamax 可以使用非对称评估函数吗?
Can negamax use an asymmetric evaluation function?
TLDR:我有一个用于 negamax 实现的非对称评估函数 - 这可以接受吗?或者我需要让它对称吗?
更长:
我正在编写一个游戏 AI(用于类似国际象棋的棋盘游戏 "Hive"),它使用带有 alpha-beta 剪枝和非对称评估函数的极小极大。
但是我在正确添加转置表时遇到了问题,并且对我的 minimax 实现失去了信心,所以我决定使用这里的伪代码切换到 negamax:https://en.wikipedia.org/wiki/Negamax#Negamax_with_alpha_beta_pruning_and_transposition_tables
我已经掌握了一切 "working" 并且 AFAIK 准确地遵循了伪代码,但是我的 AI 现在做出了一些与以前截然不同的动作,通常在 10-15 回合后结束的游戏现在需要 30+ ,而且我不相信人工智能实际上比以前玩得更好。我担心具有不对称评估函数意味着我对节点的评分与以前不同(因为 negamax 触发器)。
除非我真的必须这样做,否则我不想更改为对称函数 - 我一直在尝试通过实验产生最佳函数(AI 与 AI 之战)并且已经投入了数百甚至数千个计算小时产生强大的评估功能。
Negamax 支持非对称评估函数,但它不会导致最佳游戏(假设您不了解对手)。
我对 Hive 了解不够,但在计算机象棋中,一般来说,具有不对称评估函数是一个错误。背后的原因对于chess和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)。还有一个常见的概念"contempt",就是engines给remis打分
但请注意,在我的两个示例中,这都不是最佳玩法。马格努斯·卡尔森在面对强大(或未知)的对手时,不会选择没有马的位置。此外,Rebel 不会对其他机器使用反人类策略,这些机器也在战术战斗中 excel。 (尽管根据位置,Rebel 10 did use ANTI GRANDMASTER PLAY against computers。)
TLDR:我有一个用于 negamax 实现的非对称评估函数 - 这可以接受吗?或者我需要让它对称吗?
更长: 我正在编写一个游戏 AI(用于类似国际象棋的棋盘游戏 "Hive"),它使用带有 alpha-beta 剪枝和非对称评估函数的极小极大。
但是我在正确添加转置表时遇到了问题,并且对我的 minimax 实现失去了信心,所以我决定使用这里的伪代码切换到 negamax:https://en.wikipedia.org/wiki/Negamax#Negamax_with_alpha_beta_pruning_and_transposition_tables
我已经掌握了一切 "working" 并且 AFAIK 准确地遵循了伪代码,但是我的 AI 现在做出了一些与以前截然不同的动作,通常在 10-15 回合后结束的游戏现在需要 30+ ,而且我不相信人工智能实际上比以前玩得更好。我担心具有不对称评估函数意味着我对节点的评分与以前不同(因为 negamax 触发器)。
除非我真的必须这样做,否则我不想更改为对称函数 - 我一直在尝试通过实验产生最佳函数(AI 与 AI 之战)并且已经投入了数百甚至数千个计算小时产生强大的评估功能。
Negamax 支持非对称评估函数,但它不会导致最佳游戏(假设您不了解对手)。
我对 Hive 了解不够,但在计算机象棋中,一般来说,具有不对称评估函数是一个错误。背后的原因对于chess和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)。还有一个常见的概念"contempt",就是engines给remis打分
但请注意,在我的两个示例中,这都不是最佳玩法。马格努斯·卡尔森在面对强大(或未知)的对手时,不会选择没有马的位置。此外,Rebel 不会对其他机器使用反人类策略,这些机器也在战术战斗中 excel。 (尽管根据位置,Rebel 10 did use ANTI GRANDMASTER PLAY against computers。)