重磅推荐
【编辑推荐】

信用卡公司如何检测欺诈行为?
航空公司如何通过机器学习对喷气发动机进行预测性维护?
自动驾驶汽车如何看周围的世界?
谷歌翻译如何把文字翻译为另一种语言?
面部识别系统如何工作?

作者抽丝剥茧,在运用机器学习和人工智能来解决这些问题的过程中,抽离出更有利于读者理解和掌握的知识要点,旨在帮助读者放下畏难情绪,最终自己动手构建一个类似更智能的系统或者以更智能的方式使用现有的系统,将人工智能集成到工业场景下的应用中。

作者在全球很多公司和研究机构讲授人工智能和机器学习课程,本书用到了课程中使用的例子和插图,全部经过实证,没有可怕的算法或者公式,可以帮助工程师和软件开发人员快速入门。更值得一提的是,书中还包含了很多实操案例。


【内容简介】

工程师需要知道的机器学习和人工智能提供的实例和图示来自Prosise的AI和ML课程,这]课程受到了全球各地许多公司和研究所的青睐和欢迎。作者不涉及让人滑悚然和望而生畏的数学公式,目的只有一个那就 是面向工程师和软件开发人员,帮助他们迅速入门并通过案例迅速运用人工智能和机器学习来解决业务问题。本书讲帮助读者学会什么是机器学习和深度学习以及两者各有哪些用途;理解常用的深度学习算法的原理及其应用;学会标记和未标记数据,监督学习和非监督学习有何差异;通过scikit-learn和神经网络Keras和TensorFlow ,运用Python来进行机器学习建模;训练和评分地柜模型与-进制和多类粉类器模型 ;构建面检测和面识别模型以及 对象检测模型。本书适合硬件工程师与软件开发人员阅读和参考


【作者简介】

杰夫·普罗西斯 (Jeff Prosise) ,资深工程师,热心于帮助工程师和软件开发人员用好人工智能和机器学习。作为Wintellect的联合创始人,他在微软培训过几千名开发人员,在一些全球软件大会上发表过演讲。此外,杰夫还效力于橡树岭国家实验室和劳伦斯利弗莫尔国家实验室,从事过高功率激光系统和聚变能研究。目前,杰夫在Atmosera担任首席学习官,致力于帮助客户在产品或服务中实际应用人工智能。


【目录】

第I 分 用Scikit-Learn 进行机器学

第1 章 机器学 3

1.1 什么是机器学 4

1.1.1 机器学与人工智能 7

1.1.2 监督和无监督学 9

1.2 使用k-means 聚类算法的无监督学 10

1.2.1 将k-means 聚类算法应用于客户数据 13

1.2.2 使用两个以上的维度对客户进行细分 16

1.3 监督学 19

1.3.1 k 近邻 22

1.3.2 使用k 近邻对花卉进行分类 24

1.4 小结 28

第2 章 回归模型 30

2.1 线性回归 30

2.2 决策树 34

2.3 随机森林 37

2.4 梯度提升机 39

2.5 支持向量机 41

2.6 回归模型的度测量 42

2.7 使用回归来预测车费 46

2.8 小结 51

第3 章 分类模型 53

3.1 逻辑回归 54

3.2 分类模型的率度量 56

3.3 分类数据 61

3.4 二分类 63

3.4.2 检测信用卡欺诈 68

3.5 多分类 73

3.6 构建数字识别模型 74

3.7 小结 78

第4 章 文本分类 80

4.1 准备用于分类的文本 81

4.2 情感分析 84

4.3 朴素贝叶斯 88

4.4 垃圾邮件过滤 91

4.5 推荐系统 95

4.5.1 余弦相似性 96

4.5.2 构建一个电影推荐系统 98

4.6 小结 100

第5 章 支持向量机 102

5.1 支持向量机的工作原理 102

5.1.1 核 105

5.1.2 核技巧 106

5.2 参数调整 109

