说起人工智能,我们的脑海中会浮现出如《钢铁侠》、《变形金刚》等影片中震撼的科技和宏大的战斗场景。曾几何时我们也希望自己的语音助手能像“贾维斯”一样料理生活起居,甚至帮助主人完成各项高难度工作。如今,这一切似乎都变得触手可及,人工智能的浪潮已经掀起,但是每每谈及这个话题之时,我们只是着眼于科技表面的绚丽多彩,而忽视了其深层的理论原理,譬如人尽皆知的“AlphaGo”,请问它到底是怎么实现的呢?进一步说:人工智能是如何实现的呢?

这便是我写下这篇文章的原因所在,知其然更要知其所以然,当生活越来越离不开人工智能之时,我们就更要刨根问底,聊一聊人工智能到底是个什么东西?

一、图灵测试

什么样的计算机具有“智能”呢?计算机科学的祖师爷图灵认为:将计算机与人类分别放在两个房间中(彼此看不到),然后向他们提问,通过他们的回答来判断哪个是计算机,哪个是人类?

对于一些“正常”的问题,我们显然无法区分谁是计算机谁是人类,譬如提问:今天天气如何?他们都会说出具体的天气状况然后给出一些穿衣建议。但如果你问:今天的天气适合躺在云朵上睡觉吗?于人类而言这荒谬至极,于计算机而言它也许还是会认真的回答问题甚至给出睡眠的建议。此时我们便很容易地区分开了计算机和人类。

可以制造出能通过图灵测试的计算机吗?图灵认为这很困难,他预言50年后,当计算机的存储容量达到10的9次方的水平时,提问者可能在连续交谈约5分钟后以不超过70%的几率作出正确的判断。现在看来,他的预言并没有完全实现,现在的计算机智能程度还很低。

现在我们已经知道了如何评价计算机的智能程度,下一个问题是:如何让计算机像人一样思考以及做出决策?

二、启发式搜索

人的思维过程其实是搜索的过程,当你在考场奋笔疾书时,你正在不断地搜索已经存储在大脑中的知识点,这与传统的机器搜索方法有什么区别呢?譬如说经典的“遍历式搜索”,正是利用了机器处理速度快的特点,但人类大脑的搜索并非这样,你并不会遍历自己一生所学才得出结果,多数的情况是:你会根据一些搜索目标的信息去进行搜索,而这些信息我们称之为“启发信息”,顾名思义:能够启发你找到答案的信息。

有了启发信息,我们就可以让计算机像人脑一样搜索答案。

由此,我们定义了一个评价函数:

这就是著名的“启发式搜索算法A”,n是被评价的结点,g(n)表示搜索路径的耗散值,h(n)是启发函数。

以八数码问题(Eight-Puzzle)为例,问如何移动数字可以使(a)状态转变为(b)状态?

搜索路径的耗散值我们就用结点深度来表示,那么启发函数如何设置?答案并不唯一,这里给出一种方法:以“不在位”的数字个数作为启发函数的度量,譬如(a)状态中“1”、“2”、“6”、“8”四个数字不在目标状态的位置上,那么初始状态的h值就等于4。g(n)和h(n)确定后,我们就可以用f(n)来估计通向目标结点的希望程度,f值越大,表示越有希望通向目标状态,所以我们会优先扩展搜索树中f值较大的结点,这样就会以最小的耗散值找到通往目标状态的路径。下面给出搜索树:

大写字母A、B、C...M标记了每一个扩展的结点,括号内的数字即是该结点的f值,不难得出走步序列是是B、E、I、K、L。

这便是利用启发信息进行搜索的过程,在这个过程中,计算机的搜索方式与人脑的思考方式才真正达到了一致,而科学研究的焦点是:如何使计算机在面对任意问题时都能找到合适的启发函数?这个问题留待思考。

现在我们已经可以让计算机像人一样思考了,那么“AlphaGo”是如何实现的呢?

三、博弈树与AlphaGo

