赞
踩
这是我的第一篇博客。
最近刚好有空,整理一下上学期《人工智能基础》课程的大作业项目。
四个实验代码已上传至我的github:https://github.com/TommyGong08/Gobang_AI
有兴趣的小伙伴可以star 也欢迎关注我的github~
监督学习算法——采用YOLO-tiny(基于keras)网上开源代码很多
个人感觉勉强可以,毕竟数据集不是自己做的,来自大佬@Sharpiless
棋子不密集
棋子比较密集
棋子很密集
显然,棋子密集处检测效果比较不佳
采用alpha-beta剪枝对棋局局面进行搜索
具体评估方法如下所示:
必杀情况的评分能够直接得出,评分规则如表2-1所示,最高的分为连五局面下的10000分的,最低分为-10000分;当黑棋出现连四,评分为9050分,当白棋出现连四,评分为-9050分;除了表中情况外,其余情况下针对黑棋或白棋的活三,眠三,活二,眠二的个数依次增加分数,评分为(黑棋得分 – 白棋得分)。
设置搜索深度为2,进行一场五子棋对局,五子棋AI取得胜利,搜索算法和评估函数有效提升棋力。
由于极大极小值的本质是深度优先搜索,通过调整搜索深度,可以得到搜索时间与搜索深度之间的关系。依次设置搜索深度为1,2,3,4,可以测得平均搜索时间分别为0.02s, 0.21s, 2.50s, 30.0s。根据所测得数据做出如下搜索深度与搜索时间关系图如下。
将实验二中的棋局判断函数更改为人工神经网络模型,并采用进化计算对该网络模型进行学习,达到提升五子棋博弈水平的目的。
基于Keras和Tensorflow框架搭建神经网络,网络为全连接结构,含有一个输入层,四个隐含层,一个输出层,输入层有32个神经元,隐含层分别有64,128,64,8个神经元,输出层含有1个神经元。损失函数为MSE,优化器为adam。
在前两个实验的过程中,我所涉及的棋盘大小均为1919。因此,在本实验中记录两个数据集,分别为x_train和y_train,两者均为文本文件。x_train的每一行为1361大小的数组,因为19*19等于361。
训练完成模型后,编写函数接口调用网络模型,对于每一个局面计算评估函数。与此时的AI对局一次,可以发现棋子AI落子合理,最终真人玩家取得胜利。
下面两张图展示了epochs为200时,batch_size分别为12和10时的损失函数图,训练过程中,损失函数呈现下降趋势。其中,通过左图可以观察到batch_size等于12时,loss先将过程中震荡更大,然而并不影响最终loss均收敛之0.17左右。
采用强化学习算法对实验三的人工神经网络模型进行学习,使得五子棋博弈程序的下棋水平不断提高。
2. 强化学习后
训练次数达到20此后,可以观察到AI落子下棋能力得到增强,下棋更有章法。
感兴趣的小伙伴可以欢迎收藏~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。