TensorFlow机器学习(原书第2版)
上QQ阅读APP看书,第一时间看更新

关于本书

要想从本书中获得最大收益,你可以把它作为两部分来处理:数学和理论的概览,以及Python、TensorFlow和其他组件的实际应用。当我在特定领域中介绍某项机器学习技术(比如回归或分类),以及引用示例数据集或某个问题时,会考虑你应该如何利用这些数据或问题来检验正在学习的机器学习知识。这就是我作为第1版的读者所做的:仔细阅读每一章,然后根据我做的笔记和我的工作,应用“假设”和数据集为这一版积累新的素材。

每一章都要花几周或者几个月的时间来完成。我在第2版中做了全面的更新,当你阅读本书前面的部分时,会发现章节的顺序与第1版相似。然而,在回归之后,现在有一章是第1版中建议的关于将回归应用到纽约311服务的练习。同样,在第2版中还新增了一章介绍如何使用分类对Netflix电影评论数据进行情感分析。

在本书的其余部分,你将探索的主题包括无监督聚类、隐马尔可夫模型(HMM)、自编码器、深度强化学习、卷积神经网络(CNN)和CNN分类器。我还增加了一章关于从Android手机获取位置数据并推断用户正在做什么类型的活动,以及一章关于重新创建VGG-Face面部识别CNN模型的内容。为了进行后面的练习,你需要访问GPU,这可以在你的笔记本计算机上进行本地访问,也可以通过谷歌、亚马逊或其他大型提供商的云服务访问。我会一路帮助你。

