描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111749714
随着一系列的技术突破,深度学习推动了整个机器学习领域的发展。现在,即使是对这项技术几乎一无所知的程序员也可以使用简单有效的工具来实现“可以自动从数据中学习”的程序。这本畅销书的更新版通过具体的示例、非常少的理论和可用于生产环境的Python框架(Scikit-Learn、Keras和TensorFlow)来帮助你直观地理解并掌握构建智能系统所需要的概念和工具。
在本书中,你会学到一系列可以快速使用的技术,从简单的线性回归开始,一直到深度神经网络。书中提供了大量的代码示例,并且每章的练习题可以帮助你应用所学的知识,你只需要有一些编程经验。
通过本书,你将能够:
·使用Scikit-Learn通过端到端项目来学习机器学习基础知识。
·探索几个模型,包括支持向量机、决策树、随机森林和集成方法。
·探索无监督学习技术,如降维、聚类和异常检测。
·深入研究神经网络架构,包括卷积网络、循环网络、生成对抗网络、自动编码器、扩散模型和转换器。
·使用TensorFlow和Keras构建和训练用于计算机视觉、自然语言处理、生成模型和深度强化学习的神经网络。
本书分为两大部分:di一部分主要基于Scikit-Learn,介绍机器学习的基础算法;第二部分则使用TensorFlow和Keras,介绍神经网络与深度学习。此外,附录部分的内容也非常丰富,包括课后练习题解答、机器学习项目清单、SVM对偶问题、自动微分和特殊数据结构等。书中内容广博,覆盖了机器学习的各个领域,不仅介绍了传统的机器学习模型,包括支持向量机、决策树、随机森林和集成方法,还提供了使用Scikit-Learn进行机器学习的端到端训练示例。作者尤其对深度神经网络进行了深入的探讨,包括各种神经网络架构、强化学习,以及如何使用TensorFlow/Keras库来构建和训练神经网络。本书兼顾理论与实战,既适合在校学生,又适合有经验的工程师。
目录
前言1
第一部分 机器学习的基础知识11
第1章 机器学习概览13
1.1 什么是机器学习14
1.2 为什么使用机器学习14
1.3 应用示例17
1.4 机器学习系统的类型18
1.5 机器学习的主要挑战33
1.6 测试和验证39
1.7 练习题43
第2章 端到端机器学习项目44
2.1 使用真实数据44
2.2 放眼大局46
2.3 获取数据50
2.4 探索和可视化数据以获得见解63
2.5 为机器学习算法准备数据69
2.6 选择和训练模型87
2.7 微调模型91
2.8 启动、监控和维护系统96
2.9 试试看99
2.10 练习题99
第3章 分类101
3.1 MNIST101
3.2 训练二元分类器104
3.3 性能测量104
3.4 多类分类115
3.5 错误分析118
3.6 多标签分类121
3.7 多输出分类123
3.8 练习题124
第4章 训练模型126
4.1 线性回归127
4.2 梯度下降132
4.3 多项式回归141
4.4 学习曲线143
4.5 正则化线性模型146
4.6 逻辑回归153
4.7 练习题162
第5章 支持向量机164
5.1 线性SVM分类164
5.2 非线性SVM分类167
5.3 SVM回归172
5.4 线性SVM分类器的工作原理174
5.5 对偶问题176
5.6 练习题180
第6章 决策树181
6.1 训练和可视化决策树181
6.2 做出预测182
6.3 估计类概率185
6.4 CART训练算法185
6.5 计算复杂度186
6.6 基尼杂质或熵186
6.7 正则化超参数187
6.8 回归189
6.9 对轴方向的敏感性191
6.10 决策树具有高方差192
6.11 练习题193
第7章 集成学习和随机森林194
7.1 投票分类器194
7.2 bagging和pasting198
7.3 随机森林202
7.4 提升法204
7.5 堆叠法212
7.6 练习题215
第8章 降维216
8.1 维度的诅咒217
8.2 降维的主要方法218
8.3 PCA221
8.4 随机投影228
8.5 LLE230
8.6 其他降维技术232
8.7 练习题234
第9章 无监督学习技术235
9.1 聚类算法:k均值和DBSCAN236
9.2 高斯混合模型256
9.3 练习题265
第二部分 神经网络与深度学习267
第10章 Keras人工神经网络简介269
10.1 从生物神经元到人工神经元270
10.2 使用Keras实现MLP284
10.3 微调神经网络超参数308
10.4 练习题316
第11章 训练深度神经网络319
11.1 梯度消失和梯度爆炸问题319
11.2 重用预训练层333
11.3 更快的优化器338
11.4 学习率调度346
11.5 通过正则化避免过拟合350
11.6 总结和实用指南357
11.7 练习题358
第12章 使用TensorFlow自定义模型和训练360
12.1 TensorFlow快速浏览360
12.2 像使用NumPy一样使用TensorFlow363
12.3 自定义模型和训练算法368
12.4 TensorFlow函数和图387
12.5 练习题392
第13章 使用TensorFlow加载和预处理数据394
13.1 tf.data API395
13.2 TFRecord格式405
13.3 Keras预处理层411
13.4 TensorFlow数据集项目425
13.5 练习题427
第14章 使用卷积神经网络进行深度计算机视觉429
14.1 视觉皮层的结构429
14.2 卷积层431
14.3 池化层439
14.4 使用Keras实现池化层441
14.5 CNN架构443
14.6 使用Keras实现ResNet-34 CNN460
14.7 使用Keras的预训练模型462
14.8 使用预训练模型进行迁移学习463
14.9 分类和定位466
14.10 物体检测467
14.11 物体跟踪474
14.12 语义分割475
14.13 练习题478
第15章 使用RNN和CNN处理序列480
15.1 循环神经元和层481
15.2 训练RNN484
15.3 预测时间序列485
15.4 处理长序列505
15.5 练习题515
第16章 基于RNN和注意力机制的自然语言处理516
16.1 使用字符RNN生成莎士比亚文本517
16.2 情感分析525
16.3 用于神经机器翻译的编码器-解码器网络532
16.4 注意力机制541
16.5 Transformer模型的雪崩554
16.6 视觉Transformer558
16.7 Hugging Face的Transformer库562
16.8 练习题566
第17章 自动编码器、GAN和扩散模型568
17.1 有效的数据表示569
17.2 使用不完备的线性自动编码器执行PCA571
17.3 堆叠式自动编码器572
17.4 卷积自动编码器579
17.5 去噪自动编码器580
17.6 稀疏自动编码器582
17.7 变分自动编码器584
17.8 生成Fashion MNIST图像588
17.9 生成对抗网络589
17.10 扩散模型602
17.11 练习题608
第18章 强化学习610
18.1 学习优化奖励611
18.2 策略搜索612
18.3 OpenAI Gym介绍614
18.4 神经网络策略617
18.5 评估动作:信用分配问题619
18.6 策略梯度620
18.7 马尔可夫决策过程624
18.8 时序差分学习628
18.9 Q学习629
18.10 实现深度Q学习632
18.11 深度Q学习的变体636
18.12 一些流行的RL算法概述640
18.13 练习题643
第19章 大规模训练和部署TensorFlow模型645
19.1 为TensorFlow模型提供服务646
19.2 将模型部署到移动设备或嵌入式设备664
19.3 在Web页面中运行模型666
19.4 使用GPU加速计算668
19.5 跨多个设备训练模型676
19.6 练习题694
致读者694
附录A 机器学习项目清单697
附录B 自动微分703
附录C 特殊数据结构710
附录D TensorFlow图716
前言
机器学习海啸
2006 年,Geoffrey E. Hinton 等人发表了一篇论文(https://homl.info/136)注 1,展示了 如何训练能够以最高的精度(>98%)来识别手写数字的深度神经网络。他们将这种 技术称为“深度学习”。深度神经网络是我们大脑皮层的(非常)简化的模型,由 一堆人工神经元层组成。当时普遍认为训练深度神经网络是不可能的注 2,并且大多数 研究人员在 20 世纪 90 年代后期放弃了这种想法。这篇论文重新激发了科学界的兴 趣,不久之后许多新论文证明深度学习不仅是可能的,而且取得了令人振奋的成就, 这是其他机器学习(Machine Learning ,ML) 技术无法企及的(借助于巨大的计算 能力和大量的数据)。这种热情很快扩展到机器学习的许多其他领域。
十年后,机器学习征服了整个工业界,如今它已成为高科技产品的核心,为你的网 络搜索结果排名,为智能手机的语音识别提供支持,推荐视频,甚至可能驾驶你的 汽车。
你项目中的机器学习
所以,你自然会对机器学习感到兴奋并愿意加入其中!
也许你想给你的自制机器人一个大脑,让它能识别人脸,或者学会走路。
或者你的公司可能拥有大量数据(用户日志、财务数据、生产数据、机器传感器数 据、热线统计数据、人力资源报告等),如果你知道去哪里查找,你很可能会挖掘出一些隐藏的宝藏。通过机器学习,你可以完成以下甚至更多任务(https://homl.info/usecases):
? 细分客户并为每个群体找到最佳的营销策略。
? 根据类似客户的购买情况为每个客户推荐产品。
? 检测哪些交易可能是欺诈性的。
? 预测明年的收入。
无论出于何种原因,你已经决定学习机器学习并将它应用到你的项目中。好主意!
目标与方法
本书假定你对机器学习几乎一无所知。它的目标是为你实现从数据中学习的程序提 供所需的概念、工具和直觉。
我们将介绍大量的技术,从最简单和最常用的技术(例如线性回归)到一些经常赢 得比赛的深度学习技术。为此,我们使用适用于生产环境的 Python 框架:
? Scikit-Learn(https://scikit-learn.org )非常易于使用,它还有效地实现了许多机器 学习算法,因此它是学习机器学习的一个很好的切入点。它由 David Cournape au 于 2007 年创建,现在由法国计算机科学与自动化研究所(Inria)的一组研究人 员主导研发。
? TensorFlow (https://tensorflow.org )是一个更复杂的分布式数值计算库。它通 过将计算分布在数百个多 GPU (图形处理单元)服务器上,使有效地训练和运 行非常大的神经网络成为可能。 TensorFlow (TF)由 Google 研发,支持许多 大型机器学习应用程序。它于 2015 年 11 月开源,并于 2019 年 9 月发布 2.0 版本。
? Keras (https://keras.io)是一种高级深度学习 API,可以非常简单地训练和运行 神经网络。Keras 与 TensorFlow 捆绑在一起,它依赖于 TensorFlow 进行所有的 密集计算。
本书偏向于动手实践的方法,通过具体的工作示例和少量理论来加深对机器学习的 直观理解。
虽然你不需要拿起笔记本计算机就可以阅读本书,但我强烈建议你尝试 使用代码示例。
示例代码
本书中的所有示例代码都是开源的,Jupyter notebook 可以在 https://github.com/ ageron/handson-ml3 在线获取。这些是包含文本、图像和可执行代码片段(在我们 的例子中为 Python)的交互式文档。最简单快捷的入门方法是使用 Google Colab 运行这些例子。Google Colab 是一项免费服务,允许你直接在线运行任何 Jupyter notebook,而无须在你的机器上安装任何东西。你只需要一个网络浏览器和一个 Google 账户。
在本书中,我假设你使用的是 Google Colab,但我也在其他在线平台 (例如 Kaggle 和 Binder)上测试了 notebook,因此你可以根据需要使用 它们。或者,你可以安装所需的库和工具(或本书的 Docker 镜像)并直 接在你自己的机器上运行。请参阅 https://homl.info/install 上的说明。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用 本书中的代码,而不需要联系 O’Reilly 获得许可,除非需要大段地复制代码。例 如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但 销售或发布 O’Reilly 的示例代码则需要 O’Reilly 出版社的许可。引用本书的示例代 码来回答一个问题也不需要许可,将本书中的示例代码的很大一部分放到自己的产 品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书 名、作者、出版社和 ISBN,例如:
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow,作者 Aurélien Géron,由 O’Reilly 出版,书号 978-1-098-12597-4。
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permissions@ oreilly.com 联系我们。
先决条件
本书假定你具有一定的 Python 编程经验。如果你还不了解Python,https://learnpython.org 是一个很好的起点。 Python.org 上的官方教程(https://docs.python.org/3/tutorial )也 相当不错。
本书还假定你熟悉 Python 的主要科学库 —尤其是 NumPy (https://numpy.org)、 Pandas (https://pandas.pydata.org)和 Matplotlib(https://matplotlib.org)。如果你从未使用过这些库,请不要担心,它们很容易学习,我已经为它们每个创建了一个教 程。你可以通过 https://homl.info/tutorials 在线访问它们。
此外,如果你想完全理解机器学习算法的工作原理(而不仅仅是如何使用它们),那么你至少应该对一些数学概念有基本的了解,尤其是线性代数。具体来说,你应该 知道什么是向量和矩阵,以及如何执行一些简单的操作,例如向量相加,或转置和 矩阵相乘。如果你需要快速了解线性代数(这真的不是火箭科学!),我在 https:// homl.info/tutorials 提供了一个教程。你还会找到有关微积分的教程,这可能有助于 理解神经网络的训练,但对掌握重要概念并非完全必要的。本书偶尔也会使用其他 数学概念,例如指数和对数、一些概率论和一些基本的统计概念,但不会太高深。 如果你需要任何这些方面的帮助,请查看 https://khanacademy.org ,该网站提供许多 优秀的免费在线数学课程。
路线图
本书分为两部分。第一部分涵盖以下主题:
? 什么是机器学习,它试图解决什么问题,以及其系统的主要类别和基本概念
? 典型机器学习项目中的步骤
? 通过将模型拟合到数据中进行学习
? 优化代价函数
? 处理、清洗和准备数据
? 选择和工程特征
? 选择模型并使用交叉验证调整超参数
? 机器学习的挑战,特别是欠拟合和过拟合(偏差 / 方差权衡)
? 最常见的学习算法:线性和多项式回归、逻辑回归、k 最近邻、支持向量机、决 策树、随机森林和集成方法
? 降低训练数据的维度以对抗“维度诅咒”
? 其他无监督学习技术,包括聚类、密度估计和异常检测
第二部分涵盖以下主题:
? 什么是神经网络以及它们的作用
? 使用 TensorFlow 和 Keras 构建和训练神经网络
? 最重要的神经网络架构:用于表格数据的前馈神经网络,用于计算机视觉的卷积网络,用于处理序列的循环网络和长短期记忆网络 (Long Short-Term Memory, LSTM)、用于自然语言处理(以及更多方面)的编码器 – 解码器和 Transformer, 以及用于生成学习的 自动编码器、生成对抗网络(Generative Adversarial Network, GAN)和扩散模型
? 训练深度神经网络的技术
? 如何使用强化学习构建可以通过反复实验学习好的策略的智能体(例如游戏中 的机器人)
? 有效地加载和预处理大量数据
? 大规模训练和部署 TensorFlow 模型
第一部分主要基于 Scikit-Learn,而第二部分使用 TensorFlow 和 Keras。
不要仓促地跳入深水区:虽然深度学习无疑是机器学习中非常令人兴奋 的领域,但你应该首先掌握基础知识。此外,大多数问题都可以使用 更简单的技术来很好地解决,例如随机森林和集成方法(在第一部分讨 论)。深度学习最适合解决图像识别、语音识别或自然语言处理等复杂问 题,它需要大量数据、计算能力和耐心(除非你可以利用预训练的神经 网络,正如你将会看到的那样)。
第 1 版和第 2 版之间的变化
如果你读过第 1 版,那么以下是第 1 版和第 2 版之间的主要变化:
? 所有代码都从 TensorFlow 1.x 迁移到 TensorFlow 2.x,我用更简单的 Keras 代码 替换了大部分底层 TensorFlow 代码(计算图、会话、特征列、估计器等)。
? 第 2 版介绍了用于加载和预处理大型数据集的 Data API、用于大规模训练和部 署 TF 模型的分布式策略 API、用于生产环境模型的 TF Serving 和 Google Cloud AI Platform,以及(简要地介绍)TF Transform 、TFLite 、TF Addons/Seq2Seq、 TensorFlow.js 和 TF Agents。
? 第 2 版还介绍了许多额外的机器学习主题,包括关于无监督学习的新章节、用于 物体检测和语义分割的计算机视觉技术、使用卷积神经网络(Convolutional Neural Network ,CNN)处理序列、使用循环神经网络(Recurrent Neural Network,RNN) 的自然语言处理(Natural Language Processing,NLP)、CNN 和 Transformer、GAN 等。
有关详细信息,请参阅 https://homl.info/changes2。
第2版和第 3版之间的变化
如果你读过第2版,那么以下是第2版和第3版之间的主要变化:
? 所有代码都已更新为最新的库版本。特别是,第3版为Scikit-Learn 引人了许多新功能(例如,特征名称的跟踪、基于直方图的梯度提升、 标签传播等),还介绍了用于超参数调整的Keras Tuner 库、用于自然语言处理的 Hugging Face的
Transforer库,以及Keras 的新的预处理和数据增强层。
? 添加了多个视觉模型(ResNeXt、DenseNet、MobileNet、CSPNet 和 EfficientNet)以及选择正确模型的指南。
? 第15章现在分析芝加哥公共汽车和铁路乘客数据而不是生成的时间序列,并介绍ARMA模型及其变体。
? 关于自然语言处理的第16章现在构建了一个英语一西班牙语的翻译模型,首先使用编码器-解码器RNN,然后使用Transformer模型。本章还会介绍语言型,例如
:“学习机器学习的绝佳资源。你会找到清晰的思路、直观的解释以及大量的实用技巧。”
——Fran?ois Chollet,Keras的发明者,
《Deep Learning with Python》的作者
“本书很好地介绍了使用神经网络解决问题的相关理论和实践,我向任何有兴趣应用机器学习解决实际问题的人强烈推荐本书。”
——Pete Warden,TensorFlow移动端负责人
评论
还没有评论。