博舍

基于大数据的人工智能象棋 人工智能下象棋网站叫什么

基于大数据的人工智能象棋

这学期上了一门云计算与大数据的课程,课程设计是要求做一个基于大数据的人工智能象棋出来。整体来说还是比较有难度的,平常都是在Win10环境下进行开发部署,现在要求部署到服务器上面,就会遇到各种各样的问题。

文章目录基于大数据的人工智能象棋项目简介实现方案前端后端下棋接口学习接口数据库爬虫+数据处理部署+整合购买服务器安装xftp6和xshell在服务器上安装java、mysql、tomcat在阿里云的管理控制台打开防火墙8080的端口在解压好的tomcat/bin下启动tomcat,./startup.sh,就可以访问服务器了sql脚本导入用Maven将项目打包成war包,发送到服务器tomcat/webapps下查看日志文件,tomcat/logs下的catalina.out可以查看tomcat的日志报告。通过互联即可进行访问数据库连接问题基于大数据的人工智能象棋项目简介

实现一个能够通过互联网访问的,基于大数据的简单的人工智能象棋。

实现方案前端

前端方面是老师直接给了代码,http://avatarsys.org:8007/chess.html,整个页面是用canvas实现的,代替了用图片表示象棋棋子的传统方式。但是只提供了点击下象棋,限制象棋走法等基本的功能,对于后边提及到的功能均要求自己实现。图1是整个页面的布局,横轴为0-8和纵轴为0-9,图二上的坐标(x,y)标记了每个棋子,它们是独一无二的。这样,通过一段64位的字符串即可代表整个棋盘的即时布局状态,比如,棋盘的初始状态为(-是让大家方便看清楚,实际上是不存在的):00102030405060708012720323436383-89796959493929190977178666462606

这样页面发生任何变动都可能通过64位的字符串来了解到是如何变化的。上面就是整个页面布局的介绍。所以,用户(默认是红方)每走一步,前端都会发送一个请求,将当前页面的棋局状态(64位的字符串)发送给后端,使得后端能够根据这段字符串进行处理。后端会响应回来一个四位的字符串(后端部分会在下面介绍),这四位字符串代表黑方(即机器人)要怎么走,比如返回“0001”,即黑方的左上角的车要向下挪一格。那么前端接受到这四位字符串,要更新页面,然后切换控制权给用户,让用户继续下棋。

在下棋的过程中,可能会遇到机器不会走的情况,那是因为我们爬取的数据不够多,不能够覆盖所有情况,所以我们要让机器自己学习。我们小组的想法是这样的。遇到机器不会走的情况,将黑方控制权给用户,让用户帮我们下,学习用户的下法,不同的用户遇到这样的棋局是如何下的,统计该棋局下每个用户的走法,遇到新的走法则记录,遇到同样的走法则其数据库字段的频率+1,后端查询时即根据最高频率进行选择(即选择最多人走的走法)。由于时间关系,我们小组没有做用户登录的功能,所以无法根据用户来学习,只实现了很简单是不懂就学习,学完之后它的频率是一直都是1,不会进行优化学习的。

在这个学习的过程中,前端要做的就是记录红方走前的棋局状态,称为chessStatus1,记录用户控制黑方走之后的棋局状态,称为chessStatus2,将两个棋局状态发送给后端,保存到数据库中。然后再讲控制权切换回给红方。

上面就是前端大概功能和做法了,其实最难的还是生成棋盘状态部分。这部分不是我负责的,所以也不好写。嘿嘿,这里就懒得去理解解释了。狗头保命。

后端

我负责的是后端的部分,用Maven搭建的骨架,语言选择的是JAVA,编译器是IDEA,框架使用了SSM,数据库是MYSQL。后端部分的代码比较少。老师要求用REST风格来写,这里只写了两个API,GET是下棋接口,POST是学习接口。

下棋接口

前端发送过来的是chessStatus,调用Service到数据库进行查询,如果没有就返回"null",如果找到了最优棋盘status,则要进行处理。其实就是要将两个棋局进行比较,就是一个寻找两个字符串中不同字符的算法(不同的字符最多有两个,最少有一个),因为我们要返回的是某个棋子的变化动作,棋子走一步可能它的(x,y)坐标只有一个变化了,也可能是x和y都变了,所以有些特殊情况进行处理,代码如下。

学习接口

这就非常简单了,直接插入数据就行了

数据库

数据库表(就一张表)及字段

爬虫+数据处理

嘿嘿,这两部分也是其他人负责的,整个项目就这两部分最重要了。这里就简单贴一下他们写的思路吧。

部署+整合

部署是部署在阿里云的服务器上边,这个过程还是比较复杂的,有很多坑。

购买服务器

阿里云的地址:https://www.aliyun.com,我买的是轻量级服务器,系统选的是ubuntu18.04,学生认证,一个月10块钱,相当于白嫖,购买完进去之后,设置用户名和密码就可以使用了。

