首页>参考读物>计算机科学与技术>人工智能

机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)
作者 : [法] 奥雷利安·杰龙(Aurélien Géron)著
译者 : 宋能辉 李娴 译
出版日期 : 2020-09-23
ISBN : 978-7-111-66597-7
定价 : 149.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 691
开本 : 16
原书名 : Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems,Second Edition
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书分为两部分。第一部分,机器学习基础,涵盖以下主题:什么是机器学习,它试图解决什么问题,以及系统的主要类别和基本概念;第二部分,神经网络和深度学习,涵盖以下主题:什么是神经网络以及它们有什么用,使用TensorFlow和Keras构建和训练神经网络的技术,以及如何使用强化学习构建可以通过反复试错,学习好的策略的代理程序。第一部分主要基于Scikit-Learn,而第二部分则使用TensorFlow和Keras。

图书特色

图书前言

机器学习海啸
2006年,Geoffrey Hinton等人发表了一篇论文注,展示了如何训练能够以最先进的精度
(> 98%)识别手写数字的深度神经网络。他们将这种技术称为“深度学习”。深度神经网络是(非常)简化的大脑皮层的模型,由一堆人工神经元层组成。当时人们普遍认为,训练深度神经网络是不可能的注,并且大多数研究人员在20世纪90年代后期就放弃了这一想法。该论文重新激发了科学界的兴趣,不久之后,许多新论文证明了(在强大的计算能力和大量数据的帮助下)深度学习不仅是可能的,而且还具有令人难以置信的成就,这是其他机器学习(ML)技术无法企及的。这种热情很快扩展到了机器学习的许多其他领域。
大约十年后,机器学习征服了整个工业界:它是当今高科技产品诸多魔力的核心,可以为你的网络搜索结果排名,为智能手机的语音识别提供支持,可以推荐视频,并在围棋比赛中击败世界冠军。在不知不觉中,它将驾驶你的汽车。
你的项目中的机器学习
因此,你自然会对机器学习感到兴奋,并很乐意加入这场盛宴!
也许你想让你的自制机器人拥有自己的大脑,使它能够识别人脸,或者学会走路。
也许你的公司拥有大量数据(用户日志、财务数据、生产数据、机器传感器数据、热线统计信息、人力资源报告等),如果你知道在哪里看,很有可能会发现一些隐藏的宝石。借助机器学习,你可以完成以下和更多任务:
细分客户并为每个群体找到最佳的营销策略。
根据类似客户的购买记录,为每个客户推荐产品。
检测哪些交易可能是欺诈性的。
预测明年的收入。
无论出于何种原因,你都决定学习机器学习并将其实现在你的项目中。好主意!
目标与方法
本书假设你对机器学习一无所知,其目标是为你提供实现能够从数据中学习的程序所需的概念、工具和直觉。
我们将介绍大量技术,从最简单和最常用的技术(例如线性回归)到一些经常赢得比赛的深度学习技术。
本书不是实现每种算法的玩具版本,而是使用可用于生产环境的Python框架:
Scikit-Learn非常易于使用,它有效地实现了许多机器学习算法,因此成为学习机器学习的重要切入点。Scikit-Learn由David Cournapeau于2007年创建,现在由法国计算机科学和自动化研究所的一个研究小组领导。
TensorFlow是用于分布式数值计算的更复杂的库。通过将计算分布在数百个GPU(图形处理单元)服务器上,它可以有效地训练和运行大型神经网络。TensorFlow(TF)是由Google创建的,并支持许多大型机器学习应用程序。它于2015年11月开源,2.0版本于2019年11月发布。
Keras是高层深度学习API,使训练和运行神经网络变得非常简单。它可以在
TensorFlow、Theano或微软Cognitive Toolkit(以前称为CNTK)之上运行。Tensor-Flow附带了该API自己的实现,称为tf.keras,支持某些高级TensorFlow功能(例如有效加载数据的能力)。
本书主张动手实践,通过具体的示例和一点点理论就可以对机器学习有一个直观的了解。虽然你无须拿起笔记本电脑就可以阅读本书,但我强烈建议你尝试用Jupyter notebook试验在https://github.com/ageron/handson-ml2上在线获得的代码示例。
先决条件
本书假定你具有一些Python编程经验,并且熟悉Python的主要科学库,尤其是NumPy、pandas和Matplotlib。
另外,如果你关心一些比较深入的内容,那么你应该对大学水平的数学知识(如微积分、线性代数、概率和统计)有一定的了解。
如果你还不了解Python,那么http://learnpython.org/是一个不错的起点。Python.org上的官方教程也相当不错。
如果你从未使用过Jupyter,则第2章将指导你完成安装并学习基础知识。它是工具箱中的一个强大工具。
如果你不熟悉Python的科学库,Jupyter notebook里面有一些教程。还有一个关于线性代数的快速数学教程。
路线图
本书分为两部分。第一部分涵盖以下主题:
什么是机器学习,它试图解决什么问题,以及其系统的主要类别和基本概念
典型机器学习项目中的步骤
通过将数据与模型进行拟合来学习
优化成本函数
处理、清洁和准备数据
选择和工程化特征
选择模型并使用交叉验证调整超参数
机器学习的挑战,特别是欠拟合和过拟合(偏差/方差的权衡)
最常见的学习算法:线性和多项式回归、逻辑回归、k-近邻算法、支持向量机、决策树、随机森林和集成方法
降低训练数据的维度以应对“维度的诅咒”
其他无监督学习技术,包括聚类、密度估计和异常检测
第二部分涵盖以下主题:
什么是神经网络以及它们的作用
使用TensorFlow和Keras构建和训练神经网络
最重要的神经网络架构,包括用于表格数据的前馈神经网络、用于计算机视觉的卷积网络、用于序列处理的递归网络和长短期记忆(LSTM)网络、用于自然语言处理的编码器/解码器和Transformer、自动编码器和用于生成学习的生成式对抗网络(GAN)
训练深度神经网络的技术
如何使用强化学习构建可以通过反复试错学习好的策略的代理程序(例如游戏中的机器人)
有效地加载和预处理大量数据
大规模训练和部署TensorFlow模型
第一部分主要基于Scikit-Learn,而第二部分则使用TensorFlow和Keras。
不要草率地跳入深水:尽管深度学习无疑是机器学习中最令人兴奋的领域之一,但你应该首先掌握基础知识。而且,大多数问题可以使用更简单的技术(如第一部分中讨论的随机森林和集成学习方法)来很好地解决。如果你有足够的数据、计算能力和耐心,则深度学习最适合诸如图像识别、语音识别或自然语言处理之类的复杂问题。
第2版的变化
第2版有6个主要变化:
1. 涵盖其他ML主题:更多的无监督学习技术(包括聚类、异常检测、密度估计和混合模型);训练深度网络(包括自归一化网络)的更多技术;其他计算机视觉技术(包括Xception、SENet、使用YOLO进行物体检测,以及使用R-CNN进行语义分割);使用卷积神经网络(CNN,包括WaveNet)处理序列;使用递归神经网络(RNN)、CNN和Transformer进行自然语言处理;GAN。
2. 涵盖其他库和API(Keras、Data API、用于强化学习的TF-Agents),以及使用分布式策略API、TF-Serving和Google Cloud AI Platform大规模训练和部署TF模型;还简要介绍TF Transform、TFLite、TF Addons/Seq2Seq和TensorFlow.js。
3. 讨论深度学习研究的一些最新重要成果。
4. 将所有TensorFlow章节迁移到TensorFlow 2,并尽可能使用TensorFlow的Keras API(tf.keras)实现。
5. 更新代码示例,使用最新版本的Scikit-Learn、NumPy、pandas、Matplotlib和其他库。
6. 得益于读者的大量反馈,一些章节更加明晰,并修正了一些错误。
添加了一些章节,有些章节被重写,有些则被重新排序。有关第2版更新的更多详细信息请参见https://homl.info/changes2。
其他资源
许多优秀的资源可用于学习机器学习。例如,吴恩达(Andrew Ng)在Coursera上的机器学习课程虽然很好,但它需要投入大量的时间(数月)。
还有许多有趣的关于机器学习的网站,当然包括Scikit-Learn出色的用户指南。你可能还喜欢Dataquest(它提供了非常不错的交互式教程),以及机器学习博客(例如Quora上列出的那些博客)。最后,深度学习网站上有不错的资源清单,可供你了解更多信息。
关于机器学习,还有许多其他入门书籍。特别是:
Joel Grus的Data Science from Scratch(O’Reilly)介绍了机器学习的基础知识,并在纯Python中实现了一些主要算法(顾名思义,从头开始)。
Stephen Marsland的Machine Learning: An Algorithmic Perspective(Chapman&Hall)是对机器学习的出色介绍,它使用Python代码示例(也从零开始,但使用NumPy),涵盖广泛的主题。
Sebastian Raschka的Python Machine Learning(Packt Publishing)也对机器学习进行了很好的介绍,并利用了Python开源库(Pylearn 2和Theano)。
Fran?ois Chollet的Deep Learning with Python(Manning)是一本非常实用的书,以清晰、简洁的方式涵盖了广泛的主题,书中涉及Keras库的很多内容。它偏爱代码示例甚于数学理论。
Andriy Burkov的The Hundred-Page Machine Learning Book非常简短,涵盖了一系列令人印象深刻的主题,不仅以平易近人的方式介绍这些主题,同时也没有回避数学方程式。
Yaser S. Abu-Mostafa、Malik Magdon-Ismail和Hsuan-Tien Lin的Learning from Data
(AMLBook)介绍颇为理论化的机器学习方法,它提供了深刻的见解,尤其是在偏差/方差权衡方面(见第4章)。
Stuart Russell和Peter Norvig的Artificial Intelligence: A Modern Approach, 3rd Edition(Pearson)是一本非常出色的书,涵盖了机器学习等众多主题。它有助于正确理解机器学习。
最后,加入像Kaggle.com这样的机器学习竞赛网站,将使你在一些实际的问题上获得实践技能,并获得一些顶尖机器学习专业人员的帮助和见解。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
代码示例
一系列Jupyter notebook里面有很多补充材料,例如代码示例和练习,可从https://github.com/ageron/handson-ml2下载。
本书中的某些代码示例省略了与机器学习无关的重复部分或细节,这样可以把重点放在代码的重要部分上,节省空间以便覆盖更多的主题。如果需要完整的代码示例,可以在Jupyter notebook中找到它们。
请注意,当代码示例显示某些输出时,这些代码示例将在Python提示符(>>>和...)下显示,就像在Python shell中一样,可以清楚地区分代码与输出。例如,如下代码定义square()函数,然后计算并显示3的平方:
>>> def square(x):
... return x ** 2
...
>>> result = square(3)
>>> result
9
当代码不显示任何输出内容时,不使用提示符。但是有时结果可能会显示为注释,如下所示:
def square(x):
return x ** 2