上文提到的“八数码”问题只是一个单人游戏,而生活中更常见的是譬如象棋、围棋一类的双人游戏,对垒双方轮流走步,对垒的结果是一方胜而另一方败,或者是打成平手。类似这样的零和博弈可以用博弈树来描述,当一方走步完成后,计算机对所有可走步进行计算,选择对己方优势最大的结点进行扩展,并在接下来的路经上继续选取对己方优势最大的结点,如此反复将会使节点扩展方向指向胜利。

以圈叉游戏为例,我们设定程序方MAX的棋子用“×”表示,对手MIN的棋子用“⚪”表示,设置一个静态估计函数:f(p)=(所有空格放上MAX的棋子后MAX的三子成线总数)-(所有空格放上MIN的棋子后MIN的三子成线总数),若p是MAX胜,则f(p)=∞;若p是MIN胜,则f(p)=-∞。下面给出第一阶段搜索树:

在MAX走第一步之前,首先要计算己方所有的走步MIN方会如何应对,因为MIN方会在所有的可能走步中选择f值最小的一步,这样MIN才离胜利条件“f(p)=-∞”更近;同理,MAX方会在所有的可能走步中选择f值最大的一步,这样MAX才离胜利条件“f(p)=∞”更近。所以MAX方在三种开局方式中选择了倒推值最大的“1”作为第一步,紧接着MIN方会以相同的方式进行计算从而决定该把棋子下在哪里...

不难得出:圈叉游戏先手的最佳走步是将棋子放在中央位置。

如果将同样的思路用在围棋上,加之以计算机高速的计算,战胜人类世界冠军棋手也就不足为奇了。

然而在实际应用中还会对搜索方式进行优化以加快计算机的决策速度,即:α-β剪支。

该方法的思路大致为:MAX方走步时选择的是其扩展结点倒推值的最大值,那么当得到第一个倒推值时,可将其记为α,以后的倒推值如若比α小,则不必对子节点继续扩展,可直接将该分支剪掉;MIN方走步时选择的是其扩展结点倒推值的最小值,那么当得到第一个倒推值时,可将其记为β,以后的倒推值如若比β大,则不必对子节点继续扩展,可直接将该分支剪掉。

用一句话概括:α是MAX的下界;β是MIN的上界。

α-β剪支大大提高了搜索效率,减少了扩展结点的数量,做完这步优化后,AlphaGo诞生了。

四、新的发展方向

2021中关村论坛研讨了人工智能新的发展方向:从“大炼模型”向“炼大模型”转变。AlphaGo是一座里程碑,但似乎也成为了人工智能发展的瓶颈,我们狂喜于各类模型的训练,可截至目前仍然没有实现真正的人工智能。现如今人工智能的架构基本是:像人一样思考(搜索算法+谓词逻辑与归结原理)、像人一样学习(知识表示与机器学习)、像人一样感觉(神经网络),而“大模型”意味着更加广泛的应用场景,这就要求着更多数据、更多资源和更大算力。

这一发展方向让我们离真正的人工智能又近了一步。

但是...

人工智能的未来在哪里?

