谈谈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发文,从研究者的角度分享机器学习明年发 ...
随机推荐
- Prometheus基于Eureka的服务发现
Prometheus基于Eureka的服务发现 一.背景 二.实现步骤 1.eureka 客户端注册到prometheus中 2.prometheus中的写法 3.实现效果 三.完整代码 四.参考链接 ...
- Noip模拟40 2021.8.15
T1 送花 按照题解意思说是扫描线题,但我觉得像一个线段树优化$dp$ 主要思想一样,就是暴力枚举右端点,同时维护左端点的最值, 考虑两种情况, 如果左端点在$r$扫到的数$i$上一次出现的位置之前, ...
- 2021.9.13考试总结[NOIP模拟52]
T1 路径 考虑每一位的贡献,第$i$位每$2^i$个数会变一次,那么答案为$\sum_{i=1}^{log_2n} \frac{n}{2^i}$. $code:$ 1 #include<bit ...
- JAVA笔记2__类/封闭性/构造方法/方法的重载/匿名对象
public class Main { public static void main(String[] args) { Chicken c1 = new Chicken(); Chicken c2 ...
- PWN环境搭建
目录 PWN环境搭建 需要的工具或系统 安装PWN工具 pwntools (CTF库.漏洞利用库) pwngdb(GDB插件) checksec(查保护) ROPGadget(二进制文件查找工具) o ...
- Docker安装配置Tomcat
1.使用docker pull tomcat下载镜像(不加tag则是下载最新版本) 2.运行容器(-d 后台运行:-p 指定端口映射),接的是镜像ID 3.进入容器执行命令,接的是容器ID 4.宿主机 ...
- Ambari 2.4 在 CentOS 7.4 因 TLS_1.2 协商内部错误导致注册失败
问题背景 业务准备在天翼云上搭建一套线上环境,VM 操作系统版本为 CentOS Linux release 7.4.1708,但是在 ambari Web 管理页面上部署hadoop节点主机的时候, ...
- 基于 OSPF 路由的邻居邻接关系发现实践
1.实验目的 理解 OSPF 邻居关系和 OSPF 邻接关系的含义及差别 观察 OSPF 邻居邻接关系的建立过程 观察 OSPF 链路状态数据库的同步过程 2.实验原理 OSPF 网络中,路由器在发送 ...
- Canvas 放烟花合集 -- 用粉丝头像做成烟花绽放🧨
"我对着烟花许愿,希望你永远在我身边" "凑不够满天星辰那就去看看烟花吧,人间烟火气,最抚凡人心" 小tips:喜欢的可以关注博主私信代码噢~ 也可以看看前面两 ...
- Linux基础一:基础命令
Linux是什么,是干什么用的? 1.Linux是一个操作系统,电脑=软件+硬件,而操作系统就是特殊的软件 2.Linux系统内一切皆文件 3.bash shell 是红帽默认的shell(shell ...