5.3 数据归一化 112

5.4 管道化 117

5.5 使用SVM 进行面识别 118

5.6 小结 124

第6 章 主成分分析 126

6.1 理解主成分分析 127

6.2 噪声过滤 133

6.3 数据匿名化 135

6.4 可视化高维数据 137

6.5 异常检测 140

6.5.1 使用PCA 检测信用卡欺诈 141

6.5.2 使用PCA 来预测轴承故障 145

6.5.3 多变量异常检测 150

6.6 小结 151

第7 章 机器学模型的作化 152

7.1 从Python 客户端使用Python 模型 153

7.2 pkl 文件的版本管理 157

7.3 从C# 客户端使用Python 模型 157

7.4 容器化机器学模型 160

7.5 使用ONNX 来桥接不同的语言 161

7.6 用ML.NET 在C# 中构建ML 模型 165

7.6.1 用ML.NET 进行情感分析 166

7.6.2 存和加载ML.NET 模型 169

7.7 为Excel 添加机器学功能 169

7.8 小结 173

第II 分 用Keras 和TensorFlow 进行深度学

第8 章 深度学 177

8.1 了解经网络 178

8.2 训练经网络 182

8.3 小结 185

第9 章 经网络 187

9.1 用Keras 和TensorFlow 构建经网络 188

9.1.1 设定经网络的大小 192

9.1.2 使用经网络来预测车费 193

9.2 用经网络进行二分类 197

9.2.1 进行预测 199

9.2.2 训练经网络来检测信用卡欺诈 200

9.3 用经网络进行多分类 204

9.4 训练经网络进行面识别 207

9.5 Dropout 210

9.6 存和加载模型 211

9.7 Keras 回调 213

9.8 小结 216

第10 章 用卷积经网络进行图像分类 218

10.1 理解CNN 219

10.1.1 使用Keras 和TensorFlow 来构建CNN 223

10.1.2 训练CNN 来识别北野生动物 227

10.2 预训练CNN 232

10.3 使用ResNet50V2 对图像分类 235

10.4 转移学 237

10.5 通过转移学来识别北野生动物 240

10.6 数据增强 243

10.6.1 用ImageDataGenerator 进行图像增强 244

10.6.2 使用增强层进行图像增强 247

10.6.3 将图像增强应用于北野生动物 248

10.7 全局池化 251

10.8 用CNN 进行音频分类 252

10.9 小结 259

第11 章 面检测和识别 261

11.1 人脸检测 262

11.1.1 用Viola-Jones 算法进行人脸检测 263

11.1.2 使用Viola-Jones 的OpenCV 实现 265

11.1.3 用卷积经网络检测人脸 267

11.1.4 从照片中提取人脸 271

11.2 面识别 273

11.2.1 将迁移学应用于人脸识别 274

11.2.2 用任务定的权重强化转移学 277

11.2.3 ArcFace 280

11.3 综合运用:检测和识别照片中的人脸 281

11.4 处理未知人脸:闭集和开集分类 287

11.5 小结 288

第12 章 目标检测 290

12.1 R-CNN 291

12.2 Mask R-CNN 294

12.3 YOLO 300

12.4 YOLOv3 和Keras 302

12.5 自定义目标检测 307

12.5.1 用自定义视觉服务训练自定义目标检测模型 308

12.5.2 使用导出的模型 315

12.6 小结 317

第13 章 自然语言处理 318

13.1 文本准备 319

13.2 词嵌入 322

13.3 文本分类 323

13.3.1 自动化文本矢量处理 327

13.3.2 在情感分析模型中使用TextVectorization 328

13.3.3 将词序纳入预测的因素 330

13.3.4 循环经网络(RNN) 331

13.3.5 使用预训练模型进行文本分类 333

13.4 经机器翻译 335

13.4.1 LSTM 编码器- 解码器 336

13.4.2 Transformer 编码器- 解码器 338

