AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)

       

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第1张图片


        AlphaGo战胜人类围棋冠军已经好几年过去了,这个话题已经不热了,国内介绍这个项目原理的技术文章也非常多。遗憾的是国内并没有出现几个类似的成功案例,这个问题值得玩味。是不是在实践的路上有很多隐形的关键问题没有公开出来,就算把AlphaGo的源码公开,我们拿过来也做不出一个成功的应用呢?
        学以致用,为了做出一个能用的强化学习模型必须动手实践。首先得有一台训练用的机器,专用的强化学习工作站太贵,本人只好网购了一台专门配置玩游戏的电脑,主要就是需要英伟达的显卡。丐中丐版的2080Ti加上酷睿i9其他一切从简,全部配置下来不到两万RMB。AlphaZero的报道里面有围棋,国际象棋,日本将棋,可惜还没有中国象棋,可能老外都不会下吧,正好可以选这个项目来练手。想起小时候老爸教我象棋的时候,总是不用心,经验套路也都不去记,只是凭着自己的感觉走,总想着不要被别人发现自己的小心机......,多年过去了象棋一直走的不好,也一直下不过老爸;现在好了,我人是练不出来了,但我会写代码啊,我把机器练出来帮我。

硬件准备

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第2张图片

软件准备

AI人工智能(调包侠)速成之路九(AlphaZero代码实战1:强化学习介绍)
AI人工智能(调包侠)速成之路十(AlphaZero代码实战2:蒙特卡洛树搜索)
AI人工智能(调包侠)速成之路十一(AlphaZero代码实战3:神经网络实现)
AI人工智能(调包侠)速成之路十二(AlphaZero代码实战4:人机对战实现)
AI人工智能(调包侠)速成之路十三(AlphaZero代码实战5:AI自对弈训练)
 

万事俱备只欠动手

        AlphaZero巧妙了使用MCTS搜索树和神经网络一起,通过MCTS搜索树优化神经网络参数,反过来又通过优化的神经网络指导MCTS搜索。两者一主一辅,非常优雅的解决了这类状态完全可见,信息充分的棋类问题。
        使用Tensorflow2实现神经网络的部分。现在只剩最关键的模型训练部分了。

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第3张图片

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第4张图片

        训练网络的步骤基本上都套路化了,但是决定成败和学习快慢的因素非常多,相关的技巧与理论指导也在不断发展,从入门到放弃也都发生在这个阶段。这个阶段也最能体现开发人员的基本素养和能力(概念清晰,灵活多变,善于尝试)。就像没有学不好的学生只有教不好的老师一样,每个神经网络模型就像是一个幼稚的学生,我们知道他/她/它一定可以成为“天才”,超越一切有机生物。但是我们是那个可以把他/她/它培养出来的好老师吗?

        具体看下我们这个主体是19层残差网络的模型(因为只有一块显卡做训练,参数再多恐怕活不到训练出来的那天了...),需要训练的参数量是10366836个。训练神经网络模型的本质就是按照一定的方法不断调整这10366836个参数值,最后让这些参数合作起来输出的结果接近或者超越人类。人脑大约有120亿个脑细胞,最多不到10%是充分发展了的并常加以运用的,其余的仍处在未充分发展或完全没有发展的原始状态。对比起来看可以得出两个结论:1,以现在的网络规模来对抗人脑基本上还是很难完成的任务,所以很多模型训练失败是常态。2,人一生中浪费最大的资源或许就是我们的脑细胞吧......。

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第5张图片

        经过7*7*24小时,差不多到10万个局面数量级的训练后,中国象棋AI初级版终于练成了。迫不及待地的抄了个web界面做交互,后台调用训练出来的模型计算给结果。
web界面通过JS把走棋信息传到服务器,然后存入MySql数据库,AI模型循环读取数据库内容,遇到新存入的走棋信息就调用模型计算然后把结果再存入对应的数据表里面。Web界面本地循环读应答数据,有了内容就在界面上显示出来。

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第6张图片

        测试了一下棋力,确实很厉害。反正我是下不过了,自己做出了一个超过自己单项智力的软件我是应该高兴呢,还是高兴呢?
        接下来做什么呢,年轻人不讲武德,找个“大师”去虐虐?

        也不知道大师都在哪里找,先下个QQ游戏,里面的"新中国象棋"试试手。网上下棋游戏都是限时间的,还要把自动网络对弈的功能实现出来。上网搜索了下按键精灵里面有个大漠插件功能很全,自动网络对弈直接调用插件就能实现了。
主要是识别窗口界面的棋盘状态(用大漠插件的自动找图找色功能实现),AI计算出对答着法后再调用大漠插件鼠标键盘接口自动下棋,完美。

不讲武德

中国象棋AI网络机器人

初出茅庐

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第7张图片

腾讯天天象棋 评测升级

消灭一切有机生物

        ”超过全国99.89%的棋友“目前止步到这里了,主要的问题是每步限时一分半钟就要出结果计算量不够,有时候得到的步数不是最优的。另外15分钟一局的总限时也会造成80个回合以后时间用尽了超时判负。现在是贫穷限制了想象力。要有更好的结果需要提升硬件,还需要继续自对弈训练模型。不知道能不能遇到富贵闲人赞助一笔资金,让这个不讲武德的年轻人完成目标。。。

 

王者象棋 通关

        2021年2月贴吧上看到目前网上最专业的象棋等级评测 https://ke.wechess.cn/ (象棋微学堂 王者象棋)。用上面强化学习训练出来的中国象棋AI初级版对弈评测,6个等级全部顺利通关(家冠、村冠、镇冠、县冠、市冠、省冠)。

AI人工智能(调包侠)速成之路十四(中国象棋AI网络机器人:AI技术综合应用实现)_第8张图片

王者象棋 评测升级

 

经验总结

        通关的过程比较顺利,程序用50个线程同时做蒙特卡洛树搜索,开始的时候每走一步棋每个线程递归搜索300次。中途遇到输棋的情况就把循环次数增大再继续评测(没有什么级别是循环次数后面加个零不能解决的,如果真的不能解决那就加两个零...)。
最后通关省冠的时候用的是50个线程,每一步棋递归搜索6000次。每一次递归搜索相当于是从当前局面一直考虑到棋局结束的时候,然后把每个中间局面都打分递归累计到当前局面的树节点上,50*6000等于30万。也就是说每走一步棋就进行了30万次的模拟对弈,然后选出得分最高的一个着法。可以看出来思考的深度和广度精确度都是超过人类棋手极限的,真正是”一力降十会“。

        就像人脑做加减乘除肯定被电脑碾压一样。随着芯片计算能力的数量级提高,可以预见不久的将来所有棋类项目人类棋手都会被AI碾压(棋院的老头退休后,年轻人估计不会再去接力了)。就像手机里面自带的计算器小工具一样,有谁会觉得自己的心算能力超强要去跟计算器比比看呢?

 

你可能感兴趣的:(AI人工智能(调包侠)速成之路,神经网络,机器学习,深度学习,tensorflow,数据挖掘)