result = square(3) # result is 9
示例代码
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O’Reilly的配套CD-ROM则需要O’Reilly出版社的许可。引用本书的示例代码来回答问题也不需要许可,将本书中的示例代码的很大一部分放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处的形式包含书名、作者、出版社和ISBN,例如:
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition,作者Aurélien Géron,由O’Reilly出版,书号978-1-492-03264-9。
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permission@oreilly.com联系我们。
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)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站https://homl.info/oreilly2上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
我从未想象过我的第一本书会吸引如此众多的读者。我收到了读者的大量反馈,很多人提出了许多问题,有些人指出了书中的差错,大多数人给了我鼓励。我对所有读者的大力支持表示感谢。非常感谢大家!如果你在代码示例中发现错误(或只是提出问题),请毫不犹豫地在GitHub上提交问题。如果在文本中发现错误,请提交勘误。一些读者还分享了本书如何帮助他们获得了第一份工作,或者它如何帮助他们解决了正在处理的具体问题。这种反馈极大地激励了我。如果你认为本书对你有所帮助,可以与我分享你的故事,无论是私下(例如,通过LinkedIn)还是公开地(例如,通过推文或通过亚马逊评论)与我分享。
我也非常感谢那些百忙之中抽出时间审阅本书的专家。特别要感谢Fran?ois Chollet审阅了所有基于Keras和TensorFlow的章节,并给了我一些深入的反馈。由于Keras是第2版的主要新增内容之一,因此请Keras的作者审阅本书是非常值得的。我强烈推荐Fran?ois的书Deep Learning with Python(Manning),它具有Keras库本身的简洁性、清晰度和深度。还要特别感谢Ankur Patel,他审阅了第2版的每一章,并给了我很好的反馈,特别是第9章(涵盖了无监督学习技术)。关于该主题,他可以写一本书,请查看Hands-On UnsupervisedLearning Using Python: How to Build Applied Machine Learning Solutions from Unlabeled Data(O’Reilly)。还要感谢Olzhas Akpambetov,他审阅了本书第二部分的所有章节,测试了许多代码,并提出了许多很好的建议。我非常感谢Mark Daoust、Jon Krohn、Dominic Monn和Josh Patterson如此全面地审阅了本书的第二部分,并用他们的专业知识提供了非常有用的反馈。
在撰写本书时,我很幸运地从TensorFlow团队成员那里得到了很多帮助,尤其是Martin Wicke,他不懈地回答了我的许多问题,并将其余的问题分发给了合适的人,包括Karmel Allison、Paige Bailey、Eugene Brevdo、William Chargin、Daniel “Wolff” Dobson、Nick Felt、Bruce Fontaine、Goldie Gadde、Sandeep Gupta、Priya Gupta、Kevin Haas、Konstantinos Katsiapis、Viacheslav Kovalevskyi、Allen Lavoie、Clemens Mewald、Dan Moldovan、Sean Morgan、Tom O’Malley、Alexandre Passos、André Susano Pinto、Anthony Platanios、Oscar Ramirez、Anna Revinskaya、Saurabh Saxena、Ryan Sepassi、Jiri Simsa、Xiaodan Song、Christina Sorokin、Dustin Tran、Todd Wang、Pete Warden(他审阅了第1版)、Edd Wilder-James和Yuefeng Zhou,他们都为我提供了帮助。非常感谢大家以及TensorFlow团队的所有其他成员,不仅是你们的帮助,而且也感谢你们做出如此出色的库!特别感谢TFX小组的Irene Giannoumis和Robert Crowe对第13章和第19章进行的深入审阅。
也要感谢O’Reilly出色的工作人员,尤其是Nicole Taché,他给了我颇有见地的反馈,并且总是开朗、鼓舞人心和乐于助人—我无法想象能有比他更好的编辑了。还要感谢在第2版开始时提供帮助(和耐心)的Michele Cronin,以及第2版的制作编辑Kristen Brown,她见证了本书的诞生(她还协调了第1版每次重印时的修订和更新工作)。还要感谢Rachel Monaghan和Amanda Kersey分别对第1版和第2版进行了详细编辑,也要感谢Johnny O’Toole,他管理与亚马逊的公共关系并回答了我的许多问题。感谢Marie Beaugureau、Ben Lorica、Mike Loukides和Laurel Ruma信任这个项目并帮助我确定了本书的范围。感谢Matt Hacker和所有Atlas团队回答了我有关格式、AsciiDoc和LaTeX的所有技术问题,并感谢Nick Adams、Rebecca Demarest、Rachel Head、Judith McConville、Helen Monroe、Karen Montgomery、Rachel Roumeliotis和O’Reilly所有其他为本书做出贡献的人。
我还要感谢我以前的Google同事,特别是YouTube视频分类团队,他们教会了我很多关于机器学习的知识。没有他们,我永远不可能开始第1版。特别感谢我个人的ML专家Clément Courbet、Julien Dubois、Mathias Kende、Daniel Kitachewsky、James Pack、Alexander Pak、Anosh Raj、Vitor Sessak、Wiktor Tomczak、Ingrid von Glehn和Rich Washington。感谢在的YouTube和令人惊叹的Google山景城研究团队中与我合作的所有人。也非常感谢Martin Andrews、Sam Witteveen和Jason Zaman在Soonson Kwon的大力支持下,欢迎我加入新加坡的Google Developer Experts小组,我们就深度学习和TensorFlow进行的所有精彩讨论使我深受启发。任何对深度学习感兴趣的人都应该加入他们的新加坡深度学习聚会。特别感谢Jason,他在第19章分享了他的TFLite专业知识!
我永远不会忘记审阅本书第1版的好心人,包括David Andrzejewski、Lukas Biewald、Justin Francis、Vincent Guilbeau、Eddy Hung、Karim Matrah、Grégoire Mesnil、Salim Sémaoune、Iain Smears、Michel Tessier、Ingrid von Glehn、Pete Warden,当然还有我亲爱的兄弟Sylvain。特别感谢Haesun Park,他在把本书第1版翻译成韩语时给了我很多出色的反馈,并发现了一些错误。他还把Jupyter notebook翻译成韩文,更不用说TensorFlow的文档了。我不会说韩语,但是从他的反馈意见的质量来看,他的所有翻译都很出色!Haesun还为第2版的练习题提供了一些答案。
最后,我无限感激我心爱的妻子Emmanuelle和我们三个漂亮的孩子(Alexandre、Rémi和Gabrielle),他们鼓励我努力写本书。我也感谢他们的无限好奇心:向我的妻子和孩子们解释本书中一些最困难的概念,这有助于我阐明自己的想法,并直接改善了其中的许多内容。他们无限量地给我提供饼干和咖啡!人生如此,夫复何求?