安装xftp6和xshell

想要通过本地直接访问远程服务器可以使用xshell,想要向服务器传输文件可以使用xftp6,这两款软件都挺好用的,隶属于NetSarang的软件。然后在两款软件上配置一下主机地址即公网ip、用户名和密码就可以访问到我们的服务器了。

在服务器上安装java、mysql、tomcat

这部分大家上网搜一下教程就可以了。要提醒的一点就是,mysql安装完之后一定要记得取消无密访问的设置,然后配置好用户名和密码,不然后面连接会出问题。

在阿里云的管理控制台打开防火墙8080的端口

在解压好的tomcat/bin下启动tomcat,./startup.sh,就可以访问服务器了

sql脚本导入

mysql-uroot-pxxx;进入数据库usebigdata_aichess;使用该数据库source./chessdata.sql运行脚本文件

用Maven将项目打包成war包,发送到服务器tomcat/webapps下

查看日志文件,tomcat/logs下的catalina.out可以查看tomcat的日志报告。通过互联即可进行访问

数据库连接问题

前端发送请求的路径,要改换成公网的ip,SSM连接数据库的配置文件,例如db.properties要下的jdbc.url还是localhost,不用换,这个看你是访问服务器上的数据库还是本地的数据库,如果远程访问,需要开放权限,以及这个可能涉及到跨域问题,前端发送的请求路径也不能够写成绝对路径了。

人工智能下象棋,走一步,能看几步|漫画

图文原创:谭婧

谭婧老师爱下象棋,就是谁也赢不了。

去公园下了一盘棋,第一步我就走了一个当头炮,剩下的都是大爷们帮我走的。

结果,我输了。

经过他们的总结研究,我第一步走错了。

2022年,象棋AI下棋机器人,问世了。我和它对弈了一盘,结果,我赢了。

很有自知之明的我,严重怀疑设计者增加了噪音,降低了棋力。让我赢得很舒服。

但我没有证据。

怎么说呢,我就喜欢高情商的AI象棋机器人。

低情商的机器人只会冷漠地碾压我:“下不过我,就别废话。”

仿佛不仅嫌弃我棋臭,还嫌弃我话多。

而高情商的AI象棋机器人,大为不同。

它伸出胳膊,温柔地摆出“请”的姿势,它居然有机械臂。

情商和机械臂都不是重点,聊聊它的智商从何而来。

AI象棋机器人是人工智能技术中深度学习与强化学习的成果,击杀四方。

任何人工智能都离不开数学基础原理,在此,首先得感谢尊敬的贝尔曼(Bellman)教授。

以他名字命名的贝尔曼方程,在绝大多数强化学习的成果中都会用到,比如象棋AI下棋机器人的远方表哥,自动驾驶。

它们是亲戚,“血缘关系”是“最优决策”。

强化学习是要在多种决策中评价,找出好的决策。

强化学习在象棋中,就是在多种走法中找到最好的走法。

围观数学公式的人少,围观下象棋的人多。

我们抛开公式,用决策树表示每一步的输赢,非常直观。

一盘三十步的象棋比赛,会是一颗很大的决策树,有很多枝叶。

计算机下象棋的棋力,早就超越了绝大多数的人。然而,至今没有任何一款计算机软件达到全知全能的“棋神”状态,连AI也不行。

那在下象棋这件事情上,AI这几年在忙活啥?

那要从几十年前讲起了。

1980到1990年代,深蓝计算机是大公司的,小霸王游戏机是大家的。

假如一个人类象棋高手下一步棋,能看未来八步棋。就好比一下能想到决策树上的第八层。

传统象棋软件说,这我也行。

话是没有吹牛,传统象棋软件确实可以做到。

可是,再往前多算几步,所耗时间和计算存储可能都要翻倍。或者说,情况急转直下。

在旧式象棋软件的时代,得想办法减少计算量。所以,有了阿法贝塔剪枝。

这虽然有“偷懒”的嫌疑,但我也没有证据。

阿法贝塔剪枝的方法,相当于提前知道哪些搜索是没有意义的,排除错误答案,用巧思“偷懒”,相当于省略做题过程。

旧思路在象棋上还能支撑,用在围棋上力有不逮。

(因为围棋是19×19的一个矩阵,每步可选择的走法要比象棋多一个数量级。)

从旧式象棋软件时代,人们就为棋力算分。这是一个起源很早的好办法。

那么得分是怎么来呢?

用一个数学函数把有利赢棋的因素都考虑进去。

以至于,中国象棋协会也有象棋大师用此来构思好棋。

有了分数,僵化的下象棋,就是“哪步得分高,就走哪步”。

然而,象棋是一个非常讲究全局观的游戏。

追求最终取胜,不追求每一步占尽优势。

