谈谈AI
由AI大作业想到的
近几年《人工智能导论》的大作业是编写一个博弈程序,这类程序的典型框架就是α-β剪枝算法,像著名的打败了国际象棋大师卡斯帕罗的深蓝,就是这么干的,一些中国象棋程序也是这样的框架。大多数同学在完成大作业时,也基本选择的是这个框架,也刚好与上课内容一致。
然后这个在国际象棋、中国象棋上均显示了威力的框架,在面对围棋程序时却显得无能为力。很多人对此发表评论,什么围棋比象棋复杂啊,围棋状态更多啊等等,各种论点被抛出。复杂、状态多也许是事实,但我认为并不是问题的根本。
原因出在什么地方呢?由于时间和空间的限制,α-β剪枝算法不可能穷尽所有的走法,搜索范围只能限定在一定深度内。这样就要求对于出现的棋局进行打分,按照该打分选择最佳的走法。因此在α-β剪枝算法框架下写博弈程序时,如何程序实现α-β剪枝算法并不是难点,如何正确或者尽可能正确地对棋局进行打分成为了程序智能水平的最关键部分。
为什么国际象棋、中国象棋程序可以达到人类最高的水平?其原因也就在这里。当搜索达到一定深度后,无论是国际象棋还是中国象棋,可以通过人工的办法给出一些还算可靠的计分办法,比如双方棋子的数量,车、马、炮所在位置等,都是可以有效计分的依据,当然这需要对棋本身具有很深刻的了解才行。
而围棋,在这方面就困难的多,所以至今还没有找到相对可靠的计分办法,从而导致α-β剪枝算法框架的失败。
同学们在完成大作业时,尤其是前几年基本都是基于α-β剪枝算法的,根据与个别同学的交流,花费的主要精力也是在如何评估打分上,程序设计只占了很少的工作量。
所以,在这样一个框架下,实现一个高智能的计算机博弈程序,至少有一半的功劳是归功于人的智力总结的计分方法的,且这个计分方法非常依赖于具体的博弈游戏,不具有任何的推广价值。
大约在06年,人们在研究围棋程序时提出了蒙特卡洛方法,并且在9*9棋盘上取得了很高的水平,虽然在正式棋盘上性能还不理想,但至少是在围棋程序方面向前迈了一大步。
蒙特卡洛法方法很简单,围棋不是难于对棋局打分吗?那么就想法避开这一步,不再对棋局进行静态的打分,而是根据随机模拟的方式,给出每个下棋点可能取胜的概率,用该概率值作为对棋局的评估。这样带来的最大好处是,不再需要程序设计者对具体的棋有多深的了解,只要掌握基本的下棋规则即可。
这样一来,就把程序的所有智能,全部给了机器,而不再依靠人的总结,而且是一个相对通用的,具有很好的推广性。
从去年开始,一些同学也开始尝试应用蒙特卡洛方法完成大作业,并且取得了很好的结果,不再需要花费大力气去总结计分规则,而把主要精力放在写程序上。也有同学把α-β剪枝与蒙特卡洛方法结合起来,克服蒙特卡洛方法存在的一些不足。
这才是真的人工智能,或者说在向着真的人工智能前进。
由此也想到,以往我们在做分类、聚类、识别等系统时,很大的功夫都花费在了具体的特征提取、选择上,很多人也说,关键在特征,特征如果提取的好,选用什么算法则关系不大。这样一来,实际上智能的实现依靠的不是机器,还是我们人自己。
最近几年,深度学习为什么受到很多人的重视?我想其自动提取特征可能是主要原因。虽然目前深度学习可能还有很多问题,也引起了一些争论,但无论如何,我觉得这种“全部交给机器去做”才是人工智能的真正方向。
谈谈AI的更多相关文章
- 云计算和AI时代,运维应该如何做好转型?
云计算和AI时代,运维应该如何做好转型? 今天我们来聊一聊,在云计算和AI时代,运维应该如何做好转型?今天的内容可以说是我们前面运维组织架构和协作模式转型的姊妹篇.针对运维转型这个话题,谈谈我的思考和 ...
- 谈谈Python、Java与AI
Python好像天生是为AI而生的,随着AI的火热,特别是用Python写的TensorFlow越来越火,Python的热度越来越高,就像当年Java就是随着互联网火起来的感觉.在我的工作中,Pyth ...
- 对弈类游戏的人工智能(4)--游戏AI的落地
前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 然而书上得来终觉浅, 绝知此事要躬行. 结合了自己的工程实践, 简单汇总整理下. 一方面是对当年的经典<<PC游戏编程(人机博弈 ...
- 随便谈谈alphago与人机大战
3月16日历时8天的人机大战终于落下帷幕,alphago以4:1的比分击败了当年如日中天的李世石.这个结果让我这个围棋爱好者+计算机爱好者百感交集…… ——一个时代落幕了,一个新的时代开启了. 这次人 ...
- 普通程序员如何入门AI
毫无疑问,人工智能是目前整个互联网领域最火的行业,随着AlphaGo战胜世界围棋冠军,以及各种无人驾驶.智能家居项目的布道,人们已经意识到了AI就是下一个风口.当然,程序员是我见过对于新技术最敏感的一 ...
- DataPipeline CTO陈肃:从ETL到ELT,AI时代数据集成的问题与解决方案
引言:2018年7月25日,DataPipeline CTO陈肃在第一期公开课上作了题为<从ETL到ELT,AI时代数据集成的问题与解决方案>的分享,本文根据陈肃分享内容整理而成. 大家好 ...
- 炸金花游戏(4)--炸金花AI基准测试评估
前言: 本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花 ...
- 【转载】 如何看待 2019 年 CS PhD 现扎堆申请且大部分为 AI 方向?未来几年 AI 泡沫会破裂吗?
原贴地址: https://www.zhihu.com/question/316135639 作为一个 AI 方向的在读博士生,实在是过的蛮闹心,无意中逛知乎发现了这个帖子,发现很适合现在的自己,于是 ...
- 致研究者:2018 AI 研究趋势
2017 年是机器学习领域最有成效.最具创意的一年.现在已经有很多博文以及官方报道总结了学界和业界的重大突破.本文略有不同,Alex Honchar在Medium发文,从研究者的角度分享机器学习明年发 ...
随机推荐
- OO第四单元UML作业总结暨OO课程总结
目录 目录一.第四单元UML两次作业架构设计第一次作业第二次作业二.架构设计总结与OO方法理解演进三.测试理解与实践演进四.课程收获总结五.课程改进建议六.尾声 一.第四单元UML两次作业架构设计 第 ...
- linux centos7 修改默认网卡命名规则为eth0脚本
CentOS6之前基于传统的命名方式如:eth1,eth0.... Centos7提供了不同的命名规则,默认是基于固件.拓扑.位置信息来分配.这样做的优点是命名是全自动的.可预知的,缺点是比eth0. ...
- 零基础入门stm32基本定时器详解
一.基本定时器介绍 在STM32中,基本定时器有TIM6.TIM7等.基本定时器主要包含时基单元,提供16位的计数,能计数0~65535.基本定时器除了计数功能以外,还能输出给DAC模块一个TRGO信 ...
- 转:SYNOPSYS VCS Makefile文件编写与研究
SYNOPSYS VCS Makefile文件编写与研究 这个Makefile是synopsys提供的模板,看上去非常好用,你只要按部就班提供实际项目的参数就可以了.我们来看这个文件的头部说明:mak ...
- CDP客户数据管理平台体系化搭建
一.Cdp系统简介 1.基本概念 客户数据平台(Customer-Data-Platform),简称CDP:通过采集多方客户数据(主体与线索)等,从而进行精准的客户分析和人群细分,进而实现高效的客户维 ...
- 『学了就忘』Linux基础 — 17、远程服务器关机及重启时的注意事项
目录 1.为什么远程服务器不能关机 2.远程服务器重启时需要注意两点 3.不要在服务器访问高峰运行高负载命令 4.远程配置防火墙时不要把自己踢出服务器 5.指定合理的密码规范并定期更新 6.合理分配权 ...
- Redis安装、配置和卸载
1.安装 mkdir /usr/local/redis 添加目录 wget [http://download.redis.io/releases/redis-4.0.1](http://downloa ...
- javac 不是内部或外部命令 和 错误 找不到或无法加载主类 的解决方法
使用package语句与import语句. 实验要求:按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类.掌握一些重要的操作步骤. 代码: 模板1: ...
- SpringBoot配置文件自动映射到属性和实体类(8)
一.配置文件加载 1.Controller中配置并指向文件 @Controller @PropertySource(value = { "application.properties&quo ...
- Git - git push origin master 报错的解决方法
亲测实用,转载保存,原文地址:https://blog.csdn.net/kangvcar/article/details/72773904 错误提示如下: [root@linux1 php]# gi ...