谈谈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发文,从研究者的角度分享机器学习明年发 ...
随机推荐
- [Beta]the Agiles Scrum Meeting 6
会议时间:2020.5.20 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 帮助成员解决配置环境问题 tq 增加功能:添加多个评测机 评测部分增加更多评测指标 ...
- Nginx高效核心
Nginx高效核心 目录 Nginx高效核心 Introduction I/O特性 同步/异步 阻塞/非阻塞 常见的I/O模型 阻塞型 非阻塞型 多路复用模型(多路阻塞) 信号驱动模型 异步模型 Ng ...
- 搬运2:早期写的探究printf
目录: 1. 关于printf格式化输出 2. printf的一般形式 3. 转换说明 4. 格式化输出的意义 5. 转换说明修饰符 6. 修饰符中的标记 7. printf的返回值 ps:共3250 ...
- 实验6:开源控制器实践——RYU
实验目的 能够独立部署RYU控制器 能够理解RYU控制器实现软件定义的集线器原理 能够理解RYU控制器实现软件定义的交换机原理 二.实验环境 下载虚拟机软件Oracle VisualBox或VMwar ...
- 微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能
微软近日激怒了开源.NET社区,起因是它删除了开源.NET的一项旗舰功能,以提升Visual Studio 的吸引力,尤其是针对与Visual Studio颇有渊源的跨平台源代码编辑器Visual S ...
- 第01课 OpenGL窗口(2)
下一段包括了所有的绘图代码.任何您所想在屏幕上显示的东东都将在此段代码中出现.以后的每个教程中我都会在例程的此处增加新的代码.如果您对OpenGL已经有所了解的话,您可以在 glLoadIdentit ...
- 深入了解Mybatis架构设计
架构设计 我们可以把Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理. ...
- 批量免密ssh
参考连接:https://www.cnblogs.com/xiaoyuxixi/p/11413355.html 适用于所有密码都一样的情况下 应用场景: 在应用ansible的实际情况中,有一个很现实 ...
- nohup java -jar xx.jar & ,关闭窗口后退出进程
nohup java -jar dw-report..jar > dw-report.log & 自动退出命令在后台运行 xx.jar程序 明明已经加了"&" ...
- lua入门之环境搭建、第一个demo
前言 前段时间因为有些项目功能需要,自己研究了下lua,今天整理下,并以一个demo为示例演示 手机上的运行效果 分为几个步骤来逐步讲解. 1.lua介绍,为什么选择它? 2.环境安装 3.撸一个简单 ...