AI人工智能入门(浅析AlphaGo的实现)相关推荐

  1. AI人工智能入门-概念介绍和学习路线

    人工智能知识专题 :机器学习.深度学习.NLP 等:easyAI总结的关于概念和基础知识非常全面,刚入门的人可以系统而全面的看看. ⼈⼯智能(AI)本质上是⼀种⼯具 开⻔⻅⼭的给出⼈⼈都能听懂的解释: ...

  2. AI人工智能入门—知识地图

    AI知识地图:AI100问 人工智能.机器学习.NLP.深度学习和神经网络之间的区别 人工智能:建立能智能化处理事物的系统. 自然语言处理:建立能够理解语言的系统,人工智能的一个分支. 机器学习:建立 ...

  3. (不定期更新)《人工智能AI资讯》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+人工智能+AlphaGo+神经网络+深度学习+机器学习+自动驾驶+图像识别+立钻哥哥+==)

    <人工智能AI资讯> 人工智能(Artificial Intelligence) 人工智能简称AI,是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. ...

  4. 吴恩达AI FOR Everyone|人工智能入门笔记|

    文章目录 AI What is AI? Machine Learning Supervised Learning Data Acquiring data Use and misuse of data ...

  5. 人工智能入门需要学习哪些课程?AI基础知识

    要入门人工智能,需要掌握一些基础知识和技能.以下是一些入门人工智能需要学习的课程和基础知识: 人工智能入门需要学习哪些课程?AI基础知识 数学基础:人工智能需要用到许多数学知识,包括线性代数.微积分. ...

  6. 《人工智能-处女篇(AI2026)》(Unity+SteamVR+5G+AI+VR云游戏+AlphaGo+神经网络+深度学习+机器学习+图像识别+CNN+自动驾驶+智能机器人+立钻哥哥+==)

    <人工智能-处女篇(AI2026)> <人工智能-处女篇(AI2026)> 版本 作者 参与者 完成日期 备注 YanlzAI_VIP_V01_1.0 严立钻 2019.08. ...

  7. ai人工智能将替代人类_AI再次击败人类

    ai人工智能将替代人类 内容丰富 (Informative) Let's take a stroll down memory lane and take a look at the times whe ...

  8. 游戏ai人工智能_为什么游戏AI无法帮助AI在现实世界中发挥作用,但可以

    游戏ai人工智能 多人游戏被视为一个硕果累累的竞技场,在其中可以模拟许多现实世界中的AI应用程序场景(例如自动驾驶汽车,无人驾驶无人机和协作商务),这些场景可能过于昂贵,投机性或冒险性,无法在现实世界 ...

  9. 神码ai人工智能写作机器人_人工智能和机器学习的最佳资源

    神码ai人工智能写作机器人 机器学习指南 (MACHINE LEARNING GUIDE) Half of this crazy year is behind us and summer is her ...

最新文章

  1. 【Java系列】从JVM角度解析Java核心类String的不可变特性
  2. qt 中转化图片格式与大小的方法
  3. 预告 | AIS (ACL, IJCAI, SIGIR) 2019 论文报告会日程安排
  4. java-多线程知识
  5. 检索召回 技术综述!
  6. VRRP协议与keepalived原理及功能实例演示
  7. 【Spring第九篇】AOP
  8. R语言——R和RStudio软件下载及安装
  9. python3 歌词文件krc转lrc
  10. windows 10下解压.gz后缀文件
  11. 输入表重建工具ImportREC
  12. 软件名称后缀含义?(如RC、RTL)
  13. 师从施一公,4年8篇CNS,作为西湖大学博士后,她又以一作发了Science
  14. 【全套完结】电磁场与电磁波实验-----全套Matlab仿真实验
  15. 如何解决ping不通问题
  16. c语言fgetc函数作用,C语言fputc()和fgetc()函数
  17. Ubuntu 卸载程序
  18. 华为操作系统 28 年史
  19. VB编程:DoWhile...Loop当循环计算0~100累加和-15_彭世瑜_新浪博客
  20. .NET开源工作流RoadFlow-表单设计-隐藏域

热门文章

  1. Android手机在Windows下一键截屏
  2. mysql 处理emij表情_判断是否emij表情
  3. 计算机应用说课稿,中职计算机说课稿
  4. LNB电源市场现状及未来发展趋势分析
  5. Windows 11 企业版,安装或执行程序时有时会报错:文件系统错误(-1073740771)
  6. 中金人工智能报告:AI时代,10 年之后我们还能干什么?|71页完整报告
  7. 06蚂蚁-高性能Nginx服务器——1.反向代理
  8. 2021-5月13日-今日收获
  9. cadence 通孔焊盘_Allegro 16.6创建通孔类焊盘步骤
  10. Offline RL Summary