上架指导

计算机\人工智能

封底文字

随着一系列的技术突破,深度学习推动了整个机器学习领域的发展。现在,即使是对这项技术几乎一无所知的程序员也可以使用简单有效的工具来实现“可以自动从数据中学习”的程序。这本畅销书的更新版通过具体的示例、非常少的理论和可用于生产环境的Python框架来帮助你直观地理解并掌握构建智能系统所需要的概念和工具。
你会学到一系列可以快速使用的技术。每章的练习可以帮助你应用所学的知识,你只需要有一些编程经验。所有代码都可以在GitHub上获得。它已更新为TensorFlow 2和Scikit-Learn的新版本。
? 使用Scikit-Learn和pandas通过端到端项目来学习机器学习基础。
? 使用TensorFlow 2构建和训练多个神经网络架构来进行分类和回归。
? 覆盖对象检测、语义分割、注意力机制、语言模型、GAN等。
? 探索Keras API与TensorFlow 2的官方高级API。
? 使用TensorFlow的数据API、分布策略API、TF Transform和TF-
Serving来部署TensorFlow模型。
? 在Google Cloud AI Platform或移动设备上部署。
? 开发无监督学习技术,例如降维、聚类和异常检测。
? 通过强化学习(包括使用TF-Agents库)创建自主学习智能体。
“ 学习机器学习的绝佳资源。你会找到清晰的思路、直观的解释以及大量的实用技巧。”
——Fran?ois Chollet
Keras的发明者
Deep Learning with Python的作者
“ 本书很好地介绍使用神经网络解决问题的相关理论和实践,我向任何有兴趣应用机器学习来解决实际问题的人强烈推荐本书。”
——Pete Warden
TensorFlow移动端负责人
Aurélien Géron是机器学习方面的顾问。他曾就职于Google,在2013年到2016年领导过YouTube视频分类团队。他是Wifirst公司的创始人并于2002年至2012年担任该公司的首席技术官。2001年,他创办Ployconseil公司并任首席技术官。

