1)“美亚”人工智能图书畅销榜首图书,基于TensorFlow 2和Scikit-Learn的新版本全面升级;
2)Keras之父和TensorFlow移动端负责人鼎力推荐;
3)从实践出发,通过具体的示例、较少的理论和可用于生产环境的Python框架来帮助你直观地理解并掌握构建智能系统所需要的概念和工具;
4)实用性强。没有太多复杂的数学公式推导,每章都附有练习题和代码,可以帮助你应用所学的知识。
这本机器学习畅销书基于TensorFlow 2和Scikit-Learn的新版本进行了全面更新,通过具体的示例、非常少的理论和可用于生产环境的Python框架,从零帮助你直观地理解并掌握构建智能系统所需要的概念和工具。
全书分为两部分。第一部分介绍机器学习基础,涵盖以下主题:什么是机器学习,它试图解决什么问题,以及系统的主要类别和基本概念;第二部分介绍神经网络和深度学习,涵盖以下主题:什么是神经网络以及它们有什么用,使用TensorFlow和Keras构建和训练神经网络的技术,以及如何使用强化学习构建可以通过反复试错,学习好的策略的代理程序。第一部分主要基于Scikit-Learn,而第二部分则使用TensorFlow和Keras。
通过本书,你会学到一系列可以快速使用的技术。每章的练习可以帮助你应用所学的知识,你只需要有一些编程经验。所有代码都可以在GitHub上获得。
代码获取方式:
1、微信关注“华章计算机”
2、在后台回复关键词:新版蜥蜴书
◆ 前言◆
机器学习海啸
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)之上运行。TensorFlow 附带了该 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 上列出的那些博客)。最后,深度学习网站上有不错的资源清单,可供你了解更多信息。
最后,加入像Kaggle.com 这样的机器学习竞赛网站,将使你在一些实际的问题上获得 实践技能,并获得一些顶尖机器学习专业人员的帮助和见解。
致谢
我从未想象过我的第一本书会吸引如此众多的读者。我收到了读者的大量反馈,很多人提出了许多问题,有些人指出了书中的差错,大多数人给了我鼓励。我对所有读者的大力支持表示感谢。非常感谢大家!如果你在代码示例中发现错误(或只是提出问题),请毫不犹豫地在GitHub 上提交问题。如果在文本中发现错误,请提交勘误。一些读者还分享了本书如何帮助他们获得了第一份工作,或者它如何帮助他们解决了正在处理的具体问题。这种反馈极大地激励了我。如果你认为本书对你有所帮助,可以与我分享你的故事,无论是私下还是公开地与我分享。
我也非常感谢那些百忙之中抽出时间审阅本书的专家。特别要感谢François Chollet 审阅了所有基于Keras和TensorFlow 的章节,并给了我一些深入的反馈。由于Keras是第2版的主要新增内容之一,因此请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 如此全面地审阅了本书的第二部分, 并用他们的专业知识提供了非常有用的反馈。
前言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
“学习机器学习的优秀资源。你会找到清晰的思路、直观的解释以及大量的实用技巧。”
— Francois Chollet ,Keras的作者,Deep Learning with Python的作者
“本书很好地介绍使用神经网络解决问题的相关理论和实践,我向任何有兴趣应用机器学习来解决实际问题的人强烈推荐本书。”
—Pete Warden, TensorFlow移动端负责人