BetaMeow----利用机器学习做五子棋AI
BetaMeow的起源
前段时间AlphaGo和李世石广受关注,作为人工智能的脑残粉,看完比赛后激动不已,因为有一定的机器学习的基础,便打算撸一个棋类的AI,但我还算有点自知之明,围棋AI,甚至google打算做得通用AI是做不出的了,所以打算撸一个五子棋的AI。
选取五子棋作为试手项目主要是以下几点原因:
规则简单。为了简单起见,BetaMeow只要有一方练成五子就可以判输赢。
受众多。因为五子棋的规则相对简单,使得其受众远比围棋多,换句话来说,我把BetaMeow做出来了,那么可以测试的人也多。
机器学习的简单介绍
近年机器学习
,数据挖掘
,人工智能
很火,但其实不少人对这些名词其实是一头雾水,我尝试用我自己的语言解释,如果有什么需要完善的地方,欢迎提出。
比如说,有一个模型能够能够根据一个人的社交动态,推断出他是喜欢苹果还是香蕉,那么,我现在想知道某个社交平台上市喜欢苹果的人多,还是喜欢香蕉的人多。显然,我把社交平台的数据扔进模型中跑一遍就可以了,但社交平台数据肯定不是说一两个txt文件这么简单啊。这时就可能涉及网络爬虫(收集数据),分布式存储(数据量巨大的时候),过滤无关的数据(数据清洗),修改模型使得符合当前业务场景(花式调参),跑完数据获得结果后决定采取什么商业措施等。(BI)
机器学习就是负责考虑如何建立模型,而数据挖掘则是负责其他地方,不过一般来说,数据挖掘部分的工作可能会分开几个部门来做。
简言之,机器学习是内功,而数据挖掘则是机器学习的一种用途。而人工智能,就是更广的概念了
五子棋AI
回到正题上,传统的五子棋AI采用的搜索算法,这个方面其实已经很完善,听闻已经出现了无解的结果(玩家无法取胜)。但BetaMeow本质上是我在学习机器学习方面的实战项目,所以我想办法利用机器学习的方面的算法实现。
最后选择决策树算法。通过决策树判断该局的状况,属于对方(玩家)占优还是己方(AI)占优。
什么叫决策树
至于什么叫决策树,有时真的是一图胜千言。
图片来至于http://www.52analysis.com/shujuwajue/2441.html
简单来说,通过一层层的筛选下来,你就能获得相应的结果。
如何构建决策树
关于如何构建决策树,如果需要了解文字说明,可以参考这里,如果需要参考python的代码实现,可以参考下文给出的github地址,这里只给出简单总结。
简单描述
在一个二维集合(可以看成矩阵)中,第二维代表每一个决策的实例,用某种方式(例如信息增益(首先要计算熵))在确定一个最佳分割点(p),然后以该点作为根节点,此时剩下的子集有两种情况,要么作为决策树的结果,要么递归下去创建子树。
选取特征
有句话叫好的数据胜过好的模型,经过这番实践我算是真正认识到这句话的意思。机器学习的算法不是你随便扔一个数据集下去,他都能训练出一个有效的模型。我曾经把整个棋局扔给他它训练,然而并没有什么乱用。几番周折才角色以连子形式作为训练的内容。
举个例子
[1,1,0,1,2]
这个训练集表明,玩家的连子形式已经是1,1,0,1(0表示空位),如果玩家顺利连成了4子,那么AI则彻底出于劣势,因为如果4子是在棋盘中间的话,那么ai只能堵一边,玩家还是可以在另一边连成5子。
所以ai应该下在2号位,阻止其连成4子。
我的代码中有大量如此的数据,用于教会ai决定是及时阻止对方,还是提高自己的连子数。(跑两次不同的决策树)
BetaMeow的未来与本文后话
BetaMeow现在显然是不完善的。
首先是五子棋规则的本身,首先是五子棋棋盘应该
15x15
,然后无知的我把它弄成了19x19
,然后规先后手的规则好像也有不同的规定,但我没有考虑太多这方面,毕竟我的主要目的是机器学习的实践,并非做出一个五子棋游戏。五子棋只是一个载体。
同样是因为我的目的在于算法,所以界面不太美观,甚至在不同分辨率上可能有问题(使用的bootstrap应该问题不大),所以如果有较为熟悉前端的朋友,欢迎修改修改后Pull Requese给我。第二点,算法本身也有不完善的地方。
因为目前的方案是遍历棋局,分析各店的形式,可能因为循环的原因,会导致后面的选择覆盖掉前一个选择,从而错过了一些最好的选择。
下一步会是给每一个选择的结果加上权重,从而避免上述问题。
嗯,说了这么多,最后给出这个项目的github地址
my_github
重要的事情再说一遍。
前端真的做得很烂,如果有熟悉前端的朋友帮我修改一下,真的万分感谢。
这个github地址会记录下我学习机器学习和数据挖掘的各种小项目(包括我之前的图片识别的项目),将会持续更新很长一段时间,如果你对这个有兴趣,欢迎关注和支持。
如果你也有机器学习和数据挖掘等相关的项目,欢迎推荐给我,大家互相学习的同时,我也会在我的项目的README中给出你项目的URL(你也要给出我项目的URL哦,亲)
感谢关注和支持。
BetaMeow----利用机器学习做五子棋AI相关推荐
- python五子棋算法_BetaMeow----利用机器学习做五子棋AI
BetaMeow的起源 前段时间AlphaGo和李世石广受关注,作为人工智能的脑残粉,看完比赛后激动不已,因为有一定的机器学习的基础,便打算撸一个棋类的AI,但我还算有点自知之明,围棋AI,甚至goo ...
- 基于C++实现五子棋AI算法思想
更多精彩,请点击上方蓝字关注我们! 今天我想要分享一下我做五子棋AI的思路.因为在做这个之前,我没有接触过任何像这种类似的东西.通过这一次,我也算是有所了解,我的思路也是来自很多网络上的博客,看了很多 ...
- 利用机器学习识别细碎图斑实战(2):技术路线
本节主要讲利用机器学习做细碎图斑识别的技术路线,我们以后将按照这个技术路线完成整个过程. 首先看看整个技术路线图: 整个流程总共分成七个步骤,这七个步骤也是项目分析类任务的标准流程,下面我们简单来解释 ...
- 美国银行将 AI 应用于企业应收账款处理;联合国或将利用机器学习技术帮助救灾工作...
8 月 24 日消息,据外媒报道,美国银行(Bank of America)与 Fintech 创业公司 High Radius达成合作,将人工智能应用于企业应收账款处理.该应用程序专为大型.复杂的公 ...
- TensorFlow2.4可以在MacBook Pro/Mac Pro上利用GPU做机器学习训练了
田海立@CSDN 2020-11-21 之前MacBook上TensorFlow只能利用CPU做训练,TF2.4开始可以利用GPU做训练了,并且不管是M1的MacBook Pro,还是Intel架构的 ...
- 一种基于机器学习的五子棋实现
概述 (源码在最后) 早些年,IBM研发的深蓝机器人战胜了当时的国际象棋冠军,引发了人们对人工智能的关注, 去年,谷歌的alphaGo战胜了李世石九段,又引发了一场人工智能和机器学习的热潮.随着新算法 ...
- 发布AI操作系统、应用市场,开源机器学习数据库和AI操作系统内核,第四范式这波操作有点秀!
"AI的发展经历了'高期望--能否落地--落地是否有用"等多次潮起潮落.今天,AI的价值再次引发一些讨论和怀疑." 第四范式创始人兼首席执行官戴文渊在近日举行的新品发布会 ...
- 字节跳动李航:自学机器学习,研究AI三十载,他说AI发展或进入平缓期
作者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]一阵凉风吹过人工智能,让这个曾是燥热的领域逐渐冷却下来,留下的是扎实地在做研究的人.机构.企业.先后在 NEC 公司中央研 ...
- 观点PK_倘若做不好AI,云服务商还能勇往直前吗?
AI强大却不独立存在,如今已经成为人们普遍接受的理念之一. 在这个火热的时代,AI技术不是一个独立的产品,而是一种"基本生产力",它适用于大部分经济活动,可以让各行各业都产生&qu ...
最新文章
- LINUX环境下资源下载中文目录及中文文件名称问题
- maven中servlet报错:不识别此servlet问题的解决办法
- 华为HCIA-Transmission H31-311练习题
- 引用js或css后加?v= 版本号的用法
- 一加7T系列发布时间公布:9月26日北美和印度率先亮相
- 使用模板实现asp代码和页面分离_asp技巧
- 可重定位的ELF文件
- paip.XXListener is already configured监听器已经被配置的解决
- 知云文献翻译选中翻译出现乱码的解决方式
- 电池检测步入新领域,武汉蓝博三款科研电池测试设备来助力
- 从NC程序中提取路径点的XYZ
- java.lang.InstantiationException: can't instantiate class
- matlab获取基金数据,读取WIND数据(行情、基金净值等)的SAS程序
- HTC Vive与Oculus Rift全面对比
- 京东金融的贷款规模创新高
- SOPC设计02——硬件系统开发流程
- android显示伽玛曲线,android – 伽玛曲线实验 – 将2.2转换为1.8的相反值?
- PDF如何翻译成中文?三种方法教你怎样翻译PDF上的文字
- Vue响应式更新原理(个人总结)
- html做一页关于时间轴的网站,前端css实现最基本的时间轴的示例代码