作者简介

[法] 奥雷利安·杰龙(Aurélien Géron)著:随着一系列的突破,深度学习点燃了整个机器学习领域。 现在,即使是对这项技术毫无基础的程序员,也可以使用简单高效的工具来实现“可以自动从数据中学习”的程序。本书将展示如何做到这一点。

通过具体的例子、非常少的理论和两个产品级的Python框架——Scikit-learn 和 TensorFlow 。作者帮助你很直观地理解并掌握构建智能系统的概念和工具。你将学习一系列技术,从简单的线性回归开始到深度神经网络等。每章都有习题来帮助你应用学到的知识,你所需要的只是一点编程经验,仅此而已。

- 探索机器学习的全景图,特别是神经网络。
- 使用Scikit-Learn来端到端地建立一个机器学习项目的示例。
- 探索多种训练模型,包括支持向量机、决策树、随机森林和集成方法。
- 使用TensorFlow库建立和训练神经网络。
- 深入神经网络架构,包括卷积网络、递归网络和深度强化学习。
- 学习训练和伸缩深度神经网络的技巧。
- 应用可以工作的代码示例,而无须过多的机器学习理论或算法细节。

本书是关于使用神经网络来解决问题的理论和实践的一本优秀导论。它涵盖了你建立高效应用的关键点,以及足够的背景知识以应对新研究的出现。 我推荐这本书给有兴趣学习用机器学习来解决实际问题的人。