比如,战术性丢车保帅。

深度学习模型在象棋面前暴露了“缺点”,它算出当下局面的胜率,但是,并不能估算出后续局面的胜率。

所以,需要一个重要的动作来加持:搜索。

从决策树上理解,就是考虑的越多越好。

如今,能搜索到决策树里非常深的层数,这就意味着,招数更多,棋路更多,对胜利的把握就越大。

谈到如何处理搜索量大,就谈到了蒙特卡洛树搜索是学霸特供技能,对大多数人来说,都很难。

甚至可以这样说,就是题目很困难,算不出来,只好求助于概率,求助于实验。

一顿猛如虎的严谨分析算不出来。来吧,学霸直接撸起袖子做实验。

蒙特卡洛方法的做法虽然看起来比较随意,但却有着坚实的理论基础:大数定律。

在计算机眼里,棋子挪动一步,都算一个新的棋局,所以棋局数量何其之多。

一个厮杀正酣的棋局,往后走,可能衍生出10000种棋局。

借助蒙特卡洛树搜索这一方法,看未来几步怎么走。或者说,当AI象棋机器人,有了强化学习,就有了“大局观”。

我们马上进入学霸区特供:《AI象棋机器人所用的蒙特卡洛树搜索》。

这就是深度强化学习,模型收敛的目标是,把胜率估计越准越好。经过多轮训练,胜率会越来越准。

胜率是AI象棋机器人的KPI,每下一步都估算胜率。每一步,尽量把胜率提高。

常识是,高手胜率高,低手胜率低。

问题来了,高到多少,低到多少。每一步的胜率很难准确估算,只能估大致范围。

而且,把胜率提高的前提是,得把胜率算准确。

在如此模糊的情况下,数据里会有误差。因为有误差,所以AI象棋机器人只能知道“棋神”的方向是什么,它想方设法逼近这个方向。

象棋AI机器人的棋力水平的训练方法是,AI,加上蒙特卡洛树搜索,然后再教导AI本身。

这个过程类似总结经验,这样使得它的棋力飙升。

可以说,AI象棋机器人强大之处得益于蒙特卡洛树搜索。

超越人类是很早以前的本事了,现在追求棋力丝滑上升,情商在线。

让棋力水平菜,还有棋瘾的人,也能玩得开心(请不要在我下象棋的时候安装监控)。

好了,这回就聊到这吧。

亲爱的数据

顺着数据写人工智能,

公众号

看在象棋AI下棋机器人输给我的份上,我不妨透露两个消息。

第一,有一版的AI象棋机器人初级棋力就打败了全公司的挑战者。

大胜之际,算法设计工程师们哀嚎遍野:“大事不妙”。

第二,我下赢AI象棋机器人那一局的时候,旁边有三个AI工程师帮忙出主意。

(哦,第二点是在凡尔赛科技新媒体的日常)

最后隆重介绍一下我们的全文审核专家:

更多阅读

1.我怀疑京东神秘部门Y,悟出智能供应链真相了

2.超级计算机与人工智能:大国超算,无人领航

3.隐私计算:消失的人工智能“法外之地”

4.售前,航空母舰,交付,皮划艇:银行的AI模型上线有多难?

5.两大榜单揭晓啦,2021年中国高性能计算机性能TOP100+国际人工智能性能排行榜AIPerf500

漫画系列

1.万字大稿深度解读硅谷风投A16Z“50强”数据公司榜单

2.AI算法是兄弟,AI运维不是兄弟吗?

3.大数据的社交牛逼症是怎么得的?

4.AIforScience这事,到底“科学不科学”?

5.想帮数学家,人工智能算老几?

6.给王心凌打Call的,原来是神奇的智能湖仓

7.原来,知识图谱是“找关系”的摇钱树?

8.为什么图计算能正面硬刚黑色产业薅羊毛?

9.AutoML:攒钱买个“调参侠机器人”划算吗?

10.你爱吃的火锅底料,是机器人自动进货丨漫画AutoML

AI框架系列:

1.搞深度学习框架的那帮人,不是疯子,就是骗子(一)2.搞AI框架那帮人丨燎原火,贾扬清(二)

DPU芯片系列:

1.造DPU芯片,如梦幻泡影?丨虚构短篇小说

2.永远不要投资DPU?

3.DPU加持下的阿里云如何做加密计算?

4.哎呦CPU,您可别累着,兄弟CIPU在云上帮把手

最后,再介绍一下主编自己吧,我是谭婧,科技和科普题材作者。为了在时代中发现故事,我围追科技大神,堵截科技公司。偶尔写小说,画漫画。生命短暂,不走捷径。个人微信:18611208992原创不易,多谢转发还想看我的文章,就关注“亲爱的数据”。

亲爱的数据

顺着数据写人工智能,顺着技术写产业落地。

公众号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