为什么没有像AlphaGo这样的国际象棋深度强化学习引擎?


32

长期以来,计算机一直能够使用“强力”技术下棋,搜索到一定深度然后评估位置。但是,AlphaGo计算机仅使用ANN评估位置(据我所知,它不进行任何深度搜索)。是否可以创建与AlphaGo玩Go相同的方式下棋的国际象棋引擎?为什么没有人这样做?该程序的性能是否会比今天的顶级国际象棋引擎(和国际象棋玩家)更好?



直到有人能正确地做到这一点只是时间问题。因此,在发布问题一个月后,您可以访问:arxiv.org/abs/1712.01815
变形虫说莫妮卡(Reonica Monica)

Answers:


49

编辑(阅读本文后):

我已经仔细地阅读了这篇论文。让我们从谷歌在论文中所说的开始:

  • 他们通过蒙特卡洛树搜索+深度神经网络击败了Stockfish
  • 这场比赛绝对是单方面的,对于AlphaZero来说是很多胜利,但是对于Stockfish来说却没有。
  • 他们仅用了四个小时就能做到
  • AlphaZero的演奏就像人类

不幸的是,我认为这不是一篇好的期刊论文。我将通过链接进行解释(所以您知道我没有梦想):

https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

由于时间控制和Stockfish参数设置的选择非常奇怪,因此比赛结果本身并不特别有意义:游戏以固定的1分钟/移动时间进行游戏,这意味着Stockfish不使用其时间管理试探法(为了使Stockfish能够识别游戏中的关键点并决定何时花一些额外的时间进行移动工作,已经付出了很多努力;在每次移动的固定时间,力量将受到极大的影响)。

每走一分钟,Stockfish都不可能下最好的棋。该程序不是为此目的而设计的。

  • Stockfish在常规的商用机器上运行,而AlphaZero在为AlphaZero调整的超过400万台TPU机器上。这就像将高端台式机与廉价的Android手机相匹配。托德写道:

一种是在普通计算机上运行的常规国际象棋程序,另一种是使用根本不同的技术,并且在无法购买的定制设计的硬件上运行(如果有的话,将超出普通用户的预算)。

  • Google无意间将64个线程分配给用于Stockfish的32核机器。我引用GM拉里·考夫曼(世界一流的计算机国际象棋专家):

http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987

我同意这个测试是不公平的。另一个影响SF的问题是,它显然在32核计算机上的64个线程上运行,但是在该计算机上仅运行32个线程会更好,因为几乎没有SMP优势可以抵消大约5到3的速度下降。成本比也比我说的要高。我当时以为这是一台64核机器,但是一台32核机器的成本只有我猜的一半。因此,也许所有30对1的估算都不错。另一方面,我认为您低估了可以进一步改进的程度。

  • Stockfish仅提供了1GB的哈希表。这是个玩笑...我在iPhone上为Stockfish iOS应用程序拥有一个更大的哈希表(免责声明:我是作者)!托德写道:

    ...对于线程数量而言,哈希表太小...

1GB哈希表对于这样的匹配是绝对不可接受的。鳕鱼会经常遇到哈希冲突。替换旧的哈希条目需要CPU周期。

  • Stockfish并非设计为可以使用那么多线程。在我的iOS国际象棋应用程序中,仅使用了几个线程。托德写道:

...正在使用的搜索线程远远超过从未进行过任何大量测试的次数...

  • Stockfish在没有开幕书或6片Syzygy残局桌面的情况下运行。样本量不足。Stockfish版本不是最新版本。在这里讨论。

结论

Google 毫无疑问地证明了他们的方法优于Stockfish。他们的人数是肤浅的,并且强烈偏向A​​lphaZero。他们的方法不能由独立的第三方复制。现在说深度学习是传统国际象棋编程的一种更好的方法还为时过早。


编辑(2017年12月):