- Pete Warden
- TensorFlow移动端负责人


Aurelien Geron是机器学习方面的顾问。他是Google的前员工,在2013年到2016年领导过YouTube视频分类团队。2002年至2012年,他还是Wifirst公司的创始人和首席技术官,在2001年,他是Ployconseil公司的创始人和首席技术官。

译者序

随着AlphaGo在人机大战中一举成名,关于人工智能的研究开始广受关注,人工智能科学家也一跃成为“21世纪热门的人才”。人工智能,特别是机器学习和深度神经网络的广泛应用虽然兴起不久,但是对这两个密切关联的领域的研究其实已经持续了好几十年,早已形成了系统化的知识体系。对于想要踏入机器学习和深度学习领域的初学者和工程师而言,一本理论和实践相结合的书籍是必不可少的,本书就是这样一本书。
本书分为两部分:第一部分介绍机器学习的基础知识;第二部分介绍神经网络与深度学习。附录部分的内容也非常丰富。本书兼顾理论与实战,既适合在校学生,又适合有经验的工程师。
从理论上讲,本书最大的特色就是有深度,覆盖面广,但是书中并没有太多复杂的数学公式推导,很容易看懂。这在现在很多机器学习书籍中是不多见的。
从实战来说,本书使用了当前热门的机器学习框架Scikit-Learn及深度学习框架TensorFlow和Keras,每一章都配备相应的项目示例,代码的实操性和可读性非常好。本书也是为有经验的工程师而写的,是一本实用指南。特别是附录B给出的机器学习项目清单,如果工业界想做一套机器学习的解决方案,完全可以按照这个清单去做。
读者朋友可能非常关心第2版相比第1版有何区别,作者在第2版中不仅重写了大部分章节,还增加了很多机器学习的前沿知识,代码示例采用了Keras深度学习框架。
作者将本书所有章节的详细代码都发布在GitHub上。项目地址为:https://github.com/ageron/handson-ml2。
译者现在在比利时某科研机构从事深度学习处理器、嵌入式实时人工智能、计算机视觉和深度学习异构平台上的编程框架等研究工作,虽有多年的机器学习和计算机视觉研究和开发经验,但本书中所涉及的专业术语与概念较多,部分概念及术语尚无公认的中文译法,因此我们参考了一些网络上和研究论文中常用的译法。在翻译过程中虽然力求准确地反映原著内容,但由于译者水平有限,可能有错误或者遗漏之处,恳请读者批评指正。读者可以通过电子邮件songnh@outlook.com和译者取得联系。
感谢机械工业出版社华章分社的编辑们,特别是刘锋编辑,他们为保证本书的质量做了大量的编辑和审校工作,在此深表谢意。
还要感谢Ivannie,她在我翻译本书的过程中,给了我最大的快乐。

