GPT v.s. 中国象棋:写过文章解过题,要不再来下盘棋?

本文介绍了如何使用GPT模型来下中国象棋,通过将棋谱转化为文本字符串,利用GPT的文本生成能力来预测下一步棋。作者探讨了ICCS记谱和FEN局面表示法,并分享了模型训练和交互式下棋的实现,指出该方法在开局时表现出不错的能力,但在中局后应变能力下降。
摘要由CSDN通过智能技术生成

©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

▲ 中国象棋

不知道读者有没有看过量子位年初的文章《最强写作AI竟然学会象棋和作曲,语言模型跨界操作引热议,在线求战》,里边提到有网友用 GPT2 模型训练了一个下国际象棋的模型。

笔者一直在想,这么有趣的事情怎么可以没有中文版呢?对于国际象棋来说,其中文版自然就是中国象棋了,于是我一直有想着把它的结果在中国象棋上面复现一下。拖了大半年,在最近几天终于把这个事情完成了,在此跟大家分享一下。

象棋谱式:

将军不离九宫内,士止相随不出官。象飞四方营四角,马行一步一尖冲。炮须隔子打一子,车行直路任西东。唯卒只能行一步,过河横进退无踪。

背棋谱

其实,简单看看量子位的文章,就能理解 GPT2 下象棋的原理了,无非就是“背棋谱”。简单来说,就是象棋的棋谱可以表示为一个连续的文本字符串,而 GPT2 正是擅长于背诵文本,因此可以用 GPT2 把人类的棋谱都背诵下来,而对于下棋来说,就可以看成是根据已经走的部分棋谱背诵下一步棋谱了,因此整个任务理论上确实是可以用 GPT2 完成。

为了完成这个任务,我们就需要了解计算机是如何记谱的。关于记谱的标准,比较通用的是 ICCS 记谱法和 FEN 局面表示法,其细节可以参考文章《中国象棋电脑应用规范(二):着法表示》[1] 和《中国象棋电脑应用规范(二):FEN文件格式》[2]。

1.1 ICCS记谱

简单来说,ICCS 记谱就是将棋盘用如下图的横纵坐标表示,每一步走法只需要记录起始坐标,比如“h2e2”就是指将原来位于坐标(h, 2)的子移动到(e, 2),如果是当前局面是新开局,那么这就对应着走法“炮二平五”。这样一来每一步就只需要 4 个字符来记录了,n 步的棋谱就变成了 4n 长度的字符串了。

当然,如果要输入到模型的话,不一定非得要按照这样的方式来,比如我也可以把“h2”只用一个 id 表示、“e2”用另一个 id 表示,也就是每个格点都用一个坐标而不是两个坐标来描述,这样每一步的只需要两个 id 来记录,以此来缩小棋谱的序列长度,这没有什么定法,有兴趣大家自己改进着完就好。

▲ 中国象棋棋盘ICCS坐标示意图

1.2 FEN局面

至于 FEN 局面表示法,则是用来表示当前局面有哪些子,轮到谁走。本文所建模的棋谱实际上都是全局棋谱,所以实际上本文的模型不需要用到它(局面都

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值