由AI大作业想到的

近几年《人工智能导论》的大作业是编写一个博弈程序,这类程序的典型框架就是α-β剪枝算法,像著名的打败了国际象棋大师卡斯帕罗的深蓝,就是这么干的,一些中国象棋程序也是这样的框架。大多数同学在完成大作业时,也基本选择的是这个框架,也刚好与上课内容一致。

然后这个在国际象棋、中国象棋上均显示了威力的框架,在面对围棋程序时却显得无能为力。很多人对此发表评论,什么围棋比象棋复杂啊,围棋状态更多啊等等,各种论点被抛出。复杂、状态多也许是事实,但我认为并不是问题的根本。

原因出在什么地方呢?由于时间和空间的限制,α-β剪枝算法不可能穷尽所有的走法,搜索范围只能限定在一定深度内。这样就要求对于出现的棋局进行打分,按照该打分选择最佳的走法。因此在α-β剪枝算法框架下写博弈程序时,如何程序实现α-β剪枝算法并不是难点,如何正确或者尽可能正确地对棋局进行打分成为了程序智能水平的最关键部分。

为什么国际象棋、中国象棋程序可以达到人类最高的水平?其原因也就在这里。当搜索达到一定深度后,无论是国际象棋还是中国象棋,可以通过人工的办法给出一些还算可靠的计分办法,比如双方棋子的数量,车、马、炮所在位置等,都是可以有效计分的依据,当然这需要对棋本身具有很深刻的了解才行。

而围棋,在这方面就困难的多,所以至今还没有找到相对可靠的计分办法,从而导致α-β剪枝算法框架的失败。

同学们在完成大作业时,尤其是前几年基本都是基于α-β剪枝算法的,根据与个别同学的交流,花费的主要精力也是在如何评估打分上,程序设计只占了很少的工作量。

所以,在这样一个框架下,实现一个高智能的计算机博弈程序,至少有一半的功劳是归功于人的智力总结的计分方法的,且这个计分方法非常依赖于具体的博弈游戏,不具有任何的推广价值

大约在06年,人们在研究围棋程序时提出了蒙特卡洛方法,并且在9*9棋盘上取得了很高的水平,虽然在正式棋盘上性能还不理想,但至少是在围棋程序方面向前迈了一大步。

蒙特卡洛法方法很简单,围棋不是难于对棋局打分吗?那么就想法避开这一步,不再对棋局进行静态的打分,而是根据随机模拟的方式,给出每个下棋点可能取胜的概率,用该概率值作为对棋局的评估。这样带来的最大好处是,不再需要程序设计者对具体的棋有多深的了解,只要掌握基本的下棋规则即可。

这样一来,就把程序的所有智能,全部给了机器,而不再依靠人的总结,而且是一个相对通用的,具有很好的推广性

从去年开始,一些同学也开始尝试应用蒙特卡洛方法完成大作业,并且取得了很好的结果,不再需要花费大力气去总结计分规则,而把主要精力放在写程序上。也有同学把α-β剪枝与蒙特卡洛方法结合起来,克服蒙特卡洛方法存在的一些不足。

这才是真的人工智能,或者说在向着真的人工智能前进

由此也想到,以往我们在做分类、聚类、识别等系统时,很大的功夫都花费在了具体的特征提取、选择上,很多人也说,关键在特征,特征如果提取的好,选用什么算法则关系不大。这样一来,实际上智能的实现依靠的不是机器,还是我们人自己。

最近几年,深度学习为什么受到很多人的重视?我想其自动提取特征可能是主要原因。虽然目前深度学习可能还有很多问题,也引起了一些争论,但无论如何,我觉得这种“全部交给机器去做”才是人工智能的真正方向。

转自:http://blog.sina.com.cn/s/blog_73040b820101bwrl.html