宋能辉

推荐序

最近几年人工智能技术的突破性进展,比如AlphaGo战胜围棋世界冠军柯洁,Waymo开始部署自动驾驶出租车,都表明深度学习极大地推动了整个机器学习的发展。现在,即使对深度学习技术几乎一无所知的工程师和程序员,也可以使用简单而有效的工具来实现从数据中学习的复杂应用程序。本书就向你展示了具体应该如何来实现各种人工智能的应用,如计算机视觉、自然语言处理等。
本书作者是一位出色的机器学习顾问和培训师,前Google资深工程师,从2013年至2016年领导YouTube的视频分类团队,不仅具有深厚的理论功底,还有最前沿的工业界实战操作经验。作者通过使用简洁的理论和细致具体的示例,运用两个Python框架(Scikit-Learn和TensorFlow/Keras),帮助你直观地了解构建智能系统的相关概念和工具。你将从本书中学到各种机器学习技术(从简单的线性回归到各种神经网络结构)。每章都附有练习题,可以帮助你应用所学的知识,你所需要的只是编程练习。
本书内容广博,覆盖了机器学习的各个领域,不仅介绍了传统的机器学习模型,包括支持向量机、决策树、随机森林和集成方法,还提供了使用Scikit-Learn进行机器学习的端到端训练示例。作者尤其对深度神经网络进行了深入的探讨,包括各种神经网络架构(如卷积神经网络、递归神经网络等)、强化学习,以及如何使用TensorFlow/Keras库来构建和训练神经网络。
本书英文版在Amazon上的评分是4.7分(满分5分),近90%的读者给予了5星好评,在国内豆瓣读书上也得到91.5%的读者的5星好评,国内外同时有这么高的好评率,足以证明本书的价值及其良好可读性。
如果你正打算学习机器学习和深度学习,正在寻求一个切入点,那么我强烈建议你把本书当作入门教材。需要使用机器学习或者深度学习算法解决实际问题的工程师可将本书当作实战手册,它可以让你了解很多深度学习的最新研究成果和实用技巧。

