前言
机器学习简史
机器学习是人工智能(AI)的一个子领域。计算机通过对数据的学习,在无需进行显式编程的情况下提高在某些狭义任务中的性能。机器学习(machine learning)这个词早在1959 年就被Arthur Samuel ( 人工智能领域的传奇人物)提出,但是在二十一世纪机器学习几乎没有什么重大的商业成功。机器学习始终是大学和学术界的研究方向。
20 世纪60 年代,人工智能社区对其未来过于乐观。当时的研究人员,如Herbert Simon 和Marvin Minsky,声称人工智能将在几十年内达到与人类智力相当的水平:注1
机器是可以胜任的,在二十年内,将能够完成人所能做的任何工作。
——Herbert Simon,1965 年
在3~8 年内,我们将拥有一台与人类平均智力水平相当的机器。
——Marvin Minsky,1970 年
在盲目的乐观情绪引领下,研究人员投身于所谓的强人工智能或通用人工智能项目,试图建立起具备解决问题、表述知识、学习和计划、自然语言处理、感知和运动控制的人工智能代理。这个新兴领域的乐观情绪有助于从国防部等主要机构吸引大量资金,但这些研究人员过于雄心勃勃,最终注定要失败。人工智能的研究很少能够从学术界跃升到工业界,随之而来的是一系列所谓的人工智能冬季。在这些人工智能的冬天(类比冷战时期核冬天),人们对人工智能的兴趣和资金减少了。偶尔会周期性围绕人工智能进行炒作,但持续不了多久。到20 世纪90 年代初,对人工智能的兴趣和资助已经达到低谷。
人工智能(AI)回来了,但为什么是现在?
在过去的二十年里,人工智能以复仇的方式重新出现,首先是作为一个纯粹的学术领域,现在是在各个领域,AI 吸引着大学和企业中最聪明的人参与其中。这种复苏背后有三个关键的进展:机器学习算法的突破、大量数据的可用性和超高速计算机。
第一,研究人员不再关注过于雄心勃勃的通用人工智能项目,而是将注意力转向通用人工智能的狭义子问题[(也称为弱人工智能(Weak AI)或限制领域人工智能( narrow AI)]。这种专注于改进狭义任务解决方案的设想促进了算法上的突破,而算法的突破为成功的商业应用铺平了道路。许多最初在大学或私人研究实验室开发的算法都很快提供开源,而开源加快了行业对这些技术的应用。
第二,如何获取数据成为大多数组织关注的焦点,与此同时存储数据的成本因存储技术的进步而大幅下降。在互联网的助力之下,大量的数据变得越来越容易获取,其规模达到前所未有。
第三,云计算所提供计算机变得越来越强大并且可用性很高,这使得人工智能研究人员能够根据需要轻松、廉价地扩展其IT 基础设施,而无需在硬件方面进行巨额前期投资。
人工智能应用的出现
这三支力量将人工智能从学术界推向了工业界,业界对人工智能的兴趣越来越高并且提供的资金不断增加。人工智能不再只是一个理论领域,而是一个全面的应用领域。图P-1 Google Trends 生成的趋势图显示了过去五年对机器学习兴趣的增长。
人工智能现在被视为一种突破性技术,类似于计算机和智能手机的出现,在未来十年内对每个行业都将产生重大影响。注2
涉及机器学习的成功商业应用包括但不限于光学字符识别、垃圾邮件过滤、图像分类、计算机视觉、语音识别、机器翻译、分群和聚类、人工数据合成、异常检测、网络犯罪预防、信用卡欺诈检测、互联网欺诈检测、时间序列预测、自然语言处理、桌面游戏和视频游戏、文档分类、推荐系统、搜索、机器人、在线广告、情感分析、DNA 测序、金融市场分析、信息检索、问答和医疗建议。
过去20 年中人工智能应用的主要里程碑
这里提到的里程碑帮助人工智能从一个主要的学术话题发展到今天的主流技术。
?? 1997 年:IBM 公司深蓝(Deep Blue)——一款从20 世纪80 年代中期就开始开发的人工智能机器人,在一次广为人知的国际象棋比赛中击败了世界象棋大师Garry Kasparov。
?? 2004 年:美国国防高级研究计划局(DARPA)推出了DARPA 大挑战赛——在沙漠举办的年度自动驾驶挑战赛。2005 年,斯坦福大学获得最高奖。2007 年,卡内基梅隆大学在城市环境下完成了这一壮举。2009 年,Google 制造了一辆自动驾驶汽车。到2015 年,包括特斯拉(Tesla)、Alphabet(Google 的母公司)旗下的Waymo 和优步(Uber)在内的许多主要技术巨头已经启动了资金充足的项目,以构建主流自动驾驶技术。
?? 2006 年:多伦多大学的Geoffrey Hinton 推出了一种快速学习算法,用于训练多层神经网络,从而启动了深度学习革命。
?? 2006 年:Netflix 推出了总奖金100 万美元的Netflix 大奖赛,挑战团队需要使用机器学习提高推荐系统的准确性至少10%。2009 年,一个队伍获得了该奖。
?? 2007 年:阿尔伯塔大学的一个团队使人工智能在跳棋方面有了超人表现。
?? 2010 年:ImageNet 项目发起了年度竞赛—— ImageNet 大规模视觉识别挑战赛(ILSVRC),在该挑战赛中,团队使用机器学习算法来对这个超大规模数据集进行检测和分类。这个挑战赛引起了学术界和技术界的极大关注。分类错误率从2011 年的25% 下降到2015 年的几个百分点,这得益于深度卷积神经网络的进步。而卷积神经网络的进步导致了计算机视觉和对象识别的商业应用。
?? 2010 年:微软推出Xbox 360 版Kinect。由微软研究院的计算机视觉团队开发的Kinect 能够跟踪人体运动并将其转化为游戏。
?? 2010 年:Siri 是最早的主流数字语音助手之一,被苹果收购,并于2011年10 月作为iPhone4S 的一部分发布。最终,Siri 在苹果的所有产品中都得到了推广。在卷积神经网络和长时间短时记忆循环神经网络的支持下,Siri 可以同时执行语音识别和自然语言处理。最终,亚马逊、微软和Google 进入竞争,分别发布了Alexa(2014)、Cortana(2014)和Google Assistant(2016)。
?? 2011 年:IBM Watson,一个由David Ferrocci 所领导团队开发出来的回答问题人工智能代理击败了前Jeopardy 获奖者 Brad Rutter 和Ken Jennings,IBM Watson 现已在多个行业使用,包括医疗保健和零售业。
?? 2012:由Andrew Ng 和Jeff Dean 领导的Google 大脑团队训练了一个神经网络来自动观看YouTube 视频中提取出来的图片并识别出其中的猫。
?? 2013 年:Google 赢得了美国国防高级研究计划局(DARPA)的机器人挑战赛,其中包括半自主机器人在危险环境中执行复杂任务的试验,例如驾驶车辆、穿过碎石、清除堵塞入口的障碍物、打开车门和爬梯子。
?? 2014 年:Facebook 发布了在DeepFace 上的研究成果,DeepFace 是一个基于神经网络的系统,能够以97% 的准确率识别人脸。这接近人的水平,比以前的系统提高了27% 以上。
?? 2015 年:人工智能成为主流,在世界各地的媒体机构中普遍使用。
?? 2015 年:Google DeepMind 的AlphaGo 在围棋游戏中击败了世界级的专业选手范辉。2016 年,AlphaGo 打败了李世石,2017 年,AlphaGo 击败了何洁。2017 年,一个称为AlphaGo Zero 的新版本击败先前的AlphaGo版本100 比零。AlphaGo Zero 融合了无监督的学习技巧,大师们只需自己演奏。
?? 2016:Google 对其语言翻译进行了重大改造,将其现有的基于短语的翻译系统替换为基于深度学习的神经机器翻译系统,将翻译错误减少了87%,接近人类的准确度。
?? 2017 年:由卡内基·梅隆开发的Libratus 赢得了“一对一无限注德州扑克”。
?? 2017 年:在Dota 2 锦标赛上,OpenAI 训练的机器人击败了专业玩家。
限制领域人工智能(Narrow AI) 到通用人工智能(AGI )
当然,这些将人工智能应用于狭义问题的成功只是一个起点。人工智能界越来越相信,通过多个弱人工智能系统的结合可以发展出功能强大的人工智能系统。这种强大的人工智能或人工智能代理将能够在许多广泛定义的任务中实现人类水平的性能。
一些研究人员预测,在人工智能达到人类水平后不久,这种强人工智能将超越人类智能,达到所谓的“超级智能”。据估计,人工智能从现在开始的15年后到100 年内可以达到这种程度,大多数研究人员相信人工智能将在几代人的时间内取得足够的进步。这又是一次夸大的炒作(就像我们在之前的人工智能周期中看到的那样)还是这次不同?
只有时间才能证明。
目的和方法
迄今为止,在计算机视觉、语音识别、机器翻译和自然语言处理等领域的大多数成功的商业应用都涉及利用带标签数据集的监督学习。然而,世界上的大多数数据都是没有标签的。
在本书中,我们将介绍无监督学习领域(这是机器学习的一个分支,用于查找隐藏模式),并学习没有标签的数据中的底层结构。根据许多行业专家,如Facebook 人工智能研究主管、纽约大学教授Yann LeCun 所说,无监督学习是人工智能的下一个前沿领域,可能是人工智能的关键所在。基于这一点和许多其他原因,无监督学习是当今人工智能最流行的话题之一。
这本书的目标是介绍概念和工具,这些概念和工具是无监督学习技术应用到日常开发过程中所必需的。换句话说,这是一本实用的书,可以让你建立真实的系统。我们还将探讨如何有效地标记没有标签的数据集,以将无监督的学习问题转化为半监督的学习问题。
这本书将采用实际操作的方法,介绍一些理论,但主要集中在应用无监督学习技术来解决现实世界中的问题。数据集和代码可以在GitHub 以Jupyter Notebook 的形式获取到。
通过本书的学习可以加深你对概念的理解并获得实践的经验,从而能够将无监督学习应用于大型、未标记的数据集,以发现隐藏的模式、获得更深入的业务洞察力、检测异常、基于相似性的聚类、执行自动特征工程和选择、生成语法、Hetic 数据集等。
预备知识
本书假设你有一些Python 编程经验,包括熟悉NumPy 和Pandas。
有关Python 的更多信息,请访问 Python 官方网站。有关Jupyter Notebook的更多信息,请访问 Jupyter 官方网站。为了复习大学水平的微积分、线性代数、概率论和统计学,请阅读Ian Goodfellow 和Yoshua Bengio) 的《Deep Learning》(《深度学习》)教科书的第一部分。关于机器学习的复习,请阅读《The Elements of Statistical Learning》(《统计学习要素》) 。
路线图
本书分为四个部分,涵盖以下主题:
第一部分 无监督学习基础介绍监督和无监督学习的区别,当下流行的监督和无监督学习算法及概述,以及完整的机器学习项目。
第二部分 使用SciKit-Learn 进行无监督学习降维、异常检测、聚类和分组分割。
第三部分 使用TensorFlow 和Keras 无监督学习自动编码器、自动编码器实践和半监督学习。
第四部分 使用TensorFlow 和Keras 进行深度无监督学习受限玻尔兹曼机器、深度信念网络和生成对抗网络。
排版约定
本书使用以下排版约定:
斜体字(Italic)
指示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序列表,以及在段落中引用程序元素。例如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
等宽粗体(Constant width bold)
显示用户应按字面顺序键入的命令或其他文本。
等宽斜体(Constant width italic)
显示应替换为用户提供的值或由上下文确定的值的文本。
使用代码示例
补充资料(代码示例等)可在GitHub 上下载。
这本书的目的是帮助你更好地完成工作。通常情况下,如果本书提供了示例代码,你可以在程序和文档中使用它。你不需要联系我们获得许可,除非你正在复制代码的重要部分。例如,编写一个使用本书中的几个代码块的程序不需要许可。销售或发行O’Reilly 图书中的示例光盘需要许可。通过引用本书和引用示例代码来回答问题不需要许可。将本书中的大量示例代码合并到产品文档中需要许可。
我们感谢,但不要求在你的文档中标明涉及本书的引用出处。引用出处通常包括标题、作者、出版商和ISBN。例如:“Ankur A.Patel(O’Reilly)使用Python 进行无监督学习。版权所有2019 Ankur A.Patel,978-1-492-03564-0”。
如果你觉得你对代码示例的使用超出了上述的合理使用或许可范围,请随时与我们联系。电子邮件地址为:
[email protected]。
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly 的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly 和200 多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们为这本书提供了网页,其中列出了勘误表、示例和任何其他附加信息。
你可以在http://bit.ly/unsupervised-learning 访问此页面。若要对本书发表评论或提出技术问题,请发送电子邮件至:
[email protected]。
有关我们的书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
在Facebook 上找到我们:http://facebook.com/oreilly。
在Twitter 上关注我们:http://twitter.com/oreillymedia。
在YouTube 上观看我们:http://www.youtube.com/oreillymedia。