智算多多
官方邮箱:sw@zsdodo.com

公司地址:北京市丰台区南四环西路188号总部基地三区国联股份数字经济总部(邮 编:100070)


京公网安备11010602202532号 感谢您购买我们的书籍。我们希望这本书能为您揭示深度学习(DL)的内部机制,并为您提供一些关于如何在工作中使用概率深度学习方法灵感的启示。
我们三位作者在统计学方面都有背景。我们于 2014 年一起开始了深度学习的旅程。我们对它如此着迷,以至于深度学习至今仍然是我们职业生涯的中心。深度学习有着广泛的应用范围,但我们特别着迷于将深度学习模型与统计学中使用的概率方法相结合的力量。根据我们的经验,对概率深度学习潜力的深入理解需要深入了解底层方法和实践经验。因此,我们在本书中试图在这两种成分之间找到一个良好的平衡。
在这本书中,我们旨在在讨论涉及的方法之前,提供一些清晰的想法和示例应用。你们也有机会通过使用随书附带的 Jupyter 笔记本,实际应用所有讨论的方法。我们希望你们通过阅读这本书学到的东西,能和我们写作时学到的一样多。祝你们玩得开心,保持好奇心!
我们想要感谢所有帮助我们撰写这本书的人。特别感谢我们的开发编辑玛琳娜·迈克尔斯,她设法教会了一群瑞士人和德国人如何写出几百字以下的句子。没有她,你们就没有乐趣去解读文本。还要感谢我们的校对员弗朗西斯·伯兰,她在文本(以及公式中)发现了无数的错误和不一致(也要感谢你!)。我们在技术方面也得到了 Al Krinkler 和 Hefin Rhys 的大力支持,使笔记本中的文本和代码更加一致,更容易理解。还要感谢我们的项目编辑迪尔德丽·希姆;我们的校对员凯里·黑尔斯;以及我们的审稿编辑亚历山大·德拉戈萨夫利奇。我们还要感谢审稿人,他们在书的各个阶段提供了非常有价值的反馈:Bartek Krzyszycha、Brynjar Smári Bjarnason、David Jacobs、Diego Casella、Francisco José Lacueva Pérez、Gary Bake、Guillaume Alleon、Howard Bandy、Jon Machtynger、Kim Falk Jorgensen、Kumar Kandasami、Raphael Yan、Richard Vaughan、Richard Ward 和 Zalán Somogyváry。
最后,我们还想感谢理查德·谢泼德,他为本书提供了许多优秀的图形和插图,使书籍不那么枯燥,更加友好。
在这本书中,我们希望将支撑深度学习(DL)的概率原理带给更广泛的读者。最终(几乎),深度学习(DL)中的所有神经网络(NNs)都是概率模型。
有两个强大的概率原理:最大似然和贝叶斯。最大似然(亲切地称为 MaxLike)支配着所有传统深度学习(DL)。将网络视为使用最大似然原理训练的概率模型,可以帮助你提升网络的性能(就像谷歌从 WaveNet 过渡到 WaveNet++时所做的那样)或生成惊人的应用(例如,OpenAI 使用 Glow,一个生成逼真面孔的网络)。在需要网络表示“我不确定”的情况下,贝叶斯方法就派上用场了。(奇怪的是,传统的神经网络无法做到这一点。)本书的副标题“使用 Python、Keras 和 TensorFlow Probability”反映了这样一个事实,即你真的应该亲自动手编写一些代码。
这本书是为那些喜欢理解深度学习(DL)底层概率原理的人所写。理想情况下,你应该有一些深度学习(DL)或机器学习(ML)的经验,并且不应该对数学和 Python 代码感到过于恐惧。我们没有省略数学,并且在代码中总是包含了示例。我们相信数学与代码更相得益彰。
本书分为三部分,共涵盖八章。第一部分解释了传统的深度学习(DL)架构以及神经网络(NNs)的技术训练过程。
第二部分专注于将神经网络作为概率模型使用。与第三部分相比,我们讨论了最大似然方法。这些方法背后是所有传统深度学习(DL)。
第三部分介绍了贝叶斯神经网络。贝叶斯神经网络允许你处理不确定性。
本书包含许多源代码示例,无论是编号列表还是与普通文本混排。在两种情况下,源代码都以 fixed-width font,如 this 的格式呈现,以将其与普通文本区分开来。
代码示例是从 Jupyter 笔记本中提取的。这些笔记本包含额外的解释,并且大多数都包括一些你应该做的练习,以更好地理解本书中介绍的概念。你可以在 GitHub 上的这个目录中找到所有代码:github.com/tensorchiefs/dl_book/。一个不错的起点是在这个目录 tensorchiefs.github.io/dl_book/,在那里你可以找到笔记本的链接。笔记本是按照章节编号的。例如,nb_ch08_02 是第八章的第二本笔记本。
本书的第一部分为你提供了一个对概率深度学习(DL)的初步高级理解,以及你可以用它来处理哪些类型的任务。你将了解用于回归(你可以用它来预测一个数字)的不同神经网络架构,以及用于分类(你可以用它来预测一个类别)的架构。你将获得设置 DL 模型的实际经验,学习如何调整这些模型,以及如何控制训练过程。如果你在深度学习方面还没有丰富的经验,你应该在继续学习第二部分的概率深度学习模型之前,完整地学习第一部分。
深度学习(DL)是当今数据科学和人工智能领域最热门的话题之一。深度学习自从 2012 年随着 GPU 的广泛应用而变得可行以来,但你可能已经在日常生活的各个领域处理深度学习技术了。当你与数字助手进行语音交流时,当你使用免费的 DeepL 翻译服务(DeepL 是一家基于深度学习生产翻译引擎的公司)将一种语言翻译成另一种语言,或者当你使用像 Google 这样的搜索引擎时,深度学习正在幕后施展其魔法。许多最先进的深度学习应用,如文本到语音翻译,通过使用概率深度学习模型来提升其性能。此外,自动驾驶汽车等安全关键应用使用基于贝叶斯理论的概率深度学习变体。
让我们先了解一下概率模型可能的样子以及如何使用它。我们用一个日常生活中的例子来讨论非概率模型和概率模型之间的区别。然后我们用同一个例子来突出概率模型的一些优点。
在我们的车里,我们大多数人使用的是卫星导航系统(简称 satnav,即 GPS),它告诉我们如何从 A 地到 B 地。对于每条建议的路线,satnav 还会预测所需的旅行时间。这种预测的旅行时间可以理解为一种最佳猜测。你知道当你从 A 地到 B 地走相同的路线时,有时需要更多的时间,有时需要更少的时间。但标准的 satnav 是非概率的:它只预测旅行时间的一个值,不会告诉你可能的值范围。例如,看看图 1.1 左侧的面板,你看到两条从纽约的 Croxton 到现代艺术博物馆(MoMA,也在纽约)的路线,预测的旅行时间是 satnav 基于以前的数据和当前道路状况的最佳猜测。
深度学习(DL)究竟是什么呢?当被要求给出一个简短的电梯式介绍时,我们会说它是一种基于人工神经网络(NN)的机器学习(ML)技术,并且它松散地受到人脑工作方式的启发。在我们给出自己对深度学习(DL)的定义之前,我们首先想给你一个关于人工神经网络(NN)外观的初步概念(见图 1.2)。
让我们来看看非概率性、概率性和贝叶斯概率性分类之间的区别。深度学习因其优于传统方法而闻名,尤其是在图像分类任务中。在深入细节之前,我们想通过一个人脸识别问题来给你一个深度学习方法和更传统的人脸识别方法之间的差异和共性的感觉。作为旁注,人脸识别实际上是让我们最初接触深度学习的应用。
我们想在介绍章节的结尾讨论概率和非概率深度学习回归任务中的差异。回归有时也被称为曲线拟合。这让人想起了以下内容:
深度学习所有的令人印象深刻的成就都归结为仅仅是曲线拟合。
–Judea Pearl, 2018
最近,深度学习已经取得了几个非凡的成功故事。因此,您可能会问自己是否应该忘记传统的机器学习方法,转而使用深度学习。答案取决于具体情况和任务。在本节中,我们将讨论何时不应使用深度学习以及深度学习有哪些用途。
本书为您提供了概率深度学习的实战入门。我们将提供练习和代码演示作为 Jupyter 笔记本,让您获得经验,从而更深入地理解概念。为了从本书中受益,您应该已经知道如何运行简单的 Python 程序,以及如何将模型拟合到数据上(如线性回归这样的简单模型即可)。为了深入理解更高级的部分(标题结尾后有星号标记),您应该熟练掌握中级数学,如矩阵代数和微分微积分,以及中级统计学,如解释概率分布。您将学习如何