张明清
布朗大学计算机系博士,
纽约州立大学阿尔巴尼分校计算机科学系副教授,
计算机视觉和机器学习实验室(CVML Lab)主任,
前通用电气公司全球研发中心计算机视觉实验室首席计算机科学家

图书目录

前言1
第一部分 机器学习的基础知识11
第1章 机器学习概览13
1.1 什么是机器学习14
1.2 为什么使用机器学习14
1.3 机器学习的应用示例16
1.4 机器学习系统的类型18
1.5 机器学习的主要挑战32
1.6 测试与验证38
1.7 练习题40
第2章 端到端的机器学习项目42
2.1 使用真实数据42
2.2 观察大局44
2.3 获取数据48
2.4 从数据探索和可视化中获得洞见60
2.5 机器学习算法的数据准备66
2.6 选择和训练模型74
2.7 微调模型77
2.8 启动、监控和维护你的系统82
2.9 试试看84
2.10 练习题84
第3章 分类86
3.1 MNIST86
3.2 训练二元分类器88
3.3 性能测量89
3.4 多类分类器99
3.5 误差分析101
3.6 多标签分类104
3.7 多输出分类105
3.8 练习题107
第4章 训练模型108
4.1 线性回归109
4.2 梯度下降113
4.3 多项式回归122
4.4 学习曲线124
4.5 正则化线性模型127
4.6 逻辑回归134
4.7 练习题141
第5章 支持向量机143
5.1 线性SVM分类143
5.2 非线性SVM分类146
5.3 SVM回归151
5.4 工作原理152
5.5 练习题160
第6章 决策树162
6.1 训练和可视化决策树162
6.2 做出预测163
6.3 估计类概率165
6.4 CART训练算法166
6.5 计算复杂度166
6.6 基尼不纯度或熵167
6.7 正则化超参数167
6.8 回归168
6.9 不稳定性170
6.10 练习题172
第7章 集成学习和随机森林173
7.1 投票分类器173
7.2 bagging和pasting176
7.3 随机补丁和随机子空间179
7.4 随机森林180
7.5 提升法182
7.6 堆叠法190
7.7 练习题192
第8章 降维193
8.1 维度的诅咒194
8.2 降维的主要方法195
8.3 PCA198
8.4 内核PCA204
8.5 LLE206
8.6 其他降维技术208
8.7 练习题209
第9章 无监督学习技术211
9.1 聚类212
9.2 高斯混合模型232
9.3 练习题245
第二部分 神经网络与深度学习247
第10章 Keras人工神经网络简介249
10.1 从生物神经元到人工神经元250
10.2 使用Keras实现MLP262
10.3 微调神经网络超参数284
10.4 练习题290
第11章 训练深度神经网络293
11.1 梯度消失与梯度爆炸问题293
11.2 重用预训练层305
11.3 更快的优化器310
11.4 通过正则化避免过拟合321
11.5 总结和实用指南327
11.6 练习题329
第12章 使用TensorFlow自定义模型和训练330
12.1 TensorFlow快速浏览330
12.2 像NumPy一样使用TensorFlow333
12.3 定制模型和训练算法338
12.4 TensorFlow函数和图356
12.5 练习题360
第13章 使用TensorFlow加载和预处理数据362
13.1 数据API363
13.2 TFRecord格式372
13.3 预处理输入特征377
13.4 TF Transform385
13.5 TensorFlow数据集项目386
13.6 练习题388
第14章 使用卷积神经网络的深度计算机视觉390
14.1 视觉皮层的架构390
14.2 卷积层392
14.3 池化层399
14.4 CNN架构402
14.5 使用Keras实现ResNet-34 CNN416
14.6 使用Keras的预训练模型417
14.7 迁移学习的预训练模型418
14.8 分类和定位421
14.9 物体检测422
14.10 语义分割428
14.11 练习题431
第15章 使用RNN和CNN处理序列432
15.1 循环神经元和层432
15.2 训练RNN436
15.3 预测时间序列437
15.4 处理长序列444
15.5 练习题453
第16章 使用RNN和注意力机制进行自然语言处理455
16.1 使用字符RNN生成莎士比亚文本456
16.2 情感分析464
16.3 神经机器翻译的编码器-解码器网络470
16.4 注意力机制476
16.5 最近语言模型的创新486
16.6 练习题488
第17章 使用自动编码器和GAN的表征学习和生成学习489
17.1 有效的数据表征490
17.2 使用不完整的线性自动编码器执行PCA491
17.3 堆叠式自动编码器493
17.4 卷积自动编码器499
17.5 循环自动编码器500
17.6 去噪自动编码器501
17.7 稀疏自动编码器502
17.8变分自动编码器505
17.9 生成式对抗网络510
17.10 练习题522
第18章 强化学习523
18.1 学习优化奖励524
18.2 策略搜索525
18.3 OpenAI Gym介绍526
18.4 神经网络策略529
18.5 评估动作:信用分配问题531
18.6 策略梯度532
18.7 马尔可夫决策过程536
18.8 时序差分学习540
18.9 Q学习540
18.10 实现深度Q学习544
18.11 深度Q学习的变体547
18.12 TF-Agents库550
18.13 一些流行的RL算法概述568
18.14 练习题569
第19章 大规模训练和部署TensorFlow模型571
19.1 为TensorFlow模型提供服务572
19.2 将模型部署到移动端或嵌入式设备586
19.3 使用GPU加速计算589
19.4 跨多个设备的训练模型600
19.5 练习题613
19.6 致谢613
附录A 课后练习题解答614
附录B 机器学习项目清单642
附录C SVM对偶问题647
附录D 自动微分650
附录E 其他流行的人工神经网络架构656
附录F 特殊数据结构663
附录G TensorFlow图669

教学资源推荐
作者: 曹其新 庄春刚 等编著
作者: [美]约翰 J.克雷格(John J. Craig)著
作者: 李新德 朱博 谈英姿 编著
作者: (美)Martin T.Hagan, Howard B.Demuth, Mark H.Beale
参考读物推荐
作者: 林政 刘正宵 李江楠 著
作者: 邱锡鹏 著
作者: [印度]莫希特·赛瓦克(Mohit Sewak) [孟加拉]穆罕默德·礼萨·卡里姆(Md. Rezaul Karim) [美]普拉蒂普·普贾里(Pradeep Pujari)著