谈谈AI的更多相关文章

  1. 云计算和AI时代,运维应该如何做好转型?

    云计算和AI时代,运维应该如何做好转型? 今天我们来聊一聊,在云计算和AI时代,运维应该如何做好转型?今天的内容可以说是我们前面运维组织架构和协作模式转型的姊妹篇.针对运维转型这个话题,谈谈我的思考和 ...

  2. 谈谈Python、Java与AI

    Python好像天生是为AI而生的,随着AI的火热,特别是用Python写的TensorFlow越来越火,Python的热度越来越高,就像当年Java就是随着互联网火起来的感觉.在我的工作中,Pyth ...

  3. 对弈类游戏的人工智能(4)--游戏AI的落地

    前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 然而书上得来终觉浅, 绝知此事要躬行. 结合了自己的工程实践, 简单汇总整理下. 一方面是对当年的经典<<PC游戏编程(人机博弈 ...

  4. 随便谈谈alphago与人机大战

    3月16日历时8天的人机大战终于落下帷幕,alphago以4:1的比分击败了当年如日中天的李世石.这个结果让我这个围棋爱好者+计算机爱好者百感交集…… ——一个时代落幕了,一个新的时代开启了. 这次人 ...

  5. 普通程序员如何入门AI

    毫无疑问,人工智能是目前整个互联网领域最火的行业,随着AlphaGo战胜世界围棋冠军,以及各种无人驾驶.智能家居项目的布道,人们已经意识到了AI就是下一个风口.当然,程序员是我见过对于新技术最敏感的一 ...

  6. DataPipeline CTO陈肃:从ETL到ELT,AI时代数据集成的问题与解决方案

    引言:2018年7月25日,DataPipeline CTO陈肃在第一期公开课上作了题为<从ETL到ELT,AI时代数据集成的问题与解决方案>的分享,本文根据陈肃分享内容整理而成. 大家好 ...

  7. 炸金花游戏(4)--炸金花AI基准测试评估

    前言: 本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花 ...

  8. 【转载】 如何看待 2019 年 CS PhD 现扎堆申请且大部分为 AI 方向?未来几年 AI 泡沫会破裂吗?

    原贴地址: https://www.zhihu.com/question/316135639 作为一个 AI 方向的在读博士生,实在是过的蛮闹心,无意中逛知乎发现了这个帖子,发现很适合现在的自己,于是 ...

  9. 致研究者:2018 AI 研究趋势

    2017 年是机器学习领域最有成效.最具创意的一年.现在已经有很多博文以及官方报道总结了学界和业界的重大突破.本文略有不同,Alex Honchar在Medium发文,从研究者的角度分享机器学习明年发 ...

随机推荐

  1. 万能构造解决Rolle中值问题

    只要原函数是两个函数的乘积形式,皆可此构造.

  2. 你一定不知道的Unsafe用法

    Unsafe是什么 首先我们说Unsafe类位于rt.jar里面sun.misc包下面,Unsafe翻译过来是不安全的,这倒不是说这个类是不安全的,而是说开发人员使用Unsafe是不安全的,也就是不推 ...

  3. 阿里P7面试官:请你简单说一下类加载机制的实现原理?

    面试题:类加载机制的原理 面试官考察点 考察目标: 了解面试者对JVM的理解,属于面试八股文系列. 考察范围: 工作3年以上. 技术背景知识 在回答这个问题之前,我们需要先了解一下什么是类加载机制? ...

  4. OpenEuler树莓派基础实验

    OpenEuler树莓派基础实验 1.任务详情 1. 参考https://www.cnblogs.com/rocedu/p/14615565.html 完成OpenEuler的安装,提交过程博客和截图 ...

  5. sudo 命令详解

    在linux系统中,由于root的权限过大,一般情况都不使用它.只有在一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令. 一.su和sudo命令对比 ...

  6. 攻防世界 WEB 高手进阶区 NSCTF web2 Writeup

    攻防世界 WEB 高手进阶区 NSCTF web2 Writeup 题目介绍 题目考点 php基本函数语法 加密解密函数 base64_decode().str_rot13() 字符串反转函数 str ...

  7. JMeter学习笔记--函数学习(_csvRead 函数)

    JMeter函数可以很方便实现一些小功能,几乎可以用于测试计划中的任何元件.一个函数的调用如下:${_functionName(var1,var2,var3)},_functionName匹配函数名, ...

  8. k8s endpoints controller分析

    k8s endpoints controller分析 endpoints controller简介 endpoints controller是kube-controller-manager组件中众多控 ...

  9. Python知识整理(三)

    三.函数式编程与模块 1.函数式编程 1.高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式. 1.map/reduce map()函数接收两个参数,一个是函 ...

  10. 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑

    前言 现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发.测试.发布.管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴.而且现在很多项 ...