长期以来,计算机一直能够使用“强力”技术下棋,搜索到一定深度然后评估位置。但是,AlphaGo计算机仅使用ANN评估位置(据我所知,它不进行任何深度搜索)。是否可以创建与AlphaGo玩Go相同的方式下棋的国际象棋引擎?为什么没有人这样做?该程序的性能是否会比今天的顶级国际象棋引擎(和国际象棋玩家)更好?
长期以来,计算机一直能够使用“强力”技术下棋,搜索到一定深度然后评估位置。但是,AlphaGo计算机仅使用ANN评估位置(据我所知,它不进行任何深度搜索)。是否可以创建与AlphaGo玩Go相同的方式下棋的国际象棋引擎?为什么没有人这样做?该程序的性能是否会比今天的顶级国际象棋引擎(和国际象棋玩家)更好?
Answers:
编辑(阅读本文后):
我已经仔细地阅读了这篇论文。让我们从谷歌在论文中所说的开始:
不幸的是,我认为这不是一篇好的期刊论文。我将通过链接进行解释(所以您知道我没有梦想):
https://chess.stackexchange.com/questions/19360/how-is-alpha-zero-more-human对于AlphaZero像人类一样的演奏方式,我有一个答案
这场比赛不公平,有强烈的偏见。我引用了Stockfish的原始程序员Tord Romstad。
https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author
由于时间控制和Stockfish参数设置的选择非常奇怪,因此比赛结果本身并不特别有意义:游戏以固定的1分钟/移动时间进行游戏,这意味着Stockfish不使用其时间管理试探法(为了使Stockfish能够识别游戏中的关键点并决定何时花一些额外的时间进行移动工作,已经付出了很多努力;在每次移动的固定时间,力量将受到极大的影响)。
每走一分钟,Stockfish都不可能下最好的棋。该程序不是为此目的而设计的。
一种是在普通计算机上运行的常规国际象棋程序,另一种是使用根本不同的技术,并且在无法购买的定制设计的硬件上运行(如果有的话,将超出普通用户的预算)。
http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987
我同意这个测试是不公平的。另一个影响SF的问题是,它显然在32核计算机上的64个线程上运行,但是在该计算机上仅运行32个线程会更好,因为几乎没有SMP优势可以抵消大约5到3的速度下降。成本比也比我说的要高。我当时以为这是一台64核机器,但是一台32核机器的成本只有我猜的一半。因此,也许所有30对1的估算都不错。另一方面,我认为您低估了可以进一步改进的程度。
...对于线程数量而言,哈希表太小...
1GB哈希表对于这样的匹配是绝对不可接受的。鳕鱼会经常遇到哈希冲突。替换旧的哈希条目需要CPU周期。
...正在使用的搜索线程远远超过从未进行过任何大量测试的次数...
结论
Google 毫无疑问地证明了他们的方法优于Stockfish。他们的人数是肤浅的,并且强烈偏向AlphaZero。他们的方法不能由独立的第三方复制。现在说深度学习是传统国际象棋编程的一种更好的方法还为时过早。
Google Deepmind(https://arxiv.org/pdf/1712.01815.pdf)上有一篇有关国际象棋的深度强化学习的新论文。从摘要上看,世界排名第一的Stockfish国际象棋引擎“令人信服”地被击败。我认为这是自1997年深蓝比赛以来计算机象棋中最重要的成就。详细阅读论文后,我将更新我的答案。
正本(2017年12月之前)
让我们澄清您的问题:
ANN可用于国际象棋引擎:
该程序的性能是否会比今天的顶级国际象棋引擎(和国际象棋玩家)更好?
长颈鹿的游戏水平大约为国际大师水平,即FIDE 2400等级。但是,Stockfish,Houdini和Komodo的玩法大约是FIDE3000。这是一个很大的差距。为什么?为什么不进行蒙特卡洛树搜索?
有研究表明,“蒙特卡洛树搜索”不适用于国际象棋。围棋是不同于国际象棋的游戏。国际象棋算法不适用于Go,因为国际象棋依赖于野蛮战术。可以说战术在国际象棋中更重要。
现在,我们已经确定MCTS对于AlphaGo效果很好,但对国际象棋则不太适用。在以下情况下,深度学习将更加有用:
如果深度学习可以实现以下目标,它将超越传统算法:
让我指出:
不。长颈鹿(@Tim发布的链接)未使用“蒙特卡洛树搜索”。它使用常规的nega-max算法。它所做的只是用NN替换常规评估函数,而且非常慢。
多一个:
尽管卡斯帕罗夫在1997年的比赛中被深蓝击败。“人性”真的在2003-2005年间消失了,当时克拉姆尼克在没有获胜的情况下输给了Deep Fritz,而迈克尔·亚当斯则在一场单人比赛中输给了一台集群式机器。大约在那个时候,Rybka被证明即使对于世界上最好的球员来说也太强大了。
参考:
我引用:
在国际象棋中,我们具有重要性的概念,该概念已经对发动机的运行状况做出了合理的估计,并且可以快速进行计算。此外,游戏的许多其他方面可以用静态评估功能进行编码,而这在Go中是无法完成的。由于许多启发式方法和良好的评估,EBF(有效分支因子)非常小。使用神经网络代替静态评估功能会明显降低引擎的速度。
DeepBlue已经击败了Kasparov,因此可以通过更简单的方法解决此问题。之所以可行,是因为象棋中可能的移动次数要比go中的少得多,因此这是一个简单得多的问题。此外,请注意NN和蛮力都需要大量的计算资源(在这里您可以找到 AlphaGo背后的计算机照片,请注意,它甚至不使用GPU,而是使用TPU进行计算)。go的大惊小怪是,当Deep Blue击败Kasparov时,go社区争辩说go不可能做到这一点(出于许多不同的原因,但总结一下我需要对游戏进行详细介绍的论点)的)。是的,您可以教NN下象棋,马里奥游戏,或尝试教下象棋星际争霸 ...
我想这是因为您根本就没有在主流媒体上听到人们解决已经解决的问题的案例。
而且你的前提是错误的,深度学习是用来下棋,例如在描述深学习机教本身棋在72小时,戏剧在国际大师级别。另请参见相应的论文《长颈鹿:使用深度强化学习下棋》。