13.4.3 构建基于Transformer 的NMT 模型 340

13.4.4 使用预训练模型来翻译文本 349

13.5 基于变换器的双向编码器(BERT) 350

13.5.1 构建基于BERT 的答题系统 352

13.5.2 调BERT 以进行情感分析 355

13.6 小结 359

第14 章 Azure 认知服务 361

14.1 Azure 认知服务简介 362

14.1.1 密钥和结点 364

14.1.2 调用Azure 认知服务API 367

14.1.3 Azure 认知服务容器 369

14.2 计算机视觉服务 371

14.3 语言服务 380

14.4 翻译服务 383

14.5 语音服务 385

14.6 集大成者Contoso Travel 386

14.7 小结 391


【前言】

我的一生见证过三次伟大的技术革命,先后是是个人电脑、互联网和智能手机。机器学习(ML)和人工智能(AI)的重要性与这三者比肩,并将对我们的生活产生同样深刻的影响。
记得有一天,信用卡公司打电话给我,向我确认我是不是要购买一条价值700 美元的项链。打那天起,我就对机器学习产生了兴趣。虽然并不是我要买,但我很好奇:“他们是怎么知道那可能不是我的呢?”我在世界各地都使用信用卡,而且要说明的是,我确实会时不时地给我的妻子买些好东西。信用卡公司从没拒绝过合法的刷卡交易,但有几次他们正确标记了信用卡诈骗。此前有一次是巴西某个家伙试图盗刷我的信用卡买机票。这一次不同的是,那家珠宝店距离我家只有2 英里。我试着想象,到底是一种怎样的算法可以在商店里如此靠谱地检测到信用卡欺诈盗刷。没过多久,我就意识到有种东西比单纯的算法更强大,是它在发挥作用。
事实证明,信用卡公司用了一个复杂的机器学习模型来运行每一笔交易,这个模型非常善于检测欺诈行为。有了这个意识之后,我的生活发生了变化,因为这个例子很有说服力,证明ML 和AI 可以使世界变得更美好。此外,了解ML 如何实时分析信用卡交易和筛选出非法交易的同时对合法交易开绿灯,成为我接下来注定要登顶的高峰。
本书面向的读者
最近,我接到某制造公司某位工程主管的电话。他是这样说的:“直到上周,我都不知道ML 和AI 是啥意思。现在,CEO 给我布置了任务,要我弄清楚它们如何赋能我们的业务,而且还要领先于竞争对手之前做到这一点。我现在要从头开始。你能帮忙吗?”
下一通电话来自一家想要使用机器学习来检测税务欺诈和洗钱行为的政府外包公司。团队对机器学习理论相当精通,但不知道如何以最好的方式建立可以满足其需要的模型。
全球各地的专业人士都意识到,ML 和AI 代表着一场技术海啸,他们试图抢占风口浪尖以免被吞没。本书就是为这些人准备的,他们包括工程师、软件开发人员、IT经理以及其他相关人员。他们想要实际理解ML 和AI 并应用这些知识来解决以前难以甚至不可能解决的问题。本书试图传达一种直观的理解,所以只有在必要时才“祭出”公式。无论你以前有没有听过,但你真的不必成为精通微积分或线性代数的高手,大多数人都能建一个系统来识别照片中的物体(对象或目标),将英语翻译成法语,或者爆光贩毒的人和偷税漏税的人。
我为什么要写这本书
每个作者的内心深处都住着一个小精灵,它让他们知道他们可以用别人不会的方式讲故事。我在30 多年前写了第一本计算机书,20 多年前写了最后一本,原本并不打算再写的。但现在我要讲一个故事。这个故事很重要,每个工程师和软件开发人员都应该听听。我对别人讲这个故事的方式不是完全满意,所以就写了这本书,我希望自己当初学习ML 和AI 时能够有这本书。它从基础知识开始,带领大家攀登ML 和AI 世界中一座又一座的高峰。最后,让大家明白种种奥秘:信用卡公司如何检测欺诈行为?航空公司如何通过机器学习对喷气发动机进行预测性维护?自动驾驶汽车如何看周围的世界?谷歌翻译如何把文字翻译为另一种语言?面部识别系统如何工作?此外,你还能自己动手构建一个类似的系统或者使用现有的系统,将AI集成到自己写的应用程序中。
如今,最先进的机器学习模型需要在配备图形处理单元(GPU)或张量处理单元(TPU)的计算机上进行训练,而这通常要花费大量时间和费用。本书的一个特点是提供一些例子,这些例子能在没有配备GPU 的普通PC 或笔记本电脑上构建。在讲到识别照片中目标的计算机视觉模型时,我会解释这种模型是如何工作的以及它们如何在GPU 集群上用数以百万计的图像进行训练。但我随后会向大家展示如何使用迁移学习这种技术来重用现有模型以解决领域特有的问题,并在普通的笔记本电脑上训练模型。
本书在很大程度上取材于我在世界各地的公司和研究机构上过的课程和做过的研讨,我喜欢当老师,因为我喜欢看到有人眼里发光,从中得到了启发。在ML 和AI 的课程开始时我经常会说:“我不是来教书的,我是来改变你们的人生的!”希望你们的人生会从读这本书开始变得有一点点不同,有一点点好。
运行本书的示例代码
作为工程师,最好通过动手实践来学习新东西,而不仅仅是读书。本书包含大量代码示例,你可以通过运行这些例子来巩固每一章所学的知识。这些例子中,大多数是用Python 来写的,使用的是流行的开源库,例如Scikit-Learn、Keras 和TensorFlow。所有这些都可以在我专门建的一个GitHub 公共存储库中找到(https://oreil.ly/applied-machine-learning-code)。这是所有代码示例的唯一来源,我会随时保持更新。
有一些机器学习平台允许在不写代码的情况下构建和训练模型。但要想了解这些平台能做什么以及具体如何做,建议你最好还是写写代码。Python 是一种简单的编程语言。很容易学。今天的工程师必须会写代码。你可以通过本书的例子来学习Python,如果已经掌握了Python(以及更常规意义上的编程),那么说明你其实已经领先别人一步了。
若是要在台式计算机或笔记本电脑上运行我在书中提供的例子,则需要安装64 位的Python 3.7 或更高版本。可以从Python.org 下载一个Python 运行时或者可以安装一个Python 发行版,例如Anaconda(https://oreil.ly/4NCqN)。另外,还需要确保已经安装了以下软件包及其依赖项:
• 用于构建机器学习模型的Scikit-Learn 和TensorFlow
• 用于数据处理和可视化的Pandas、Matplotlib 和Seaborn
• 用于图像处理的OpenCV 和Pillow
• 用于调用REST API 和构建网络服务的Flask 和Requests
• 用于开放神经网络交换( Open Neural Network Exchange,ONNX)模型的Sklearn-onnx 和Onnxruntime
• 用于从音频文件生成频谱图的Librosa
• 用于构建面部识别系统的MTCNN 和Keras-vggface
• 用于构建自然语言处理(Natural Language Processing,NLP)模型的KerasNLP、Transformers、Datasets 和PyTorch
• 用于调用Azure 认知服务(Azure Cognitive Services) 的Azurecognitiveservices-
vision-computervision、Azure-ai-textanalytics 和Azurecognitiveservices-speech。
可以用 pip install 命令来安装其中大多数包。如果安装了 Anaconda,就表明其中许多包已经安装好了,可以用conda install 命令或类似的命令来安装其余的包。
至于环境,最好是用虚拟Python 环境来防止安装的这些包与其他包发生冲突。如果不熟悉虚拟环境,则可以在 Python.org 上阅读它们的相关信息。如果使用的是Anaconda,那么说明虚拟环境已经就位了。
我的大部分代码示例是为Jupyter 笔记本(Jupyter notebooks)构建的,后者为编写和执行Python 代码提供了一个交互平台。数据科学界经常使用“笔记本”来探索数据和训练机器学习模型。可以通过安装Notebook(https://oreil.ly/ZWQyG)或JupyterLab(https://oreil.ly/5A3Ia)等包在本地运行Jupyter 笔记本,也可以使用Google Colab(https://oreil.ly/RdRBa)等云托管环境。Colab 的优点是不必在自己的电脑上安装任何东西,就连Python 都不用。而且,在我的例子要求GPU的罕见情况下,Colab 也能为你提供GPU。
Python 开发环境难以设置和维护是出了名的,尤其是在Windows 电脑上。如果不想创建这样的环境,或者尝试过但没成功,那么下载一个东西就可以了。我在Docker容器镜像(https://oreil.ly/wzEbA)中打包了一个完整的开发环境,适合运行本书中的所有例子。如果你的电脑上安装了Docker 引擎(https://oreil.ly/XO5GD),那么可以用以下命令启动容器:
docker run -it -p 8888:8888 jeffpro/applied-machine-learning:latest
然后,在浏览器中访问输出结果中显示的URL,就会进入一个完整的Jupyter 环境,里面有我所有的代码示例和运行它们所需的一切。它们存储在一个文件夹中(名为Applied-Machine-Learning),该文件夹是从同名GitHub 存储库中克隆的。不过,使用容器有一个缺点,即所做的更改默认不会保存。补救办法之一是在docker 命令中使用-v 开关,从而绑定到一个本地目录。详情可以参考Docker 文档中的“绑定挂载”(https://oreil.ly/7wgda)。
本书导航
本书分为两部分。
• 第I部分(第1章~第7章)讲解机器学习的基础知识,介绍流行的机器学习算法,比如逻辑回归和梯度提升。
• 第II 部分(第8 章~第14 章)讨论深度学习。作为今天人工智能的代名词,它使用了深度神经网络来实现数学模型和数据拟合。
强烈建议在阅读本书时动手练习,以便能对这些内容有更深刻的理解,进而开始思考如何修改我在书中提供的代码,玩一玩“假如…?”(what if?)游戏。
本书采用的约定
本书采用了以下排版约定:
等宽字体(Constant width)
代码清单和段落中出现的程序元素(例如变量、函数、数据库、数据类型、环境变量、语句和关键字等)使用等宽代码字体。例如,from skl2onnx import convert_sklearn
等宽粗体(Constant width bold)
要由用户亲自输入的命令或其他字面值使用加粗的等宽字体。例如,请输入abc
这个视觉元素代表提示或建议
这个视觉元素代表常规的注意事项
这个视觉元素代表警告或提醒
使用代码示例
如前所述,本书的补充材料(代码实例、练习等)可以从https://oreil.ly/appliedmachine-learning-code 下载。
如果有技术问题或者在使用代码示例时遇到问题,请电邮至bookquestions@oreilly.com。
本书的目的是帮助大家完成自己的工作。一般来说,如果书中提供了示例代码,那么你可以在自己的程序和文档中使用。不需要联系我们获得许可,除非要复制代码的很大一部分。例如,写一个用到了本书几处代码的程序不需要许可。销售或分发O’Reilly 书中的示例则需要。引用本书正文和示例代码来回答一个问题不需要许可。将本书大量示例代码纳入你的产品文档,则需要许可。
我们感谢但一般不强求署名。如果要署名,通常应该包括标题、作者、出版商和ISBN。例如,Applied Machine Learning and AI for Engineers by Jeff Prosise(O’Reilly)。Copyright 2023 Jeff Prosise , 978-1-492-09805-8。
如果觉得对代码示例的使用超出了合理使用或上述许可的范畴,请随时联系我们:
permissions@oreilly.com。


返回顶部