AlphaZero如何学习评估从未见过的位置?


12

从答案跟踪到:

了解AlphaZero

我的问题是神经网络如何“学习”在从未遇到过的位置上做什么。说实际的AZ使用受过训练的神经网络的偏倚+权重执行MCTS,只是将其推后了神经网络如何计算这些值的一步。如果是通过随机的自我玩法,而没有任何人类知识,那么它将如何决定如何权衡从未见过的位置?

Answers:


6

象棋引擎的评估功能,无论是作为神经网络实例化还是由显式代码实例化,始终能够为任何棋盘位置分配一个值。如果给它一个棋盘位置,甚至是游戏中永远不会出现的荒谬位置,它都可以吐出一个数字,代表它对一个或另一个玩家的有利程度。由于国际象棋中棋盘位置的数量非常庞大,因此只能在游戏树的无穷小样本上进行训练。引擎不只是简单地调出先前计算的电路板位置值,而是根据零件的排列进行计算。对于非神经网络的示例,国际象棋引擎评估的一部分可能是将每块棋子的价值相加,然后减去对手棋子的总价值。然后,

当发动机未经训练时,分配给某个位置的值也可能是随机的,因为评估函数的参数以(通常)随机值开始。训练阶段的目标是调整引擎的参数,以使高分分配给可能是玩家获胜状态的局面。

有关AlphaZero的论文(第3页)中:

AlphaZero中的深层神经网络的参数从随机初始化的参数开始,通过自我扮演的强化学习进行训练。通过选择MCTS为两个玩家选择的动作来玩游戏。在游戏结束时,将根据游戏规则对最终位置进行评分,以计算游戏结果:−1表示损失,0表示平局,+ 1表示获胜。更新神经网络参数,以使预测结果与游戏结果之间的误差最小,并使策略向量与搜索概率的相似度最大。

[从报价单中删除数学符号]

总之,在训练期间,AlphaZero自己对战。当游戏结束时,将使用游戏的结果及其对游戏进行方式的预测准确性来调整神经网络,以便在下一场游戏中更加准确。AlphaZero不会保留所看到的每个位置的记录,而是会进行自我调整,以便它可以更准确地评估将来看到的任何板。


我完全理解您在算法级别上的解释,但是我仍然惊讶于它的工作原理。我本以为早期的游戏太随意了,以至于没有任何学习价值。除非通过将其淘汰给对手,否则似乎无法评估该阶段的行动结果,因为这是唯一被告知的事情。但是,只有在大量其他本质上是随机的东西发生之后,这种死斗才会发生。我的直觉是,没有足够有意义的数据来得出任何结论。我为什么错了?
菲利普·罗

@PhilipRoe没错,每个游戏只提供一点信息。我实际上已经编写了自己的国际象棋引擎,该引擎通过进化算法学习。随机修改的引擎副本会互相影响;失败者将被删除,胜利者将产生更多修改后的副本。通常只需要10,000到20,000个游戏就可以计算出正确的单价顺序(女王,车手,主教/骑士,当兵)。AlphaZero花费了4,400万场游戏才能达到其技能(链接文件第15页的表)。
Mark H

感谢您的回应!但是我还是很惊讶。有大量可能的职位需要评估。但是,还有很多可能要提出的问题。拟人化地,我想象自己除了规则外,先验知识为零,并且拥有庞大的游戏数据库,而这些游戏以几乎不可思议的无能水平进行(尽管我想所有人都不会被记住)。应该算数”似乎算个好主意要多久?
菲利普·罗

1
我发现很难想象,即使提供了有关“什么是一个好问题?”的强烈提示。但即使没有这些,Im印象深刻的是,可以在20,000场比赛中建立棋子的层次结构。因此,我很难接受这种表真的是拉萨。仍然需要一些有关生成和修改规则的过程的最低限度的说明(多少,多少?)。
菲利普·罗

1
@PhilipRoe在我的程序中,我告诉引擎计数件数,但不计算每件零件的价值。因此,我确实告诉引擎要看的内容,但不告诉引擎如何衡量所看到的内容。AlphaZero是更多的表格。如果您好奇:github.com/MarkZH/Genetic_Chess
Mark H
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.