Google Deepmind(https://arxiv.org/pdf/1712.01815.pdf)上有一篇有关国际象棋的深度强化学习的新论文。从摘要上看,世界排名第一的Stockfish国际象棋引擎“令人信服”地被击败。我认为这是自1997年深蓝比赛以来计算机象棋中最重要的成就。详细阅读论文后,我将更新我的答案。


正本(2017年12月之前)

让我们澄清您的问题:

  • 不,国际象棋引擎使用蛮力。
  • AlphaGo 确实使用树搜索,它使用了蒙特卡洛树搜索。如果您想说服Google,请使用“ 蒙特卡洛树搜索alphaGo ”。

ANN可用于国际象棋引擎:

该程序的性能是否会比今天的顶级国际象棋引擎(和国际象棋玩家)更好?

长颈鹿的游戏水平大约为国际大师水平,即FIDE 2400等级。但是,Stockfish,Houdini和Komodo的玩法大约是FIDE3000。这是一个很大的差距。为什么?为什么不进行蒙特卡洛树搜索?

  • 国际象棋中的物质启发很简单。在大多数情况下,仅通过盘点棋盘上的材料就能赢得/输掉一盘棋。请回想一下,对Go计数材料无效。物料计数比运行的神经网络快几个数量级-这可以通过以64位整数表示的位板来完成。在64位系统上,只能通过几条机器指令来完成。使用传统算法进行搜索比使用机器学习要快得多。每秒更高的节点转化为更深入的搜索。
  • 同样,也有非常有用和便宜的技术,例如零举修剪,减少后举减少和杀手举动等。它们运行起来很便宜,并且对AlphaGo中使用的方法非常有效。
  • 国际象棋中的静态评估既快速又有用
  • 机器学习对于优化参数很有用,但是我们也有国际象棋的SPSA和CLOP。
  • 国际象棋中有许多有用的度量标准可用于减少树木。对于Go来说要少得多。

有研究表明,“蒙特卡洛树搜索”不适用于国际象棋。围棋是不同于国际象棋的游戏。国际象棋算法不适用于Go,因为国际象棋依赖于野蛮战术。可以说战术在国际象棋中更重要。

现在,我们已经确定MCTS对于AlphaGo效果很好,但对国际象棋则不太适用。在以下情况下,深度学习将更加有用:

  • 调整后的NN评估优于传统算法。但是...深度学习不是魔术,作为程序员,您仍然需要进行编程。如前所述,我们有一些类似SPSA的东西可以自我玩耍,以便在国际象棋中进行参数调整。
  • 投资,赚钱!在国际象棋上进行机器学习的钱不多。Stockfish是免费和开源的,但强大到足以击败所有人类玩家。如果有人可以免费下载Stockfish,为什么Google会花费数百万美元?为什么要为CPU集群付费?谁来支付人才?没有人愿意这样做,因为国际象棋被认为是一种“已解决”的游戏。

如果深度学习可以实现以下目标,它将超越传统算法:

  • 给定象棋位置,就像人类的宗师一样“感觉”它。例如,根据经验,人类大师不会陷入劣势。传统算法和深度学习都无法实现这一目标。您的NN模型可能会给您职位的概率[0..1],但这还不够好。

让我指出:

不。长颈鹿(@Tim发布的链接)未使用“蒙特卡洛树搜索”。它使用常规的nega-max算法。它所做的只是用NN替换常规评估函数,而且非常慢。

多一个:

尽管卡斯帕罗夫在1997年的比赛中被深蓝击败。“人性”真的在2003-2005年间消失了,当时克拉姆尼克在没有获胜的情况下输给了Deep Fritz,而迈克尔·亚当斯则在一场单人比赛中输给了一台集群式机器。大约在那个时候,Rybka被证明即使对于世界上最好的球员来说也太强大了。

参考:

http://www.talkchess.com/forum/viewtopic.php?t=64096&postdays=0&postorder=asc&highlight=alphago+chess&topic_view=flat&start=0

我引用:

在国际象棋中,我们具有重要性的概念,该概念已经对发动机的运行状况做出了合理的估计,并且可以快速进行计算。此外,游戏的许多其他方面可以用静态评估功能进行编码,而这在Go中是无法完成的。由于许多启发式方法和良好的评估,EBF(有效分支因子)非常小。使用神经网络代替静态评估功能会明显降低引擎的速度。


1
谢谢。一些问题:国际象棋引擎使用alpha-beta算法,这不是“强力”算法吗?“蒙特卡罗树搜索”是否意味着人们看起来比当前位置领先许多步伐?
lijas

1
@lijas“蛮力”通常定义为搜索所有可能性。国际象棋引擎不会那样做。
SmallChess

7
@lijas您刚刚回答了问题。矩阵乘法运算很慢。
SmallChess

3
Alpha Beta搜索肯定是“残酷的强迫”。关于人工智能趋势的汉斯·柏林纳(Hans Berliner):“我认为最重要的趋势是计算机在过去50年中的发展速度相当快。在此过程中,我们发现许多事情我们都拥有最好的拟人化解决方案,但在许多情况下却无法捕捉到人类方法的真正要旨可以通过更多的强力手段来完成,直到列举出令人满意的解决方案为止。如果这是异端,那就这样吧。” (见ieeexplore.ieee.org/document/820322/?reload=true
丹尼尔Lidström

1
@smallchess alpha beta实际上是搜索算法,即使它是negascout之类的变体,也只是逐步的改进。他还能指什么?这是在深度学习系统出现之前写得很好的。
DanielLidström'17 -10-19

6

DeepBlue已经击败了Kasparov,因此可以通过更简单的方法解决此问题。之所以可行,是因为象棋中可能的移动次数要比go中的少得多,因此这是一个简单得多的问题。此外,请注意NN和蛮力都需要大量的计算资源(在这里您可以找到 AlphaGo背后的计算机照片,请注意,它甚至不使用GPU,而是使用TPU进行计算)。go的大惊小怪是,当Deep Blue击败Kasparov时,go社区争辩说go不可能做到这一点(出于许多不同的原因,但总结一下我需要对游戏进行详细介绍的论点)的)。是的,您可以教NN下象棋,马里奥游戏,或尝试教下象棋星际争霸 ...

我想这是因为您根本就没有在主流媒体上听到人们解决已经解决的问题的案例。

而且你的前提是错误的,深度学习用来下棋,例如在描述深学习机教本身棋在72小时,戏剧在国际大师级别。另请参见相应的论文《长颈鹿:使用深度强化学习下棋》


3
尽管显然有一些接受深度强化学习训练的国际象棋程序,但事实是,没有人能开发出能击败“传统”国际象棋引擎的程序。我认为这是因为这个问题(击败传统发动机)根本没有意思/没有足够的动力去投入大量精力来开发某种AlphaGo级别的产品。
变形虫说莫妮卡(Reonica Monica)

1
@amoeba广泛使用的围棋软件也没有使用深度学习,它通常比业余的1 dan播放器弱, AlphaGo差得多。AlphaGo是概念证明。

1
@ rus9384并非易事,但我们已经“解决”了它,Deep Bluie击败了Kasparov,我们的黑天鹅已经通过了图灵测试。
蒂姆

5
解决的游戏是另一回事:我们不知道完美玩法能否保证黑白赢或平局。
rus9384

1
@ rus9384:开始对完美的国际象棋AI比赛很有趣,并看到“白方获胜。将死的棋局有97步”。
艾里克·杜米尼尔
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.