Stockfish NNUE,Hisayori Noda aka Nodchip
的Stockfish分支,使用高效可更新的神经网络-风格化为唁ИИ或简称为NNUE-取代其标准评估。由Yu Nasu[2]于2018年推出的NNUE,先前已成功应用于嵌入基于Stockfish的搜索[3]中的Shogi评估函数,例如YaneuraOu[4]和Kristallweizen[5]。 。他做出了令人难以置信的预测,即NNUE可以帮助将Stockfish的强度提高大约100点,这几乎是在揭露[6][7]之前的一年。在2019年,Nodchip将NNUE纳入Stockfish 10中-作为概念的证明,并打算将一些东西还给Stockfish社区[8]。经过Henk Drost在2020年5月的支持和宣布[9] 以及随后的增强功能之后,Stockfish NNUE成立并获得认可。2020年夏季,随着越来越多的人参与测试和培训,计算机国际象棋社区由于其快速提高的游戏实力而热情地爆发了结合使用监督学习和强化学习方法进行培训的不同网络。尽管搜索速度大约减半,但Stockfish NNUE仍比其原始[10]强。
2020年8月,Fishtest揭示了Stockfish NNUE至少比经典的至少80 Elo [11]强。2020年7月,NNUE的播放代码作为正式分支发布到了Stockfish官方存储库中,以进行进一步的开发和检查。8月,播放代码合并到master分支,成为引擎的正式部分。但是,培训代码仍保留在Nodchip的存储库中[12][13]。2020年9月2日,由于引入了NNUE并进行了进一步的调整[14],Stockfish 12的演奏强度大大提高了。
NNUE结构
该神经网络包括四个层。输入层的参数设置过大,为每侧的所有国王放置提供了电路板表示。的效率NNUE是由于增量更新在输入层输出化妆和撤消着,其中仅其神经元的一小部分需要考虑[15]。剩余的三个层用2x256x32,32×32和32x1权重计算比较便宜,隐藏层1和2 RELU活化 [16][17],最好使用适当的计算的SIMD指令执行快速8位/16位整数矢量算法,例如x86 / x86-64上的MMX,SSE2或AVX2,或者,如果有的话还可以使用AVX-512。
NNUE层在行动[18]
Nodchip于2020年6月在Discord上做出了解释[19]:41,024 = 64 *641。64来自可能存在king的单元数。641 = 64 * 5 * 2 +1。这里的64来自可能存在除国王以外的其他部分的单元数。5是除国王以外的乐曲类型数。2是白色和黑色的颜色数。1是被捕获的片段。“ +1”是BONA_PIECE_ZERO。在这里,“ bona”意为“ bonaza ”,它是一种流行的计算机将棋引擎。它首次引入了功能“ p”。BonaPieces包含在evalList中。它由Position :: do_move()和Position :: undo_move()更新,并且由NNUE用于计算输入层和第一个隐藏层之间的网络参数。关于计算,以下文字会有所帮助。此文本将发送到Twitter上的RocketMiningPoo。“对于每个i,我们将W {0}的第i列与z {0}相加,其中第i个元素设置为1。然后从中减去W {0}的第i COULMN每个i的z {0},其中第i个元素设置为0。此操作在您的问题中“累加”。” 可能是正确的...我希望有人会再次检查。
网络
所有网络都是由一些志愿者建立的,而不是由任何大型社区(与Leela Chess Zero有所不同)建立的,可以上载到Fishtest中进行测试。测试结果良好的网络将在Fishtest网站上正式发布[20]。
在长期讨论使用Stockfish发布网络的最佳方法[21]之后,开发团队决定将默认网络嵌入到Stockfish二进制文件中,以确保NNUE始终有效并为用户带来更多便利。
优点
对于用户
仅在CPU上运行,不需要昂贵的视频卡,也不需要安装驱动程序和第3个特定的库。因此,安装起来非常容易(与使用深度 卷积神经网络的引擎(例如Leela Chess Zero)相比),几乎适用于所有现代计算机。对于这样的小型网络(也称为主机设备延迟),使用GPU甚至不切实际。内核启动开销[23][24]到当时使用不足的GPU不足以达到预期的NPS范围[25]
仅具有一个网络(通过UCI选项)的发行版,有助于消除用户对查找,选择和设置的困惑。该网络是从Fishtest精心选择的
对于开发人员
需要小的训练集。在几天之内,一个或几个人的努力便可以建立一些高分网络。它不需要超级计算机和/或社区的大量计算
不需要复杂的系统(例如复杂的客户端-服务器模型)来训练网络。Nodchip仓库中的一个二进制文件就足以训练
NNUE代码是独立的,可以很容易地与其他代码分开,并集成到其他引擎中[26]
许多开发人员被新的优势所吸引,并获得了令人印象深刻的成功,因此他们加入或继续工作。该官方鳕鱼干库显示提交的数字,想法合并后NNUE增加显著。
旋转与翻转
由于9x9的棋板具有一个居中的王文件和易位不将棋,已知颜色倒装与180个旋转的不同之处一水平镜像从视图的另一侧的点的位置,与其他方面相同的播放选项。NNUE是从侧面训练和探测的,以移动角度来看,其中惯用的180度旋转(用xor 63代替56)来翻转侧面对于象棋来说似乎很奇怪[27]。例如,将黑王从e8翻转到d1而不是e1。是否考虑在女王身旁短小?
还不清楚,旋转而不是翻转会如何影响游戏强度[28],以及象棋的NNUE是否遭受联想视觉失明。也许Fishtest需要玩许多带有反色开口的游戏,例如1.e4 e5和1.e3 e5 2.e4,以查看结果是否不同。无论如何,必须从生产者和消费者方面进行从旋转到翻转的修复,并且可能会使一些培训课程无效。
也可以看看
类别:神经网络引擎
神经网络
UE
冬季
外部链接
资源
GitHub-官方-stockfish
GitHub的- nodchip /鳕鱼干:UCI国际象棋引擎,由Nodchip
GitHub的- vondele /鳕鱼干在nnue玩家-制品通过Joost的VandeVondele
Stockfish:UCI国际象棋引擎
GitHub的- joergoster /鳕鱼干,NNUE:UCI国际象棋引擎鳕鱼干与高效基于神经网络的可更新评价函数主办约尔格奥斯特
sf-nnue:诺曼·施密特(Norman Schmidt)的Stockfish NNUE(有效更新的神经网络)
github-FireFather / nnue-gui:Norman Schmidt使用nodchip的stockfish-nnue软件的基本Windows应用程序
网路
神经网络下载和统计
/帰尔吉奥-V / nnue指数由塞尔吉奥·维埃里