任何关于这本书的问题、评论或建议,请你务必发布到liveBook Discussion Forum(https://livebook.manning.com/book/machine-learning-with-tensorflow-second-edition/discussion)。你的反馈对于保持本书的更新,以及确保它是一本最出色的书非常重要。我期待着在机器学习的旅程中帮到你!

本书是如何组织的:路线图

本书分为三部分。

第一部分讨论了机器学习的基本原理及其当前被大规模应用的原因,为讨论目前实现机器学习应用最为广泛的框架之一——TensorFlow奠定了基础。

  • 第1章介绍机器学习,并解释它是如何教计算机根据输入的图像、文本、音频以及其他格式的信息进行分类、预测、聚合和识别的。
  • 第2章涵盖TensorFlow的基本要点,介绍TensorFlow框架、张量的概念、基于图的计算,以及创建、训练和保存模型的过程。

第二部分介绍机器学习工具箱:用于学习连续值预测的回归算法,或用于离散类别预测和推断的分类算法。这部分的章之间是成对的,其中一章聚焦于工具和基础理论,接下来的一章提供详细的示例问题,包括数据清洗、准备、训练、推断和评估。这里要学习的技术包括回归、分类、无监督聚类和HMM。所有这些技术都是可解释的,你可以解释机器学习过程的步骤,并直接通过数学和统计的方法来评估它们的价值。

  • 第3章介绍回归,这是一个输入为连续值,输出可能为离散或连续值的建模问题。
  • 第4章将回归算法应用于现实世界中的纽约311服务呼叫中心,该服务为市民提供帮助。你将收集每周的呼叫数据并使用回归对预期呼叫量做出精准预测。
  • 第5章介绍分类,这是一个输入为离散或连续值,输出为一个或多个类别标签的建模问题。
  • 第6章对Netflix和IMDb影评数据应用分类,建立一个基于评论的电影情感分类器,识别对电影的评价是正面的还是负面的。
  • 第7章介绍无监督聚类,展示如何将输入数据自动分组到不带标签的类别中。
  • 第8章对输入的Android手机位置数据应用自动聚类,展示如何通过手机加速度计的位置数据推断用户活动。
  • 第9章让你轻松地进入HMM主题,并展示如何通过间接证据得到可解释的决定。
  • 第10章将HMM应用于文本输入,在难以区分engineer是名词还是动词时,对文本中的词性进行歧义分类。

本书的最后一部分包含影响广泛的神经网络范式:帮助汽车自动驾驶,帮助医生诊断癌症,帮助手机通过生物特征(如人脸)做登录识别。神经网络是一种特殊的机器学习模型,其神经元的图的灵感来自人类大脑及其结构,神经元由输入激活,发出预测、置信度、信念、结构和形状。神经元很好地映射到张量(tensor)的概念,它作为图中的节点允许信息(如标量值、矩阵和向量等)在图中流动(flow),可以被管理和转换等——因此,谷歌的框架命名为TensorFlow。本书的这一部分包含使用隐藏层的自编码器压缩和表示输入、用于自动分类图像和面部识别的卷积神经网络(CNN)、用于时间序列数据或者语音转文本的循环神经网络(RNN)。这部分还包含seq2seq RNN架构,可以用于将输入文本和陈述与智能数字助手(如聊天机器人)的响应关联起来。本书的最后一章应用神经网络来评估基于输入视频和图像的机器人叠衣服的效用。

  • 第11章介绍自编码器,它利用神经网络的隐藏层将输入数据压缩为更小的表示。
  • 第12章探讨几种类型的自编码器,包括堆栈自编码器和去噪自编码器,并演示网络如何从CIFAR-10数据集学习一个图像的压缩表示。
  • 第13章介绍一种不同类型的网络——深度强化学习网络,用于学习股票投资组合的最优策略。
  • 第14章是关于CNN的,一个受视觉皮层启发的神经架构。CNN使用一些卷积滤波器来发现输入图像及其高阶和低阶特征的压缩表示。
  • 第15章构建两个现实世界中的CNN:一个用于CIFAR-10数据集中的物体识别,另一个是名为VGG-Face的面部识别系统。
  • 第16章涵盖时间序列数据的RNN范式,并表示神经网络是随时间推移的决策,而不仅仅是对某个特定实例的决策。
  • 第17章展示如何构建一个现实世界的RNN模型,称为长短期记忆(LSTM),用于语音到文本的自动识别,重建百度著名的deep-speech模型架构。
  • 第18章利用RNN演示seq2seq架构,可用于构建智能聊天机器人,根据之前的问题和答案训练出实际应答来响应用户聊天。
  • 第19章探索效用领域,使用神经网络架构从叠衣服的视频中创建图像嵌入,然后使用这些嵌入来推断完成任务过程中的每一步的效用。

关于代码

本书包含许多源代码的例子,包括有编号的清单和文中的普通代码。在这两种情况下,源代码排成等宽字体,以将其与普通文本分开。有时代码也会以粗体突出显示与本章中前面步骤相比有变化的代码,例如向现有代码行添加新功能时。

在许多情况下,最初的源代码已经被重新编排了格式,我们添加了换行符并重做缩进以适应书中可用的页面空间。在个别情况下,即使这样也不够,清单中包括行延续标记(010-01)。此外,当代码在文本中描述时,源代码中的注释通常会从清单中删除。许多清单中都有代码注释,以突出显示重要的概念。

本书中的代码按章组织为一系列的Jupyter Notebook。你可以从Docker Hub获取或自己构建相关Docker容器,安装Python 3和Python 2.7以及TensorFlow 1.15和1.14,这样你就可以运行书中的所有示例。书中的清单都有清晰的描述和编号,它们对应着GitHub中http://mng.bz/MoJn上的章节和带编号的清单的.ipynb文件,以及Manning网站https://www.manning.com/books/machine-learning-with-tensorflow-second-edition上的文件。

Docker文件会自动下载并安装第三方库(TensorFlow等),以及运行所有代码所需的远程Dropbox链接中的必要数据集。如果你在自己的Python环境中进行本地安装,那么也可以在Docker容器之外运行库和数据的下载脚本。

作者很高兴收到关于在GitHub上的代码的问题的报告,更高兴收到任何你发现的问题。我们还积极地将书中的清单移植到了TensorFlow2中。你可以在https://github.com/chrismattmann/MLwithTensorFlow2ed/tree/tensorflow2的tensorflow2分支中获取。