人工智能认知计算入门指南

2017-08-09

  几千年来,人们就已经有了思考如何构建智能机器的想法。从那时开始,人工智能 (AI) 经历了起起落落,这证明了它的成功以及还未实现的潜能。如今,随时都能听到应用机器学习算法来解决新问题的新闻。从癌症检测和预测到图像理解和总结以及自然语言处理,AI 正在增强人们的能力和改变我们的世界。

  现代 AI 的历史包含一部伟大的戏剧应具有的所有要素。上世纪 50 年代,随着对思维机器及阿兰·图灵和约翰·冯·诺依曼等著名人物的关注,AI 开始崭露头角。尽管随后经历了数十年的繁荣与萧条,并被寄予了难以实现的厚望,但 AI 和它的先驱们仍然一直在努力前行。如今,AI 展现出了它的真正潜力,专注于应用并提供深度学习和认知计算等技术。本文将探索 AI 的一些重要方面和它的子领域。我们首先会分析 AI 的时间线,然后深入介绍每种要素。


  现代 AI 的时间线

    从上世纪 50 年代开始,现代 AI 开始专注于所谓的强 AI,强 AI 指的是能普遍执行人类所能执行的任何智能任务的 AI。强 AI 的进展乏力,最终导致了所谓的弱 AI,或者将 AI 技术应用于更小范围的问题。直到上世纪 80 年代,AI 研究被拆分为这两种范式。但在 1980 年左右,机器学习成为了一个突出的研究领域,它的目标是让计算机学习并构建模型,以便能够执行一些活动,比如特定领域中的预测。

                    图 1. 现代人工智能的时间线

1.jpg

  点击查看大图深度学习于 2000 年左右出现,建立在 AI 和机器学习的研究成果之上。计算机科学家通过新的拓扑结构和学习方法,在许多层中使用神经网络。神经网络的这次演变成功解决了各种不同领域的复杂问题。在过去 10 年中,认知计算兴起,它的目标是构建能学习并自然地与人交流的系统。IBM Watson 通过在 Jeopardy 比赛上成功击败世界级对手,证明了认知计算的能力。在本教程中,我将探索每个领域,解释一些促使认知计算取得成功的重要算法。


  基础 AI

    1950 年前的研究中提出了大脑由电脉冲网络组成的理念,这些脉冲触发并以某种方式精心组织形成思想和意识。阿兰·图灵表明任何计算都能以数字方式实现,那时,距离实现构建一台能模仿人脑的机器的想法也就不远了。许多早期研究都重点关注过这个强 AI 方面,但这一时期也引入了一些基础概念,如今的所有机器学习和深度学习都是在这些概念基础上建立起来的。

                    图 2. 1980 年前的人工智能方法的时间线

2.jpg

  AI 中的许多问题都可以通过暴力搜索(比如深度或广度优先搜索)来解决。但是,考虑到普通问题的搜索空间,基本搜索很快就会招架不住。AI 即搜索的最早示例之一是一个下棋程序的开发。Arthur Samuel 在 IBM 701 Electronic Data Processing Machine 上构建了第一个这样的程序,对搜索树执行一种名为 α-β 剪枝技术(alpha-beta pruning)的优化。他的程序还会记录特定某步棋的回报,允许应用程序学习每一场比赛(使它成为了第一个自主学习的程序)。为了提高程序的学习速度,Samuel 将它设计为能够自己跟自己下棋,提高了它的下棋和学习能力。


  尽管可以成功地应用对许多简单问题的搜索,但随着选择数量的增加,该方法很快就会行不通。以简单的井字棋游戏为例。在游戏开始时,有 9 种可能的棋着。每步棋着会导致 8 种可能的对抗棋着,以此类推。井字棋完整的棋着树(未进行旋转优化来删除重复棋着)有 362,880 个节点。如果您将同样的思维试验推广到象棋或围棋,很快就会看到搜索的缺点。


  感知器

  感知器是一种用于单层神经网络的早期的监督式学习算法。给定一个输入特征矢量,感知器算法就能学习将输入划分到特定类别。通过使用训练集,可以更新线性分类的网络的权值和阀值。感知器最初是针对 IBM 704 实现的,随后被用在定制硬件上,用于图像识别。

                    图 3. 感知器和线性分类

3.jpg

  作为线性分类器,感知器能线性地分离问题。感知器的局限性的重要示例是,它无法学习一个异或 (XOR) 函数。多层感知器解决了这一问题,为更复杂的算法、网络拓扑结构和深度学习铺平了道路。


  集群算法

  对于感知器,学习方法是监督式的。用户提供数据来训练网络,然后针对新数据来测试网络。集群算法采用了一种不同的学习方法,叫做无监督学习。在此模型中,算法基于数据的一个或多个属性,将一组特征矢量组织到集群中。

                    图 4. 二维特征空间中的集群

4.jpg

  可通过少量代码实现的最简单的算法之一称为 k 均值。在此算法中,k 表示您可向其中分配样本的集群数量。您可以使用一个随机特征矢量初始化一个集群,然后将其他所有样本添加到离它们最近的集群(前提是每个样本表示一个特征矢量,而且使用了一种欧几里德距离来标识 “距离”)。随着您将样本添加到集群中,它的质心 — 即集群的中心 — 会被重新计算。然后该算法会再次检查样本,确保它们存在于最近的集群中,并在没有样本改变集群成员关系时停止运行。

  尽管 k 均值的效率相对较高,但您必须提前指定 k。根据所用的数据,其他方法可能更高效,比如分层或基于分布的集群方法 。


  决策树

  与集群紧密相关的是决策树。决策树是一种预测模型,对可得出某个结论的观察值进行预测。树上的树叶代表结论,而节点是观察值分叉时所在的决策点。决策树是利用决策树学习算法来构建的,它们根据属性值测试将数据集拆分为子集(通过一个称为递归分区的流程)。


  考虑下图中的示例。在这个数据集中,我可以根据 3 个因素来观察某个人何时的生产力较高。使用决策树学习算法时,我可以使用一个指标来识别属性(比如信息增益)。在这个示例中,情绪是生产力的主要因素,所以我依据 “good mood” 是 Yes 还是 No 来拆分数据集。No 分支很简单:它始终导致生产力低下。但是,Yes 分支需要根据其他两个属性来再次拆分数据集。我给数据集涂上颜色,以演示何处的观察值通向我的叶节点。

                    图 5. 一个简单的数据集和得到的决策树

5.jpg

  点击查看大图决策树的一个有用方面是它们的内在组织,您能轻松且图形化地解释您是如何分类一个数据项的。流行的决策树学习算法包括 C4.5 和分类回归树。


  基于规则的系统

  第一个根据规则和推断来构建的系统称为 Dendral,是 1965 年开发出来的,但直到上世纪 70 年代,这些所谓的 “专家系统” 才得到大力发展。基于规则的系统可以存储知识和规则,并使用一个推理系统来得出结论。


  基于规则的系统通常包含一个规则集、一个知识库、一个推理引擎(使用前向或后向规则链),以及一个用户界面。在下图中,我使用一段信息(“苏格拉底是一个凡人”)、一条规则(“凡人终有一死”)和一次关于谁会死的交互。

                    图 6. 一个基于规则的系统

6.jpg

  基于规则的系统已应用于语音识别,规划和控制,以及疾病识别。上世纪 90 年代开发的一个监视和诊断坝体稳定性的系统 Kaleidos 至今仍在运营。


上一篇:3招补救职场耽搁症:你耽搁起来,像个孤胆好汉

下一篇:分享史上Java最牛逼,最简短的代码