嗯嗯,中国象棋贴吧和国外某个国际象棋爱好者,都提出过一个观点,就是如果拉高每步时长和每局的时长,这种类似测试的elo等级分差距要缩水很多,后期的神经网络引擎其实差距非常的小,这也解释了为什么等级分差了几百,最新的皮卡鱼为什么不能碾压20230218这款经典引擎。同样的旋风初代nnue对比末代旋风传统可以秒杀和碾压【旋风当初自己说的】,等级分差距也就是200左右。其中原因应该也是神经网络对手工评估审局的碾压,但神经网络互相之间的差距却是非常小。
不过皮卡鱼20250110开始的版本的确能破20230218的金身,能明显观察到20230218的审局非常不稳。即使面对非常有优势的局面有时候也拿不下新版的皮卡鱼,而新版的皮卡鱼同样局面却是能拿下20230218,这也许也是这种测试的目的,对更多局面有更精细的认识,更能把握战机,抵抗也更顽强。
这是steam的我唯一能找到的启蒙神经网络的游戏:AI Learns to Drive
这个游戏用遗传算法训练赛车跑赛道,老外做的,没有汉化,但是英文很少,官方有wiki,可以用ai帮助翻译和指导自己去玩,需要一定基础和兴趣。我在官方第3图跑到第8名然后又被刷下去了,后期刷榜太折磨了。不用去在意。
和象棋有关的点在于,理解训练一个网络,你的训练方法和训练数据非常重要,方法嘛就是:观察ai面对直线弯道的时候的操作和速度变化,调整自己奖励函数,让ai速度更快又不会撞车。数据就是:自己去编辑地图,是生成大量直线还是大量弯道,或者一半一半,从头开始去训练一个非常强力的预训练网络。我道行浅,只知道这么多。推荐这个游戏也是对于感兴趣的道友,至少能帮助一下启蒙神经网络。
我是半瓶醋哦,因为我看B站还有本论坛很多对于皮卡鱼对排局和一些必杀残局比不过传统引擎存在很多疑问,就是说为什么皮卡鱼这么强,算杀棋一些局面算的很慢?那上面那款游戏至少就能初步理解神经网络的学习。
我自己的粗浅看法是:网络是由大量参数构成的,当一个网络经过了大量训练之后,参数会“定型”,改变很难哦而且强行改变会导致灾难性的性能降低,并不能随人的意志在训练末期去单独训练,要么在初始网络或预训练网络一开始训练的时候就做,要么妥协不管只选综合性能最强的网络。
比如我训练的上面的赛车游戏的某次迭代之后的ai网络,这个网络因为我训练的大量的弯道,为了ai弯道跑的更快,会导致一个奇葩的问题,这个ai网络会特别怂,因为它害怕突然出现弯道,所以它的直道速度不够快,而对比其它方法训练的ai网络,明显这个直道的速度可以更快的,因为有其它网络可以安全高速通过后面的弯道。那我为了改变这个比较怂的ai网络,我就得特意去训练很多直道的赛道吗?答案是不行哦。这样做不仅会导致失去高速过弯的特性,而且需要训练好久好久,效果还不一定好。正确的做法就是编辑地图,做一个弯道后面接着直线,直线接着弯道,弯道接着弯道,等等你能想到的各种组合赛道,在随机开始点从新训练一个全新的网络。这样的网络的泛化性才最强,而高泛化性的网络作为你的初始网络,你想怎么训练一个官方地图去刷榜都行,迭代快学习快。
那前面象棋杀棋的问题就来了,排局和杀棋的棋形组合千千万,如果全部一开始就加入训练数据,这其实就是N子残局库了。不现实哦,地球上没有谁有那个算力支持。目前只能从开始局面合理招法训练,逐步深入残局,一点点积累训练数据。这里反常识的一点就是训练一个强力网络非常快,但是生成需要的训练数据很慢很慢。这点lc0的科普中有说,nnue虽然生成数据更快,但明显要保证质量,参数和分支都需要开发者去头疼。【补充一点,皮卡鱼某版本会的局面新版本皮卡鱼反而不会了,等等就是,后面还是会的,架构的更新动了参数或者微调动了参数,后续训练还是会的,只有训练的数据都在,后续一定会的。】
以上,浅见。觉得不对,各位当我放屁。