diff --git a/totrans/dl-cb_01.md b/totrans/dl-cb_01.md index 0421525..4f5ff36 100644 --- a/totrans/dl-cb_01.md +++ b/totrans/dl-cb_01.md @@ -1,4 +1,4 @@ -# 第一章 工具和技术 +# 第一章:工具和技术 在本章中,我们将介绍深度学习的常见工具和技术。这是一个很好的章节,可以通读一次以了解各种情况,并在需要时回头查看。 diff --git a/totrans/dl-cb_02.md b/totrans/dl-cb_02.md index 32d77b3..152651d 100644 --- a/totrans/dl-cb_02.md +++ b/totrans/dl-cb_02.md @@ -1,4 +1,4 @@ -# 第二章。摆脱困境 +# 第二章:摆脱困境 深度学习模型经常被视为黑匣子;我们在一端输入数据,另一端输出答案,而我们不必太关心网络是如何学习的。虽然深度神经网络确实擅长从复杂输入数据中提取信号,但将这些网络视为黑匣子的反面是,当事情陷入困境时并不总是清楚该怎么办。 diff --git a/totrans/dl-cb_03.md b/totrans/dl-cb_03.md index d84afa2..fa8a62a 100644 --- a/totrans/dl-cb_03.md +++ b/totrans/dl-cb_03.md @@ -1,4 +1,4 @@ -# 第三章。使用单词嵌入计算文本相似性 +# 第三章:使用单词嵌入计算文本相似性 ###### 提示 diff --git a/totrans/dl-cb_04.md b/totrans/dl-cb_04.md index 38bd37c..329a5a0 100644 --- a/totrans/dl-cb_04.md +++ b/totrans/dl-cb_04.md @@ -1,4 +1,4 @@ -# 第四章。基于维基百科外部链接构建推荐系统 +# 第四章:基于维基百科外部链接构建推荐系统 推荐系统传统上是根据用户先前收集的评分进行训练的。我们希望预测用户的评分,因此从历史评分开始似乎是一个自然的选择。然而,这要求我们在开始之前有一个大量的评分集,并且不允许我们对尚未评分的新项目做出良好的工作。此外,我们故意忽略了我们对项目的元信息。 diff --git a/totrans/dl-cb_05.md b/totrans/dl-cb_05.md index a2f1bb3..e8aa1f2 100644 --- a/totrans/dl-cb_05.md +++ b/totrans/dl-cb_05.md @@ -1,4 +1,4 @@ -# 第五章 生成类似示例文本风格的文本 +# 第五章:生成类似示例文本风格的文本 在本章中,我们将看看如何使用递归神经网络(RNN)生成类似文本体的文本。这将产生有趣的演示。人们已经使用这种类型的网络生成从婴儿姓名到颜色描述等各种内容。这些演示是熟悉递归网络的好方法。RNN 也有它们的实际用途——在本书的后面,我们将使用它们来训练聊天机器人,并基于收集的播放列表构建音乐推荐系统,RNN 已经被用于生产中跟踪视频中的对象。 diff --git a/totrans/dl-cb_06.md b/totrans/dl-cb_06.md index a26dc5c..6b1c5a0 100644 --- a/totrans/dl-cb_06.md +++ b/totrans/dl-cb_06.md @@ -1,4 +1,4 @@ -# 第六章。问题匹配 +# 第六章:问题匹配 我们现在已经看到了一些示例,说明我们如何构建和使用词嵌入来比较术语。自然而然地,我们会问如何将这个想法扩展到更大的文本块。我们能否为整个句子或段落创建语义嵌入?在本章中,我们将尝试做到这一点:我们将使用来自 Stack Exchange 的数据为整个问题构建嵌入;然后我们可以使用这些嵌入来查找相似的文档或问题。 diff --git a/totrans/dl-cb_07.md b/totrans/dl-cb_07.md index ef1f6c3..ea40a40 100644 --- a/totrans/dl-cb_07.md +++ b/totrans/dl-cb_07.md @@ -1,4 +1,4 @@ -# 第七章。建议表情符号 +# 第七章:建议表情符号 在本章中,我们将构建一个模型,根据一小段文本建议表情符号。我们将首先基于一组带有各种情感标签的推文开发一个简单的情感分类器,如快乐、爱、惊讶等。我们首先尝试一个贝叶斯分类器,以了解基线性能,并查看这个分类器可以学到什么。然后我们将切换到卷积网络,并查看各种调整这个分类器的方法。 diff --git a/totrans/dl-cb_08.md b/totrans/dl-cb_08.md index 8ed0656..145715a 100644 --- a/totrans/dl-cb_08.md +++ b/totrans/dl-cb_08.md @@ -1,4 +1,4 @@ -# 第八章。序列到序列映射 +# 第八章:序列到序列映射 在本章中,我们将研究使用序列到序列网络来学习文本片段之间的转换。这是一种相对较新的技术,具有诱人的可能性。谷歌声称已经通过这种技术大大改进了其 Google 翻译产品;此外,它已经开源了一个版本,可以纯粹基于平行文本学习语言翻译。 diff --git a/totrans/dl-cb_09.md b/totrans/dl-cb_09.md index 13a15ac..200a8ac 100644 --- a/totrans/dl-cb_09.md +++ b/totrans/dl-cb_09.md @@ -1,4 +1,4 @@ -# 第九章。重用预训练的图像识别网络 +# 第九章:重用预训练的图像识别网络 图像识别和计算机视觉是深度学习取得重大影响的领域之一。拥有几十层甚至超过一百层的网络已经被证明在图像分类任务中非常有效,甚至超过了人类。 diff --git a/totrans/dl-cb_10.md b/totrans/dl-cb_10.md index 9fad4cb..091eafb 100644 --- a/totrans/dl-cb_10.md +++ b/totrans/dl-cb_10.md @@ -1,4 +1,4 @@ -# 第十章。构建反向图像搜索服务 +# 第十章:构建反向图像搜索服务 在前一章中,我们看到如何在我们自己的图像上使用预训练网络,首先通过在网络顶部运行分类器,然后在一个更复杂的示例中,我们只训练网络的部分来识别新的图像类别。在本章中,我们将使用类似的方法来构建一个反向图像搜索引擎,或者通过示例搜索。 diff --git a/totrans/dl-cb_11.md b/totrans/dl-cb_11.md index 0b98ca6..f308b23 100644 --- a/totrans/dl-cb_11.md +++ b/totrans/dl-cb_11.md @@ -1,4 +1,4 @@ -# 第十一章。检测多个图像 +# 第十一章:检测多个图像 在之前的章节中,我们看到了如何使用预训练分类器来检测图像并学习新的类别。然而,在所有这些实验中,我们总是假设我们的图像中只有一件事情要看。在现实世界中,情况并非总是如此——例如,我们可能有一张既有猫又有狗的图像。 diff --git a/totrans/dl-cb_12.md b/totrans/dl-cb_12.md index 8bc5491..93b1a37 100644 --- a/totrans/dl-cb_12.md +++ b/totrans/dl-cb_12.md @@ -1,4 +1,4 @@ -# 第十二章 图像风格 +# 第十二章:图像风格 在本章中,我们将探讨一些技术,以可视化卷积网络在分类图像时看到的内容。我们将通过反向运行网络来实现这一点——而不是给网络一个图像并询问它是什么,我们告诉网络要看到什么,并要求它以一种使检测到的物品更夸张的方式修改图像。 diff --git a/totrans/dl-cb_13.md b/totrans/dl-cb_13.md index 386554c..e8997b1 100644 --- a/totrans/dl-cb_13.md +++ b/totrans/dl-cb_13.md @@ -1,4 +1,4 @@ -# 第十三章。使用自动编码器生成图像 +# 第十三章:使用自动编码器生成图像 在第五章中,我们探讨了如何生成文本,以某个现有语料库的风格为基础,无论是莎士比亚的作品还是 Python 标准库中的代码,而在第十二章中,我们研究了通过优化预训练网络中通道的激活来生成图像。在本章中,我们将结合这些技术并在其基础上生成基于示例的图像。 diff --git a/totrans/dl-cb_14.md b/totrans/dl-cb_14.md index 0f05727..b3c609c 100644 --- a/totrans/dl-cb_14.md +++ b/totrans/dl-cb_14.md @@ -1,4 +1,4 @@ -# 第十四章。使用深度网络生成图标 +# 第十四章:使用深度网络生成图标 在上一章中,我们看了一下从 Quick Draw 项目生成手绘草图和从 MNIST 数据集生成数字。在本章中,我们将尝试三种类型的网络来完成一个稍微具有挑战性的任务:生成图标。 diff --git a/totrans/dl-cb_15.md b/totrans/dl-cb_15.md index c1fff37..27422b0 100644 --- a/totrans/dl-cb_15.md +++ b/totrans/dl-cb_15.md @@ -1,4 +1,4 @@ -# 第十五章。音乐和深度学习 +# 第十五章:音乐和深度学习 这本书中的其他章节都是关于图像或文本的处理。这些章节代表了深度学习研究中媒体的平衡,但这并不意味着声音处理不是有趣的,我们在过去几年中也看到了一些重大进展。语音识别和语音合成使得像亚马逊 Alexa 和谷歌 Home 这样的家庭助手成为可能。自从 Siri 推出以来,那个老的情景喜剧笑话中电话拨错号码的情节并不是很现实。 diff --git a/totrans/dl-cb_16.md b/totrans/dl-cb_16.md index b5e6f73..b22485c 100644 --- a/totrans/dl-cb_16.md +++ b/totrans/dl-cb_16.md @@ -1,4 +1,4 @@ -# 第十六章。生产机器学习系统 +# 第十六章:生产机器学习系统 构建和训练模型是一回事;在生产系统中部署您的模型是另一回事,通常被忽视。在 Python 笔记本中运行代码很好,但不是为 web 客户端提供服务的好方法。在本章中,我们将看看如何真正开始运行。 diff --git a/totrans/dl-fin_0.md b/totrans/dl-fin_0.md index b80572f..6e9b706 100644 --- a/totrans/dl-fin_0.md +++ b/totrans/dl-fin_0.md @@ -1,4 +1,4 @@ -# 第一章。介绍数据科学和交易 +# 第一章:介绍数据科学和交易 开始学习复杂主题的最佳方法是逐渐建立动力,直到你开始完成拼图。了解金融深度学习需要对基本和中级数据科学主题以及金融市场及其结构有一定的了解。 @@ -70,7 +70,7 @@ *数值数据* -这种类型的数据由反映在定期或不定期间隔内收集的某种类型信息的数字组成。示例可以包括市场数据(OHLC^(1),成交量,价差等)和财务报表数据(资产,收入,成本等)。 +这种类型的数据由反映在定期或不定期间隔内收集的某种类型信息的数字组成。示例可以包括市场数据(OHLC¹,成交量,价差等)和财务报表数据(资产,收入,成本等)。 *分类数据* @@ -509,8 +509,8 @@ plt.legend() 如果您需要 Python 的复习,请参阅第三章,这是一个基本介绍。它为书中接下来要讲的内容奠定了基础。您不需要成为 Python 大师来进行数据科学,但您必须理解代码及其引用的内容,尤其是如何调试和检测代码中的错误。 -^(1) OHLC 指的是市场数据的四个基本部分:开盘价、最高价、最低价和收盘价。 +¹ OHLC 指的是市场数据的四个基本部分:开盘价、最高价、最低价和收盘价。 -^(2) 我之所以说是暗示的是因为必须通过统计检查来验证平稳性,您将在下一章中看到。目前,假设是对数据进行差分运算得到平稳时间序列。 +² 我之所以说是暗示的是因为必须通过统计检查来验证平稳性,您将在下一章中看到。目前,假设是对数据进行差分运算得到平稳时间序列。 -^(3) Rish 算法是一种用于找到反导数的不定积分技术。 +³ Rish 算法是一种用于找到反导数的不定积分技术。 diff --git a/totrans/dl-fin_1.md b/totrans/dl-fin_1.md index 358c3c3..dd807dc 100644 --- a/totrans/dl-fin_1.md +++ b/totrans/dl-fin_1.md @@ -1,4 +1,4 @@ -# 第二章。深度学习的基本概率方法 +# 第二章:深度学习的基本概率方法 技术的兴起和可访问性使每个人都能够部署机器学习和深度学习算法进行数据分析和优化。但不幸的是,这意味着许多用户不了解不同学习模型的基础和基础知识。这使得机器学习对他们来说简直就是一个黑匣子,这是一场灾难的前兆。 diff --git a/totrans/dl-fin_2.md b/totrans/dl-fin_2.md index 88092dc..e3f2d50 100644 --- a/totrans/dl-fin_2.md +++ b/totrans/dl-fin_2.md @@ -1,4 +1,4 @@ -# 第三章。描述性统计和数据分析 +# 第三章:描述性统计和数据分析 *描述性统计*是描述数据并尽可能多地从中提取信息的领域。基本上,描述性统计可以像数据的代表一样,因为它概括了数据的倾向、行为和趋势。 @@ -1543,4 +1543,4 @@ p-value: 0.010000 `# with trend consideration` 能够进行数据分析是部署正确算法以预测时间序列未来值的关键。通过来自统计学领域的各种工具来理解数据。确保您了解什么是平稳性和相关性,因为它们在建模中提供极其有价值的见解。 -^(1) 其他方式也有,但这两种方式是最流行的表示形式。 +¹ 其他方式也有,但这两种方式是最流行的表示形式。 diff --git a/totrans/dl-fin_3.md b/totrans/dl-fin_3.md index 4bede57..ff15cda 100644 --- a/totrans/dl-fin_3.md +++ b/totrans/dl-fin_3.md @@ -1,4 +1,4 @@ -# 第四章. 深度学习的线性代数和微积分 +# 第四章:深度学习的线性代数和微积分 代数和微积分是数据科学的支柱,特别是基于这两个数学领域的概念的学习算法。本章以一种所有人都能理解的方式介绍了一些关键的代数和微积分主题。 @@ -1254,4 +1254,4 @@ x 轴和 y 轴是垂直线,指定了平面的边界以及二维笛卡尔坐标 到目前为止,您应该已经对数据科学和数学要求有一定的了解,这将让您舒适地开始。 -^(1) 矩阵也可以包含符号和表达式,但为了简单起见,让我们坚持使用数字。 +¹ 矩阵也可以包含符号和表达式,但为了简单起见,让我们坚持使用数字。 diff --git a/totrans/dl-fin_4.md b/totrans/dl-fin_4.md index 30a2ea0..63f28f0 100644 --- a/totrans/dl-fin_4.md +++ b/totrans/dl-fin_4.md @@ -1,4 +1,4 @@ -# 第五章。介绍技术分析 +# 第五章:介绍技术分析 技术分析提供了许多类型的输入,可以用于您的深度学习模型。本章介绍了这一广阔领域,以便您具备在接下来的章节中创建基于技术的学习模型所需的知识。 @@ -144,7 +144,7 @@ 反向指标 -用于淡化移动^(2),最好在横向市场中使用^(3),因为它们通常标志着初始移动的结束。因此,它们与移动的预期逆转有关(因此也与移动的反持续性有关)。 +用于淡化移动²,最好在横向市场中使用³,因为它们通常标志着初始移动的结束。因此,它们与移动的预期逆转有关(因此也与移动的反持续性有关)。 接下来的章节介绍了技术分析的两个支柱:移动平均线(趋势跟踪)和相对强弱指数(反向)。 @@ -320,10 +320,10 @@ 技术分析提供了一系列工具来对市场进行数学、图形或甚至心理(通过模式)分析。这一章标志着在开始本书的真正目的之前进行热身练习的结束,即用于交易和预测目的的机器和深度学习应用。这一章的学习成果应该是对技术分析是什么以及其局限性的深刻理解。同样,你还应该对我提出的两个主要技术指标有深刻的理解:移动平均线和相对强弱指标,因为它们构成了即将出现的模型的关键特征。 -^(1) 这假设了一个长期显示确定性特征的非随机概率。 +¹ 这假设了一个长期显示确定性特征的非随机概率。 -^(2) 反向操作是一种交易技术,你在与正在进行的趋势相反的方向进行交易,希望能够把握其结束的时机。 +² 反向操作是一种交易技术,你在与正在进行的趋势相反的方向进行交易,希望能够把握其结束的时机。 -^(3) 横盘市场通常处于均衡状态,没有特定的趋势描述它们。它们往往在彼此接近的高点和低点之间摇摆。 +³ 横盘市场通常处于均衡状态,没有特定的趋势描述它们。它们往往在彼此接近的高点和低点之间摇摆。 -^(4) 参见 J.韦尔斯·怀尔德(1978)的《技术交易系统中的新概念》,由趋势研究出版。 +⁴ 参见 J.韦尔斯·怀尔德(1978)的《技术交易系统中的新概念》,由趋势研究出版。 diff --git a/totrans/dl-fin_5.md b/totrans/dl-fin_5.md index ee6fd35..383dd79 100644 --- a/totrans/dl-fin_5.md +++ b/totrans/dl-fin_5.md @@ -1,4 +1,4 @@ -# 第六章。数据科学的 Python 入门 +# 第六章:数据科学的 Python 入门 在深入机器和深度学习领域之前还有一个停留。对于有经验的 Python 开发人员来说,本章是可选的,但对于没有扎实编程背景的任何人来说都是至关重要的。了解算法背后的直觉是一个很大的优势,但如果未能正确实现它们,这将无法让您走得更远。毕竟,这些算法需要代码来工作,而不是手动操作。确保了解基本语法以及如何操作数据和转换数据。 diff --git a/totrans/dl-lfsci_01.md b/totrans/dl-lfsci_01.md index b242200..de375ec 100644 --- a/totrans/dl-lfsci_01.md +++ b/totrans/dl-lfsci_01.md @@ -1,4 +1,4 @@ -# 第一章。为什么选择生命科学? +# 第一章:为什么选择生命科学? 虽然有许多技术倾向和对数据的热情可以追求的方向,但很少有领域能与生物医学研究的基本影响相匹配。现代医学的出现从根本上改变了人类存在的本质。在过去 20 年里,我们已经看到了许多创新,这些创新已经改变了无数个体的生活。当 HIV/AIDS 首次出现在 1981 年时,这是一种基本上致命的疾病。抗逆转录病毒疗法的持续发展已经显著延长了发达国家患者的预期寿命。其他疾病,如肝炎 C,在十年前被认为基本上无法治愈,现在可以治愈。遗传学的进步使得能够识别并希望很快治疗各种疾病。诊断和仪器的创新使得医生能够具体识别和针对人体内的疾病。许多这些突破受益于并将继续受到计算方法的推动。 @@ -56,4 +56,4 @@ 本书的最后一章探讨了深度学习在生命科学中的当前影响和未来潜力。讨论了当前努力面临的一些挑战,包括数据集的可用性和质量。我们还强调了在诊断、个性化医学、制药开发和生物学研究等许多其他领域中的机遇和潜在风险。 -^(1) Furbush, James. “Machine Learning: A Quick and Simple Definition.” [*https://www.oreilly.com/ideas/machine-learning-a-quick-and-simple-definition*](https://www.oreilly.com/ideas/machine-learning-a-quick-and-simple-definition). 2018. +¹ Furbush, James. “Machine Learning: A Quick and Simple Definition.” [*https://www.oreilly.com/ideas/machine-learning-a-quick-and-simple-definition*](https://www.oreilly.com/ideas/machine-learning-a-quick-and-simple-definition). 2018. diff --git a/totrans/dl-lfsci_02.md b/totrans/dl-lfsci_02.md index 1bf3a4d..58d8c56 100644 --- a/totrans/dl-lfsci_02.md +++ b/totrans/dl-lfsci_02.md @@ -1,4 +1,4 @@ -# 第二章。深度学习简介 +# 第二章:深度学习简介 本章的目标是介绍深度学习的基本原理。如果您已经有很多深度学习经验,可以随意略读本章,然后继续下一章。如果您经验较少,应该仔细学习本章,因为它涵盖的内容对于理解本书的其余部分至关重要。 diff --git a/totrans/dl-lfsci_03.md b/totrans/dl-lfsci_03.md index 675dba5..bdd712a 100644 --- a/totrans/dl-lfsci_03.md +++ b/totrans/dl-lfsci_03.md @@ -1,4 +1,4 @@ -# 第三章。使用 DeepChem 进行机器学习 +# 第三章:使用 DeepChem 进行机器学习 本章简要介绍了使用 DeepChem 进行机器学习的内容,DeepChem 是建立在 TensorFlow 平台之上的库,旨在促进在生命科学领域中使用深度学习。DeepChem 提供了大量适用于生命科学应用的模型、算法和数据集。在本书的其余部分,我们将使用 DeepChem 来进行案例研究。 diff --git a/totrans/dl-lfsci_04.md b/totrans/dl-lfsci_04.md index 8d0d991..693cfe7 100644 --- a/totrans/dl-lfsci_04.md +++ b/totrans/dl-lfsci_04.md @@ -315,10 +315,10 @@ highlightAtomLists=match_list) ###### 图 4-14。与 SMARTS 表达式“C[C,N,O]C”匹配的分子。 -SMARTS 还有很多内容超出了这个简短介绍的范围。建议感兴趣的读者阅读“Daylight Theory Manual”以深入了解 SMILES 和 SMARTS。^(1) 正如我们将在第十一章中看到的,SMARTS 可以用于构建复杂的查询,以识别在生物测定中可能存在问题的分子。 +SMARTS 还有很多内容超出了这个简短介绍的范围。建议感兴趣的读者阅读“Daylight Theory Manual”以深入了解 SMILES 和 SMARTS。¹ 正如我们将在第十一章中看到的,SMARTS 可以用于构建复杂的查询,以识别在生物测定中可能存在问题的分子。 # 结论 在这一章中,您已经学习了分子机器学习的基础知识。在简要回顾基础化学知识之后,我们探讨了分子在计算系统中传统的表示方法。您还学习了图卷积,这是一种在深度学习中对分子建模的较新方法,并看到了如何使用机器学习来预测重要物理性质的完整工作示例。这些技术将成为后续章节构建的基础。 -^(1) Daylight Chemical Information Systems, Inc. “Daylight Theory Manual.” [*http://www.daylight.com/dayhtml/doc/theory/*](http://www.daylight.com/dayhtml/doc/theory/). 2011. +¹ Daylight Chemical Information Systems, Inc. “Daylight Theory Manual.” [*http://www.daylight.com/dayhtml/doc/theory/*](http://www.daylight.com/dayhtml/doc/theory/). 2011. diff --git a/totrans/dl-lfsci_05.md b/totrans/dl-lfsci_05.md index 38688b8..46ff612 100644 --- a/totrans/dl-lfsci_05.md +++ b/totrans/dl-lfsci_05.md @@ -1,4 +1,4 @@ -# 第五章 生物物理机器学习 +# 第五章:生物物理机器学习 在本章中,我们将探讨如何使用深度学习来理解生物物理系统。特别是,我们将深入探讨如何预测类似药物的小分子如何与人体中感兴趣的蛋白质结合。 diff --git a/totrans/dl-lfsci_06.md b/totrans/dl-lfsci_06.md index 7e2b440..b266b46 100644 --- a/totrans/dl-lfsci_06.md +++ b/totrans/dl-lfsci_06.md @@ -1,4 +1,4 @@ -# 第六章。基因组学的深度学习 +# 第六章:基因组学的深度学习 每个生物体的核心是其基因组:包含制造生物体工作部分的所有指令的 DNA 分子。如果一个细胞是一台计算机,那么它的基因组序列就是它执行的软件。如果 DNA 可以被视为软件,信息是计算机处理的,那么我们肯定可以使用我们自己的计算机来分析这些信息并理解它是如何运作的? @@ -306,4 +306,4 @@ for i in range(20): 与生命科学的大多数其他领域相比,基因组学产生了大量的实验数据。例如,单个人类基因组序列包含超过 60 亿个碱基。传统的统计技术很难在所有这些数据中找到信号。它们经常需要简化假设,这些假设并不能反映基因组调控的复杂性。深度学习非常适合处理这些数据,并推动我们对生命细胞核心功能的理解。 -^(1) Huesken, D., J. Lange, C. Mickanin, J. Weiler, F. Asselbergs, J. Warner, B. Meloon, S. Engel, A. Rosenberg, D. Cohen, M. Labow, M. Reinhardt, F. Natt, and J. Hall, “Design of a Genome-Wide siRNA Library Using an Artificial Neural Network.” *Nature Biotechnology* 23:995–1001\. 2005\. *[`doi.org/10.1038/nbt1118`](https://doi.org/10.1038/nbt1118)*. +¹ Huesken, D., J. Lange, C. Mickanin, J. Weiler, F. Asselbergs, J. Warner, B. Meloon, S. Engel, A. Rosenberg, D. Cohen, M. Labow, M. Reinhardt, F. Natt, and J. Hall, “Design of a Genome-Wide siRNA Library Using an Artificial Neural Network.” *Nature Biotechnology* 23:995–1001\. 2005\. *[`doi.org/10.1038/nbt1118`](https://doi.org/10.1038/nbt1118)*. diff --git a/totrans/dl-lfsci_07.md b/totrans/dl-lfsci_07.md index 6ead639..e291642 100644 --- a/totrans/dl-lfsci_07.md +++ b/totrans/dl-lfsci_07.md @@ -1,4 +1,4 @@ -# 第七章 机器学习用于显微镜 +# 第七章:机器学习用于显微镜 在这一章中,我们向您介绍显微镜的深度学习技术。在这些应用中,我们试图理解显微图像的生物结构。例如,我们可能对在给定图像中某种特定类型的细胞数量感兴趣,或者我们可能试图识别特定的细胞器。显微镜是生命科学中最基本的工具之一,显微镜技术的进步极大地推动了人类科学的发展。即使对于怀疑论者来说,眼见为实,能够直观地检查细胞等生物实体,有助于对生命的基本机制有更直观的理解。对细胞核和细胞骨架的生动可视化(如图 7-1)比教科书中干燥的讨论更有助于更深入地理解。 @@ -473,10 +473,10 @@ model.fit(train_dataset, nb_epoch=50, checkpoint_interval=100) 在下一章中,我们将探讨深度学习在医学中的应用。我们将重复本章中涵盖的许多视觉深度学习技能。 -^(1) 欧阳伟等人。“深度学习大大加速了超分辨率定位显微镜。”*自然生物技术*36(2018 年 4 月):460–468。[*https://doi.org/10.1038/nbt.4106*](https://doi.org/10.1038/nbt.4106)。 +¹ 欧阳伟等人。“深度学习大大加速了超分辨率定位显微镜。”*自然生物技术*36(2018 年 4 月):460–468。[*https://doi.org/10.1038/nbt.4106*](https://doi.org/10.1038/nbt.4106)。 -^(2) 陶鑫等人。“用于深度图像去模糊的尺度循环网络。”[*https://arxiv.org/pdf/1802.01770.pdf*](https://arxiv.org/pdf/1802.01770.pdf)。2018 年。 +² 陶鑫等人。“用于深度图像去模糊的尺度循环网络。”[*https://arxiv.org/pdf/1802.01770.pdf*](https://arxiv.org/pdf/1802.01770.pdf)。2018 年。 -^(3) 克里斯滕森,埃里克。“体外标记:预测未标记图像中的荧光标记。”[*https://github.com/google/in-silico-labeling*](https://github.com/google/in-silico-labeling)。 +³ 克里斯滕森,埃里克。“体外标记:预测未标记图像中的荧光标记。”[*https://github.com/google/in-silico-labeling*](https://github.com/google/in-silico-labeling)。 -^(4) 罗森菲尔德,阿米尔,理查德·泽梅尔和约翰·K·索索斯。“房间里的大象。”[*https://arxiv.org/abs/1808.03305*](https://arxiv.org/abs/1808.03305)。2018 年。 +⁴ 罗森菲尔德,阿米尔,理查德·泽梅尔和约翰·K·索索斯。“房间里的大象。”[*https://arxiv.org/abs/1808.03305*](https://arxiv.org/abs/1808.03305)。2018 年。 diff --git a/totrans/dl-lfsci_08.md b/totrans/dl-lfsci_08.md index 1132eba..c34f128 100644 --- a/totrans/dl-lfsci_08.md +++ b/totrans/dl-lfsci_08.md @@ -1,4 +1,4 @@ -# 第八章。医学的深度学习 +# 第八章:医学的深度学习 正如我们在上一章中看到的,从视觉数据集中提取有意义的信息对于分析显微镜图像是有用的。这种处理视觉数据的能力同样对医学应用非常有用。现代医学的许多领域需要医生对医学扫描进行批判性分析。深度学习工具有可能使这种分析变得更加简单和快速(但可能更少可解释)。 diff --git a/totrans/dl-lfsci_09.md b/totrans/dl-lfsci_09.md index 43bb59f..874ad0f 100644 --- a/totrans/dl-lfsci_09.md +++ b/totrans/dl-lfsci_09.md @@ -1,4 +1,4 @@ -# 第九章。生成模型 +# 第九章:生成模型 到目前为止,我们所研究的所有问题都涉及以某种方式将输入转换为输出。您创建一个模型,该模型接受输入并产生输出。然后,您对来自数据集的输入样本进行训练,优化以产生每个样本的最佳输出。 diff --git a/totrans/dl-lfsci_10.md b/totrans/dl-lfsci_10.md index 2e16ea6..508dba4 100644 --- a/totrans/dl-lfsci_10.md +++ b/totrans/dl-lfsci_10.md @@ -1,4 +1,4 @@ -# 第十章。深度模型的解释 +# 第十章:深度模型的解释 到目前为止,我们已经看到了许多训练深度模型解决问题的例子。在每种情况下,我们收集一些数据,构建一个模型,并训练它,直到它在我们的训练和测试数据上产生正确的输出。然后我们为自己鼓掌,宣布问题已经解决,然后继续下一个问题。毕竟,我们有一个为输入数据产生正确预测的模型。我们还能想要什么? @@ -252,6 +252,6 @@ y_pred, y_std = model.predict_uncertainty(test_dataset) 深度模型被认为很难解释,但已经开发出许多有用的技术可以帮助。通过使用这些技术,您可以开始理解模型的工作原理。这有助于您决定是否信任它,并让您识别可能失败的情况。它还可能为数据提供新的见解。例如,通过分析 TF 结合模型,我们发现了特定转录因子的结合基序。 -^(1) Simonyan, K., A. Vedaldi, and A. Zisserman. “Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps.” [Arxiv.org](https://arxiv.org/abs/1312.6034). 2014. +¹ Simonyan, K., A. Vedaldi, and A. Zisserman. “Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps.” [Arxiv.org](https://arxiv.org/abs/1312.6034). 2014. -^(2) Kendall, A., and Y. Gal, “What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision?” [*https://arxiv.org/abs/1703.04977*](https://arxiv.org/abs/1703.04977). 2017. +² Kendall, A., and Y. Gal, “What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision?” [*https://arxiv.org/abs/1703.04977*](https://arxiv.org/abs/1703.04977). 2017. diff --git a/totrans/dl-lfsci_11.md b/totrans/dl-lfsci_11.md index 1713548..af17489 100644 --- a/totrans/dl-lfsci_11.md +++ b/totrans/dl-lfsci_11.md @@ -1,4 +1,4 @@ -# 第十一章。虚拟筛选工作流程示例 +# 第十一章:虚拟筛选工作流程示例 虚拟筛选可以提供一种高效且具有成本效益的方法,用于确定药物发现项目的起始点。我们可以使用计算方法来虚拟评估数百万甚至数千万分子,而不是进行昂贵的实验高通量筛选(HTS)。虚拟筛选方法通常分为两类,即基于结构的虚拟筛选和基于配体的虚拟筛选。 diff --git a/totrans/dl-lfsci_12.md b/totrans/dl-lfsci_12.md index 8ce35ff..5b1c53d 100644 --- a/totrans/dl-lfsci_12.md +++ b/totrans/dl-lfsci_12.md @@ -1,4 +1,4 @@ -# 第十二章。前景与展望 +# 第十二章:前景与展望 生命科学正在以惊人的速度发展,也许比任何其他科学领域都要快。深度学习也是如此:它是计算机科学中最令人兴奋、迅速发展的领域之一。这两者的结合有潜力以戏剧性、深远的方式改变世界。影响已经开始显现,但与未来几十年可能发生的事情相比,这些都微不足道。深度学习与生物学的结合可以带来巨大的好处,但也可能造成巨大的危害。 @@ -84,6 +84,6 @@ 无论您来自哪一方,我们希望这本书为您提供了必要的背景,以开始在将深度学习应用于生命科学中做出重要贡献。我们正处于历史上一个非凡的时刻,一系列新技术正在汇聚在一起改变世界。我们都有幸成为这个过程的一部分。 -^(1) Yamins, Daniel L. K. 等人。“性能优化的分层模型预测更高级视觉皮层中的神经反应。” 美国国家科学院院刊 111:8619–8624。[*https://doi.org/10.1073/pnas.1403112111*](https://doi.org/10.1073/pnas.1403112111)。2014 年。 +¹ Yamins, Daniel L. K. 等人。“性能优化的分层模型预测更高级视觉皮层中的神经反应。” 美国国家科学院院刊 111:8619–8624。[*https://doi.org/10.1073/pnas.1403112111*](https://doi.org/10.1073/pnas.1403112111)。2014 年。 -^(2) Kell, Alexander J. E. 等人。“一个任务优化的神经网络复制人类听觉行为,预测大脑反应,并揭示了皮层处理层次。” *神经元* 98:630–644。[*https://doi.org/10.1016/j.neuron.2018.03.044*](https://doi.org/10.1016/j.neuron.2018.03.044)。2018 年。 +² Kell, Alexander J. E. 等人。“一个任务优化的神经网络复制人类听觉行为,预测大脑反应,并揭示了皮层处理层次。” *神经元* 98:630–644。[*https://doi.org/10.1016/j.neuron.2018.03.044*](https://doi.org/10.1016/j.neuron.2018.03.044)。2018 年。 diff --git a/totrans/dl-scr_1.md b/totrans/dl-scr_1.md index ae55a40..c6d87f5 100644 --- a/totrans/dl-scr_1.md +++ b/totrans/dl-scr_1.md @@ -1,4 +1,4 @@ -# 第一章。基础 +# 第一章:基础 > 不要死记这些公式。如果你理解了概念,你可以发明自己的符号。 > @@ -112,7 +112,7 @@ a.sum(axis=0): [4 6] a.sum(axis=1): [3 7] ``` -最后,NumPy 的`ndarray`支持将 1D 数组添加到最后一个轴;对于具有`R`行和`C`列的 2D 数组`a`,这意味着我们可以添加长度为`C`的 1D 数组`b`,NumPy 将以直观的方式进行加法运算,将元素添加到`a`的每一行:^(1) +最后,NumPy 的`ndarray`支持将 1D 数组添加到最后一个轴;对于具有`R`行和`C`列的 2D 数组`a`,这意味着我们可以添加长度为`C`的 1D 数组`b`,NumPy 将以直观的方式进行加法运算,将元素添加到`a`的每一行:¹ ```py a = np.array([[1,2,3], @@ -639,17 +639,9 @@ def multiple_inputs_add_backward(x: ndarray, ## 图 -一种简单的描述这个操作的方式如[图 1-14 所示。 +一种简单的描述这个操作的方式如图 1-14 所示。 -![dlfs 0114](img/dlfs_0114.png) - -###### 图 1-14。矢量点积的图示 - -这个图示描述了一个接受两个输入的操作,这两个输入都可以是`ndarray`,并产生一个输出`ndarray`。 - -但这实际上是对许多操作进行了大量简写,这些操作发生在许多输入上。我们可以选择突出显示各个操作和输入,如图 1-15 和 1-16 所示。 - -![dlfs 0115](img/dlfs_0115.png) +![dlfs 0114###### 图 1-14。矢量点积的图示这个图示描述了一个接受两个输入的操作,这两个输入都可以是`ndarray`,并产生一个输出`ndarray`。但这实际上是对许多操作进行了大量简写,这些操作发生在许多输入上。我们可以选择突出显示各个操作和输入,如图 1-15 和 1-16 所示。![dlfs 0115](img/dlfs_0115.png) ###### 图 1-15。矩阵乘法的另一个图示 @@ -870,7 +862,7 @@ print(matrix_function_backward_1(X, W, sigmoid)) [[ 0.0852 -0.0557 -0.1121]] ``` -为了测试这个梯度是否正确,我们应该看到,在将*x*[3]增加 0.01 后,函数的*output*大约减少`0.01 × -0.1121 = -0.001121`;如果我们看到减少的数量多或少于这个量,或者出现增加,那么我们就知道我们对链式法则的推理是错误的。然而,当我们进行这个计算时,^(2),我们看到增加*x*[3]一点点确实会减少函数输出的值`0.01 × -0.1121`——这意味着我们计算的导数是正确的! +为了测试这个梯度是否正确,我们应该看到,在将*x*[3]增加 0.01 后,函数的*output*大约减少`0.01 × -0.1121 = -0.001121`;如果我们看到减少的数量多或少于这个量,或者出现增加,那么我们就知道我们对链式法则的推理是错误的。然而,当我们进行这个计算时,²,我们看到增加*x*[3]一点点确实会减少函数输出的值`0.01 × -0.1121`——这意味着我们计算的导数是正确的! 在本章结束时,我们将介绍一个建立在我们迄今为止所做的一切基础上,并直接应用于我们将在下一章中构建的模型的示例:一个计算图,从将一对二维矩阵相乘开始。 @@ -928,9 +920,9 @@ print(matrix_function_backward_1(X, W, sigmoid)) ## 图表 -从概念上讲,我们在这里所做的与我们在以前的例子中使用多个输入的计算图所做的类似;因此,[图 1-21 应该看起来很熟悉。 +从概念上讲,我们在这里所做的与我们在以前的例子中使用多个输入的计算图所做的类似;因此,图 1-21 应该看起来很熟悉。 -![dlfs 0121](img/dlfs_0121.png) +![dlfs 0121 ###### 图 1-21\. 具有复杂前向传递的函数的图表 @@ -1166,12 +1158,12 @@ dLdW = np.dot(dNdW, dSdN) 在本章之后,您应该有信心能够理解复杂的嵌套数学函数,并通过将它们概念化为一系列箱子,每个代表一个单一的组成函数,通过连接的字符串来推理出它们的工作原理。具体来说,您可以编写代码来计算这些函数的输出相对于任何输入的导数,即使涉及到包含二维`ndarray`的矩阵乘法,也能理解这些导数计算背后的数学原理。这些基础概念正是我们在下一章开始构建和训练神经网络所需要的,以及在之后的章节中从头开始构建和训练深度学习模型所需要的。继续前进! -^(1) 这将使我们能够轻松地在矩阵乘法中添加偏差。 +¹ 这将使我们能够轻松地在矩阵乘法中添加偏差。 -^(2) 在整个过程中,我将提供指向 GitHub 存储库的相关补充材料的链接,该存储库包含本书的代码,包括[本章](https://oreil.ly/2ZUwKOZ)的代码。 +² 在整个过程中,我将提供指向 GitHub 存储库的相关补充材料的链接,该存储库包含本书的代码,包括[本章](https://oreil.ly/2ZUwKOZ)的代码。 -^(3) 在接下来的部分中,我们将专注于计算`N`相对于`X`的梯度,但相对于`W`的梯度也可以通过类似的方式推理。 +³ 在接下来的部分中,我们将专注于计算`N`相对于`X`的梯度,但相对于`W`的梯度也可以通过类似的方式推理。 -^(4) 我们在“矩阵链规则”中进行了这样的操作。 +⁴ 我们在“矩阵链规则”中进行了这样的操作。 -^(5) 完整的函数可以在[书的网站](https://oreil.ly/deep-learning-github)找到;它只是前一页显示的`matrix function backward sum`函数的一个子集。 +⁵ 完整的函数可以在[书的网站](https://oreil.ly/deep-learning-github)找到;它只是前一页显示的`matrix function backward sum`函数的一个子集。 diff --git a/totrans/dl-scr_2.md b/totrans/dl-scr_2.md index 6aa7d1e..a57a9c8 100644 --- a/totrans/dl-scr_2.md +++ b/totrans/dl-scr_2.md @@ -1,4 +1,4 @@ -# 第二章 基础知识 +# 第二章:基础知识 在第一章中,我描述了理解深度学习的主要概念构建块:嵌套、连续、可微函数。我展示了如何将这些函数表示为计算图,图中的每个节点代表一个简单的函数。特别是,我演示了这种表示如何轻松地计算嵌套函数的输出相对于其输入的导数:我们只需对所有组成函数取导数,将这些导数在这些函数接收到的输入处进行评估,然后将所有结果相乘;这将导致嵌套函数的正确导数,因为链式法则。我用一些简单的例子说明了这实际上是有效的,这些函数以 NumPy 的`ndarray`作为输入,并产生`ndarray`作为输出。 @@ -18,7 +18,7 @@ # 监督学习概述 -在高层次上,机器学习可以被描述为构建能够揭示或“学习”数据中的*关系*的算法;监督学习可以被描述为机器学习的子集,专注于找到已经被测量的数据特征之间的关系。^(1) +在高层次上,机器学习可以被描述为构建能够揭示或“学习”数据中的*关系*的算法;监督学习可以被描述为机器学习的子集,专注于找到已经被测量的数据特征之间的关系。¹ 在本章中,我们将处理一个在现实世界中可能遇到的典型监督学习问题:找到房屋特征与房屋价值之间的关系。显然,诸如房间数量、平方英尺、或者与学校的距离等特征与一所房屋的居住或拥有价值之间存在某种关系。在高层次上,监督学习的目的是揭示这些关系,鉴于我们已经*测量了*这些特征。 @@ -104,25 +104,13 @@ M S E ( p batch , y batch ) = M S E ( p 1 p 2 p 3 , y 1 y 2 y 3 ) = (y 1 -p 1 ) 2 +(y 2 -p 2 ) 2 +(y 3 -p 3 ) 2 3 -得到这个我们可以称之为*L*的数字是关键的:一旦我们有了它,我们可以使用我们在[第一章中看到的所有技术来计算*L*对*W*的每个元素的*梯度*。然后*我们可以使用这些导数来更新 W 的每个元素,使 L 减少*。重复这个过程多次,我们希望能够“训练”我们的模型;在本章中,我们将看到这在实践中确实可以起作用。为了清楚地看到如何计算这些梯度,我们将完成将线性回归表示为计算图的过程。 +得到这个我们可以称之为*L*的数字是关键的:一旦我们有了它,我们可以使用我们在第一章中看到的所有技术来计算*L*对*W*的每个元素的*梯度*。然后*我们可以使用这些导数来更新 W 的每个元素,使 L 减少*。重复这个过程多次,我们希望能够“训练”我们的模型;在本章中,我们将看到这在实践中确实可以起作用。为了清楚地看到如何计算这些梯度,我们将完成将线性回归表示为计算图的过程。 ## 线性回归:更有帮助的图表(和数学) 图 2-3 展示了如何用上一章的图表来表示线性回归。 -![线性回归简单](img/dlfs_0203.png) - -###### 图 2-3。线性回归方程表达为计算图—深蓝色字母是函数的数据输入,浅蓝色 W 表示权重 - -最后,为了强调我们仍然用这个图表示一个嵌套的数学函数,我们可以表示最终计算的损失值*L*为: - -L = Λ ( ( ν ( X , W ) , Y ) - -## 加入截距 - -将模型表示为图表在概念上向我们展示了如何向模型添加截距。我们只需在最后添加一个额外步骤,涉及添加一个“偏差”,如图 2-4 所示。 - -![线性回归](img/dlfs_0204.png) +![线性回归简单###### 图 2-3。线性回归方程表达为计算图—深蓝色字母是函数的数据输入,浅蓝色 W 表示权重最后,为了强调我们仍然用这个图表示一个嵌套的数学函数,我们可以表示最终计算的损失值*L*为:L = Λ ( ( ν ( X , W ) , Y )## 加入截距将模型表示为图表在概念上向我们展示了如何向模型添加截距。我们只需在最后添加一个额外步骤,涉及添加一个“偏差”,如图 2-4 所示。![线性回归](img/dlfs_0204.png) ###### 图 2-4。线性回归的计算图,最后添加了一个偏置项 @@ -482,11 +470,11 @@ array([-1.0084, 0.7097, 0.2731, 0.7161, -2.2163, 2.3737, 0.7156, 用这些单独的步骤来表示事物是否让你对正在发生的事情有直观的理解?这个问题涉及到本书的一个关键主题:要完全理解神经网络,我们必须看到多种表示,每一种都突出神经网络工作的不同方面。图 2-10 中的表示并没有给出关于网络“结构”的直觉,但它清楚地指示了如何训练这样一个模型:在反向传播过程中,我们将计算每个组成函数的偏导数,在该函数的输入处评估,然后通过简单地将所有这些导数相乘来计算损失相对于每个权重的梯度——就像我们在第一章中看到的简单链式法则示例中一样。 -然而,还有另一种更标准的表示神经网络的方式:我们可以将我们原始特征中的每一个表示为圆圈。由于我们有 13 个特征,我们需要 13 个圆圈。然后我们需要 13 个圆圈来表示我们正在进行的“线性回归- Sigmoid”操作的 13 个输出。此外,每个这些圆圈都是我们原始 13 个特征的函数,所以我们需要将第一组 13 个圆圈中的所有圆圈连接到第二组中的所有圆圈。^(6) +然而,还有另一种更标准的表示神经网络的方式:我们可以将我们原始特征中的每一个表示为圆圈。由于我们有 13 个特征,我们需要 13 个圆圈。然后我们需要 13 个圆圈来表示我们正在进行的“线性回归- Sigmoid”操作的 13 个输出。此外,每个这些圆圈都是我们原始 13 个特征的函数,所以我们需要将第一组 13 个圆圈中的所有圆圈连接到第二组中的所有圆圈。⁶ 最后,所有这些 13 个输出都被用来做一个最终的预测,所以我们会再画一个圆圈来代表最终的预测,以及 13 条线显示这些“中间输出”与最终预测的“连接”。 -图 2-11 显示了最终的图表。^(7) +图 2-11 显示了最终的图表。⁷ ![神经网络表示 2](img/dlfs_0211.png) diff --git a/totrans/dl-scr_3.md b/totrans/dl-scr_3.md index 81397a3..b95da8a 100644 --- a/totrans/dl-scr_3.md +++ b/totrans/dl-scr_3.md @@ -1,4 +1,4 @@ -# 第三章。从头开始的深度学习 +# 第三章:从头开始的深度学习 您可能没有意识到,但现在您已经具备回答本书开头提出的关于深度学习模型的关键问题的所有数学和概念基础:您了解*神经网络*是如何工作的——涉及矩阵乘法、损失和相对于该损失的偏导数的计算,以及这些计算为什么有效(即微积分中的链式法则)。通过从第一原理构建神经网络,将它们表示为一系列“构建块”,我们实现了这种理解。在本章中,您将学习将这些构建块本身表示为抽象的 Python 类,然后使用这些类构建深度学习模型;到本章结束时,您确实将完成“从头开始的深度学习”! @@ -178,7 +178,7 @@ class ParamOperation(Operation): 最后,让我们将我们迄今所见的内容与您可能之前听过的概念之间建立最后一个连接:每个层可以说具有等于*表示该层输出中每个观察的向量的维度*的*神经元*数量。因此,前一个示例中的神经网络可以被认为在输入层有 13 个神经元,然后在隐藏层中有 13 个神经元(再次),在输出层中有一个神经元。 -大脑中的神经元具有这样的特性,它们可以从许多其他神经元接收输入,只有当它们累积接收到的信号达到一定的“激活能量”时,它们才会“发射”并向前发送信号。神经网络的神经元具有类似的属性:它们确实根据其输入向前发送信号,但是输入仅通过非线性函数转换为输出。因此,这个非线性函数被称为*激活函数*,从中出来的值被称为该层的*激活*。^(1) +大脑中的神经元具有这样的特性,它们可以从许多其他神经元接收输入,只有当它们累积接收到的信号达到一定的“激活能量”时,它们才会“发射”并向前发送信号。神经网络的神经元具有类似的属性:它们确实根据其输入向前发送信号,但是输入仅通过非线性函数转换为输出。因此,这个非线性函数被称为*激活函数*,从中出来的值被称为该层的*激活*。¹ 现在我们已经定义了层,我们可以陈述更传统的深度学习定义:*深度学习模型是具有多个隐藏层的神经网络。* @@ -418,7 +418,7 @@ class Layer(object): 我们称我们一直在处理的`Operation`为`WeightMultiply`,`BiasAdd`等等。到目前为止我们一直在使用的层应该叫什么?`LinearNonLinear`层? -这一层的一个定义特征是*每个输出神经元都是所有输入神经元的函数*。这就是矩阵乘法真正做的事情:如果矩阵是n in行乘以n out列,那么乘法本身计算的是n out个新特征,每个特征都是*所有*n in个输入特征的加权线性组合。^(2) 因此,这些层通常被称为*全连接*层;最近,在流行的`Keras`库中,它们也经常被称为`Dense`层,这是一个更简洁的术语,传达了相同的概念。 +这一层的一个定义特征是*每个输出神经元都是所有输入神经元的函数*。这就是矩阵乘法真正做的事情:如果矩阵是n in行乘以n out列,那么乘法本身计算的是n out个新特征,每个特征都是*所有*n in个输入特征的加权线性组合。² 因此,这些层通常被称为*全连接*层;最近,在流行的`Keras`库中,它们也经常被称为`Dense`层,这是一个更简洁的术语,传达了相同的概念。 既然我们知道该如何称呼它以及为什么,让我们根据我们已经定义的操作来定义`Dense`层 - 正如您将看到的,由于我们如何定义了我们的`Layer`基类,我们所需要做的就是在`_setup_layer`函数中将前一节中定义的`Operation`作为列表放入其中。 @@ -712,7 +712,7 @@ class NeuralNetwork(object): yield from layer.param_grads ``` -有了这个`NeuralNetwork`类,我们可以以更模块化、灵活的方式实现上一章中的模型,并定义其他模型来表示输入和输出之间的复杂非线性关系。例如,这里是如何轻松实例化我们在上一章中介绍的两个模型——线性回归和神经网络:^(3) +有了这个`NeuralNetwork`类,我们可以以更模块化、灵活的方式实现上一章中的模型,并定义其他模型来表示输入和输出之间的复杂非线性关系。例如,这里是如何轻松实例化我们在上一章中介绍的两个模型——线性回归和神经网络:³ ```py linear_regression = NeuralNetwork( @@ -1005,12 +1005,12 @@ Root mean squared error 3.82 # 结论和下一步 -在下一章中,我将介绍几种技巧,这些技巧对于让我们的模型在面对比这个简单问题更具挑战性的问题时能够正确训练是至关重要的^(4)——特别是定义其他`Loss`和`Optimizer`。我还将介绍调整学习率和在整个训练过程中修改学习率的其他技巧,并展示如何将这些技巧融入`Optimizer`和`Trainer`类中。最后,我们将看到 Dropout,这是一种新型的`Operation`,已被证明对增加深度学习模型的训练稳定性至关重要。继续前进! +在下一章中,我将介绍几种技巧,这些技巧对于让我们的模型在面对比这个简单问题更具挑战性的问题时能够正确训练是至关重要的⁴——特别是定义其他`Loss`和`Optimizer`。我还将介绍调整学习率和在整个训练过程中修改学习率的其他技巧,并展示如何将这些技巧融入`Optimizer`和`Trainer`类中。最后,我们将看到 Dropout,这是一种新型的`Operation`,已被证明对增加深度学习模型的训练稳定性至关重要。继续前进! -^(1) 在所有激活函数中,`sigmoid`函数最接近大脑中神经元的实际激活,它将输入映射到 0 到 1 之间,但一般来说,激活函数可以是任何单调的非线性函数。 +¹ 在所有激活函数中,`sigmoid`函数最接近大脑中神经元的实际激活,它将输入映射到 0 到 1 之间,但一般来说,激活函数可以是任何单调的非线性函数。 -^(2) 正如我们将在第五章中看到的,这并不适用于所有层:例如,在*卷积*层中,每个输出特征是输入特征的*一个小子集*的组合。 +² 正如我们将在第五章中看到的,这并不适用于所有层:例如,在*卷积*层中,每个输出特征是输入特征的*一个小子集*的组合。 -^(3) 学习率 0.01 并不特殊;我们只是在写前一章时在实验过程中发现它是最佳的。 +³ 学习率 0.01 并不特殊;我们只是在写前一章时在实验过程中发现它是最佳的。 -^(4) 即使在这个简单的问题上,稍微改变超参数可能会导致深度学习模型无法击败两层神经网络。克隆[GitHub 存储库](https://oreil.ly/deep-learning-github)并尝试一下吧! +⁴ 即使在这个简单的问题上,稍微改变超参数可能会导致深度学习模型无法击败两层神经网络。克隆[GitHub 存储库](https://oreil.ly/deep-learning-github)并尝试一下吧! diff --git a/totrans/dl-scr_4.md b/totrans/dl-scr_4.md index 9d96f68..fcb2de5 100644 --- a/totrans/dl-scr_4.md +++ b/totrans/dl-scr_4.md @@ -1,4 +1,4 @@ -# 第四章. 扩展 +# 第四章:扩展 在上一章中,经过两章的推理,我们从第一原则出发,探讨了深度学习模型是什么以及它们应该如何工作,最终构建了我们的第一个深度学习模型,并训练它解决了相对简单的问题,即根据房屋的数值特征预测房价。然而,在大多数实际问题中,成功训练深度学习模型并不那么容易:虽然这些模型可以理论上找到任何可以被定义为监督学习问题的问题的最优解,但在实践中它们经常失败,而且确实很少有理论保证表明给定的模型架构实际上会找到一个好的解决方案。尽管如此,还是有一些被充分理解的技术可以使神经网络训练更有可能成功;这将是本章的重点。 @@ -94,13 +94,13 @@ array([0.84, 0.11, 0.04]) CE ( p i , y i ) = - l o g ( 1 - p i ) if y i = 0 - l o g ( p i ) if y i = 1 -现在我们可以更容易地将其分解。如果*y*=0,那么在区间 0 到 1 上的这个损失值与均方误差损失值的图像如[图 4-4 所示。 +现在我们可以更容易地将其分解。如果*y*=0,那么在区间 0 到 1 上的这个损失值与均方误差损失值的图像如图 4-4 所示。 -![dlfs 0404](img/dlfs_0404.png) +![dlfs 0404 ###### 图 4-4。当y = 0时的交叉熵损失与 MSE -不仅在这个区间内交叉熵损失的惩罚要高得多,^(2)而且它们的增长速度更快;事实上,当我们的预测与目标之间的差距接近 1 时,交叉熵损失的值会趋近于无穷!当*y* = 1 时的图形类似,只是“翻转”了(即,它围绕*x* = 0.5 的线旋转了 180 度)。 +不仅在这个区间内交叉熵损失的惩罚要高得多,²而且它们的增长速度更快;事实上,当我们的预测与目标之间的差距接近 1 时,交叉熵损失的值会趋近于无穷!当*y* = 1 时的图形类似,只是“翻转”了(即,它围绕*x* = 0.5 的线旋转了 180 度)。 因此,对于我们知道输出将在 0 和 1 之间的问题,交叉熵损失产生的梯度比均方误差更陡。真正的魔力发生在我们将这种损失与 softmax 函数结合时——首先将神经网络输出通过 softmax 函数进行归一化,使值相加为 1,然后将得到的概率输入到交叉熵损失函数中。 @@ -127,7 +127,7 @@ loss_grad = softmax_x - y ### 代码 -回顾[第三章,任何`Loss`类都应该接收两个 2D 数组,一个是网络的预测,另一个是目标。每个数组中的行数是批量大小,列数是分类问题中的类别数`n`;每个数组中的一行代表数据集中的一个观察值,行中的`n`个值代表神经网络对该观察值属于每个`n`类的概率的最佳猜测。因此,我们将需要对`prediction`数组中的*每一行*应用`softmax`。这会导致一个潜在的问题:接下来我们将把结果数值输入`log`函数来计算损失。这应该让你担心,因为*log*(*x*)当*x*趋近于 0 时会趋向于负无穷,同样地,1 - *x*当*x*趋近于 1 时会趋向于无穷。为了防止可能导致数值不稳定的极大损失值,我们将裁剪 softmax 函数的输出,使其不小于 10^(–7)且不大于 10⁷。 +回顾第三章,任何`Loss`类都应该接收两个 2D 数组,一个是网络的预测,另一个是目标。每个数组中的行数是批量大小,列数是分类问题中的类别数`n`;每个数组中的一行代表数据集中的一个观察值,行中的`n`个值代表神经网络对该观察值属于每个`n`类的概率的最佳猜测。因此,我们将需要对`prediction`数组中的*每一行*应用`softmax`。这会导致一个潜在的问题:接下来我们将把结果数值输入`log`函数来计算损失。这应该让你担心,因为*log*(*x*)当*x*趋近于 0 时会趋向于负无穷,同样地,1 - *x*当*x*趋近于 1 时会趋向于无穷。为了防止可能导致数值不稳定的极大损失值,我们将裁剪 softmax 函数的输出,使其不小于 10^(–7)且不大于 10⁷。 最后,我们可以把所有东西放在一起! @@ -169,7 +169,7 @@ softmax_cross_entropy_loss = ( + 对模型产生了“正则化”效果,将中间特征强制限制在一个有限范围内,具体在 0 和 1 之间 -然而,Sigmoid 也有一个缺点,类似于均方误差损失的缺点:*在反向传播过程中产生相对平坦的梯度*。在反向传播过程中传递给 Sigmoid 函数(或任何函数)的梯度表示函数的*输出*最终对损失的影响有多大;因为 Sigmoid 函数的最大斜率为 0.25,这些梯度在向后传递到模型中的前一个操作时将*最多*被除以 4。更糟糕的是,当 Sigmoid 函数的输入小于-2 或大于 2 时,这些输入接收到的梯度几乎为 0,因为在*x* = -2 或*x* = 2 时,*Sigmoid*(*x*)几乎是平的。这意味着影响这些输入的任何参数将接收到较小的梯度,结果我们的网络可能学习速度较慢。^(3)此外,如果在神经网络的连续层中使用多个 Sigmoid 激活函数,这个问题将会加剧,进一步减少神经网络中较早的权重可能接收到的梯度。 +然而,Sigmoid 也有一个缺点,类似于均方误差损失的缺点:*在反向传播过程中产生相对平坦的梯度*。在反向传播过程中传递给 Sigmoid 函数(或任何函数)的梯度表示函数的*输出*最终对损失的影响有多大;因为 Sigmoid 函数的最大斜率为 0.25,这些梯度在向后传递到模型中的前一个操作时将*最多*被除以 4。更糟糕的是,当 Sigmoid 函数的输入小于-2 或大于 2 时,这些输入接收到的梯度几乎为 0,因为在*x* = -2 或*x* = 2 时,*Sigmoid*(*x*)几乎是平的。这意味着影响这些输入的任何参数将接收到较小的梯度,结果我们的网络可能学习速度较慢。³此外,如果在神经网络的连续层中使用多个 Sigmoid 激活函数,这个问题将会加剧,进一步减少神经网络中较早的权重可能接收到的梯度。 “另一个极端”的激活函数会是什么样子? @@ -177,19 +177,7 @@ softmax_cross_entropy_loss = ( 修正线性单元(ReLU)激活是一种常用的激活函数,具有与 Sigmoid 相反的优缺点。如果*x*小于 0,则简单地定义 ReLU 为 0,否则为*x*。这在图 4-5 中有所展示。 -![dlfs 0405](img/dlfs_0405.png) - -###### 图 4-5。ReLU 激活 - -这是一个“有效”的激活函数,因为它是单调的和非线性的。它产生比 Sigmoid 大得多的梯度——如果函数的输入大于 0,则为 1,否则为 0,平均为 0.5——而 Sigmoid 能产生的*最大*梯度为 0.25。ReLU 激活在深度神经网络架构中非常受欢迎,因为它的缺点(在小于或大于 0 的值之间绘制了一个尖锐的、有些任意的区别)可以通过其他技术来解决,包括本章将介绍的一些技术,而它的好处(产生大梯度)对于训练深度神经网络架构中的权重至关重要。 - -然而,有一种激活函数介于这两者之间,我们将在本章的演示中使用:Tanh。 - -### 一个中庸之道:Tanh - -Tanh 函数的形状与 Sigmoid 函数类似,但将输入映射到-1 到 1 之间的值。图 4-6 展示了这个函数。 - -![dlfs 0406](img/dlfs_0406.png) +![dlfs 0405###### 图 4-5。ReLU 激活这是一个“有效”的激活函数,因为它是单调的和非线性的。它产生比 Sigmoid 大得多的梯度——如果函数的输入大于 0,则为 1,否则为 0,平均为 0.5——而 Sigmoid 能产生的*最大*梯度为 0.25。ReLU 激活在深度神经网络架构中非常受欢迎,因为它的缺点(在小于或大于 0 的值之间绘制了一个尖锐的、有些任意的区别)可以通过其他技术来解决,包括本章将介绍的一些技术,而它的好处(产生大梯度)对于训练深度神经网络架构中的权重至关重要。然而,有一种激活函数介于这两者之间,我们将在本章的演示中使用:Tanh。### 一个中庸之道:TanhTanh 函数的形状与 Sigmoid 函数类似,但将输入映射到-1 到 1 之间的值。图 4-6 展示了这个函数。![dlfs 0406](img/dlfs_0406.png) ###### 图 4-6。Tanh 激活 @@ -401,7 +389,7 @@ Loss increased after epoch 50, final loss was 0.338, using the model from epoch The model validation accuracy is: 95.51% ``` -您可以看到损失明显降低,准确率明显提高,这只是将动量添加到我们的参数更新规则中的结果!^(6) +您可以看到损失明显降低,准确率明显提高,这只是将动量添加到我们的参数更新规则中的结果!⁶ 当然,修改每次迭代中的参数更新的另一种方法是修改学习率;虽然我们可以手动更改初始学习率,但我们也可以使用某些规则在训练过程中自动衰减学习率。接下来将介绍最常见的这种规则。 @@ -557,7 +545,7 @@ The model validation accuracy is: 96.06% 1 n out -作为这些之间的折衷,最常被称为*Glorot 初始化*^(7)涉及将每一层中权重的方差初始化为: +作为这些之间的折衷,最常被称为*Glorot 初始化*⁷涉及将每一层中权重的方差初始化为: 2 n in +n out @@ -777,18 +765,18 @@ The model validation accuracy is: 96.52% 接下来,我们将讨论针对特定领域专门设计的高级架构,从卷积神经网络开始,这些网络专门用于理解图像数据。继续! -^(1) 此外,正如我们在第三章中看到的,我们将这些梯度乘以学习率,以便更精细地控制权重的变化。 +¹ 此外,正如我们在第三章中看到的,我们将这些梯度乘以学习率,以便更精细地控制权重的变化。 -^(2) 我们可以更具体一些:在区间 0 到 1 上,- l o g ( 1 - x ) 的平均值是 1,而在相同区间上,*x*²的平均值只是1 3。 +² 我们可以更具体一些:在区间 0 到 1 上,- l o g ( 1 - x ) 的平均值是 1,而在相同区间上,*x*²的平均值只是1 3。 -^(3) 要直观地理解为什么会发生这种情况:想象一下一个权重*w*正在为一个特征*f*做出贡献(使得f = w × x 1 + ...),在我们的神经网络的前向传播过程中,对于某个观察值,*f* = -10。因为在*x* = -10 时,*sigmoid*(*x*)非常平坦,改变*w*的值几乎不会对模型预测产生影响,因此也不会对损失产生影响。 +³ 要直观地理解为什么会发生这种情况:想象一下一个权重*w*正在为一个特征*f*做出贡献(使得f = w × x 1 + ...),在我们的神经网络的前向传播过程中,对于某个观察值,*f* = -10。因为在*x* = -10 时,*sigmoid*(*x*)非常平坦,改变*w*的值几乎不会对模型预测产生影响,因此也不会对损失产生影响。 -^(4) 例如,TensorFlow 的 MNIST 分类教程使用`softmax_cross_entropy_with_logits`函数,而 PyTorch 的`nn.CrossEntropyLoss`实际上在其中计算 softmax 函数。 +⁴ 例如,TensorFlow 的 MNIST 分类教程使用`softmax_cross_entropy_with_logits`函数,而 PyTorch 的`nn.CrossEntropyLoss`实际上在其中计算 softmax 函数。 -^(5) 您可能会认为 softmax 交叉熵损失在这里获得了“不公平的优势”,因为 softmax 函数对其接收到的值进行了归一化,使它们相加为 1,而均方误差损失只是得到了通过`sigmoid`函数传递的 10 个输入,并没有被归一化为 1。然而,在[书的网站](https://oreil.ly/2H7rJvf)上,我展示了即使将输入归一化为均方误差损失,使其对每个观察值求和为 1,均方误差仍然比 softmax 交叉熵损失表现更差。 +⁵ 您可能会认为 softmax 交叉熵损失在这里获得了“不公平的优势”,因为 softmax 函数对其接收到的值进行了归一化,使它们相加为 1,而均方误差损失只是得到了通过`sigmoid`函数传递的 10 个输入,并没有被归一化为 1。然而,在[书的网站](https://oreil.ly/2H7rJvf)上,我展示了即使将输入归一化为均方误差损失,使其对每个观察值求和为 1,均方误差仍然比 softmax 交叉熵损失表现更差。 -^(6) 此外,动量只是我们可以利用当前数据批次之外的梯度信息来更新参数的一种方式;我们在附录 A 中简要介绍了其他更新规则,您可以在[书的 GitHub 存储库](https://oreil.ly/2MhdQ1B)中看到这些更新规则的实现。 +⁶ 此外,动量只是我们可以利用当前数据批次之外的梯度信息来更新参数的一种方式;我们在附录 A 中简要介绍了其他更新规则,您可以在[书的 GitHub 存储库](https://oreil.ly/2MhdQ1B)中看到这些更新规则的实现。 -^(7) 这样被称为是因为它是由 Glorot 和 Bengio 在 2010 年的一篇论文中提出的:[“理解训练深度前馈神经网络的困难”](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf)。 +⁷ 这样被称为是因为它是由 Glorot 和 Bengio 在 2010 年的一篇论文中提出的:[“理解训练深度前馈神经网络的困难”](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf)。 -^(8) 欲了解更多信息,请参阅 G. E. Hinton 等人的[“通过防止特征检测器的共适应来改进神经网络”](https://arxiv.org/pdf/1207.0580.pdf)。 +⁸ 欲了解更多信息,请参阅 G. E. Hinton 等人的[“通过防止特征检测器的共适应来改进神经网络”](https://arxiv.org/pdf/1207.0580.pdf)。 diff --git a/totrans/dl-scr_5.md b/totrans/dl-scr_5.md index a856d7d..f964390 100644 --- a/totrans/dl-scr_5.md +++ b/totrans/dl-scr_5.md @@ -1,4 +1,4 @@ -# 第五章。卷积神经网络 +# 第五章:卷积神经网络 在本章中,我们将介绍卷积神经网络(CNNs)。CNNs 是用于预测的标准神经网络架构,当输入观察数据是图像时,这在各种神经网络应用中都是适用的情况。到目前为止,在本书中,我们专注于全连接神经网络,我们将其实现为一系列`Dense`层。因此,我们将通过回顾这些网络的一些关键元素来开始本章,并用此来激发我们为什么可能想要为图像使用不同的架构。然后,我们将以与本书中介绍其他概念类似的方式介绍 CNNs:我们将首先讨论它们在高层次上的工作原理,然后转向在低层次上讨论它们,最后通过编写从头开始的卷积操作的代码详细展示它们的工作方式。到本章结束时,您将对 CNNs 的工作原理有足够深入的理解,能够使用它们来解决问题,并自行学习高级 CNN 变体,如 ResNets、DenseNets 和 Octave Convolutions。 @@ -52,9 +52,9 @@ ## 多通道卷积操作 -回顾一下:卷积神经网络与常规神经网络的不同之处在于它们创建了数量级更多的特征,并且每个特征仅是来自输入图像的一个小块的函数。现在我们可以更具体:从*n*个输入像素开始,刚刚描述的卷积操作将为输入图像中的每个位置创建*n*个输出特征。在神经网络的卷积`Layer`中实际发生的事情更进一步:在那里,我们将创建*f*组*n*个特征,*每个*都有一个对应的(最初是随机的)权重集,定义了在输入图像的每个位置检测到的视觉模式,这将在特征图中捕获。这*f*个特征图将通过*f*个卷积操作创建。这在[图 5-3 中有所体现。 +回顾一下:卷积神经网络与常规神经网络的不同之处在于它们创建了数量级更多的特征,并且每个特征仅是来自输入图像的一个小块的函数。现在我们可以更具体:从*n*个输入像素开始,刚刚描述的卷积操作将为输入图像中的每个位置创建*n*个输出特征。在神经网络的卷积`Layer`中实际发生的事情更进一步:在那里,我们将创建*f*组*n*个特征,*每个*都有一个对应的(最初是随机的)权重集,定义了在输入图像的每个位置检测到的视觉模式,这将在特征图中捕获。这*f*个特征图将通过*f*个卷积操作创建。这在图 5-3 中有所体现。 -![神经网络图示](img/dlfs_0503.png) +![神经网络图示 ###### 图 5-3。比以前更具体,对于具有 n 个像素的输入图像,我们定义一个输出,其中包含 f 个特征图,每个特征图的大小与原始图像大致相同,总共有 n×f 个输出神经元用于图像,每个神经元仅是原始图像的一个小块的函数 @@ -132,7 +132,7 @@ 要找到答案,回想一下,每个神经元只是表示图像中是否存在特定视觉特征组合(如果这是一个深度卷积神经网络,则可能是特征的特征或特征的特征的特征)在图像的给定位置。这与如果我们将全连接神经网络应用于此图像时学习的特征没有区别:第一个全连接层将表示单个像素的特征,第二个将表示这些特征的特征,依此类推。在全连接架构中,我们只需将网络学习的每个“特征的特征”视为单个神经元,用作预测图像属于哪个类别的输入。 -事实证明,我们可以用卷积神经网络做同样的事情——我们将*m*个特征图视为m × i m a g e height × i m a g e width个神经元,并使用`Flatten`操作将这三个维度(通道数、图像高度和图像宽度)压缩成一个一维向量,然后我们可以使用简单的矩阵乘法进行最终预测。这样做的直觉是,每个单独的神经元*基本上代表与全连接层中的神经元相同的“类型”*——具体来说,表示在图像的给定位置是否存在给定的视觉特征(或特征组合)——因此我们可以在神经网络的最后一层中以相同的方式处理它们。^(4) +事实证明,我们可以用卷积神经网络做同样的事情——我们将*m*个特征图视为m × i m a g e height × i m a g e width个神经元,并使用`Flatten`操作将这三个维度(通道数、图像高度和图像宽度)压缩成一个一维向量,然后我们可以使用简单的矩阵乘法进行最终预测。这样做的直觉是,每个单独的神经元*基本上代表与全连接层中的神经元相同的“类型”*——具体来说,表示在图像的给定位置是否存在给定的视觉特征(或特征组合)——因此我们可以在神经网络的最后一层中以相同的方式处理它们。⁴ 我们将在本章后面看到如何实现`Flatten`层。但在我们深入实现之前,让我们讨论另一种在许多 CNN 架构中很重要的层,尽管本书不会详细介绍它。 @@ -152,7 +152,7 @@ > 神经网络的输入是一个 19 × 19 × 17 的图像堆栈,包括 17 个二进制特征平面。8 个特征平面 *X*[t] 包含二进制值,指示当前玩家的棋子的存在(如果时间步 t 的交叉点 *i* 包含玩家颜色的棋子,则为 X t i = 1;如果交叉点为空,包含对手的棋子,或者 t < 0,则为 0)。另外 8 个特征平面 *Y*[t] 表示对手棋子的相应特征。最后一个特征平面 C 表示要下的颜色,其常量值为 1(黑色下棋)或 0(白色下棋)。这些平面被连接在一起以给出输入特征 *s*[t] = *X*[t], *Y*[t], *X*[t – 1], *Y*[t – 1], …, *X*[t – 7], *Y*[t – 7], *C*。历史特征 *X*[t], *Y*[t] 是必要的,因为围棋不仅仅通过当前的棋子就能完全观察到,重复是被禁止的;同样,颜色特征 C 是必要的,因为贴目是不可观察的。 -换句话说,他们基本上将棋盘表示为一个 19 × 19 像素的“图像”,有 17 个通道!他们使用其中的 16 个通道来编码每个玩家之前 8 步所发生的情况;这是必要的,以便他们可以编码防止重复之前步骤的规则。第 17 个通道实际上是一个 19 × 19 的网格,要么全是 1,要么全是 0,取决于轮到谁走。^(7) CNN 和它们的多通道卷积操作主要应用于图像,但更一般的是,用多个“通道”表示沿某些空间维度排列的数据的想法即使超出图像也是适用的。 +换句话说,他们基本上将棋盘表示为一个 19 × 19 像素的“图像”,有 17 个通道!他们使用其中的 16 个通道来编码每个玩家之前 8 步所发生的情况;这是必要的,以便他们可以编码防止重复之前步骤的规则。第 17 个通道实际上是一个 19 × 19 的网格,要么全是 1,要么全是 0,取决于轮到谁走。⁷ CNN 和它们的多通道卷积操作主要应用于图像,但更一般的是,用多个“通道”表示沿某些空间维度排列的数据的想法即使超出图像也是适用的。 然而,为了真正理解多通道卷积操作,您必须从头开始实现它,接下来的几节将详细描述这个过程。 @@ -885,14 +885,14 @@ Model validation accuracy after 1 epoch is 90.50% 这些也被称为*内核*。 -^(4) 这就是为什么重要理解卷积操作的输出,既可以看作是创建一定数量的滤波器映射(比如说,m),也可以看作是创建 m × i m a g e height × i m a g e width 个独立的神经元。正如在神经网络中一样,同时在脑海中保持多个层次的解释,并看到它们之间的联系是关键。 +⁴ 这就是为什么重要理解卷积操作的输出,既可以看作是创建一定数量的滤波器映射(比如说,m),也可以看作是创建 m × i m a g e height × i m a g e width 个独立的神经元。正如在神经网络中一样,同时在脑海中保持多个层次的解释,并看到它们之间的联系是关键。 -^(5) 请参阅[原始 ResNet 论文](http://tiny.cc/dlfs_resnet_paper),作者是 Kaiming He 等人,题目是“用于图像识别的深度残差学习”。 +⁵ 请参阅[原始 ResNet 论文](http://tiny.cc/dlfs_resnet_paper),作者是 Kaiming He 等人,题目是“用于图像识别的深度残差学习”。 -^(6) DeepMind(David Silver 等人),[*无需人类知识掌握围棋*](https://oreil.ly/wUpMW),2017 年。 +⁶ DeepMind(David Silver 等人),[*无需人类知识掌握围棋*](https://oreil.ly/wUpMW),2017 年。 -^(7) 一年后,DeepMind 发布了使用类似表示法的结果,只是这一次,为了编码更复杂的国际象棋规则,输入有 119 个通道!参见 DeepMind(David Silver 等人),[“一个通用的强化学习算法,通过自我对弈掌握国际象棋、将棋和围棋”](https://oreil.ly/E6ydw)。 +⁷ 一年后,DeepMind 发布了使用类似表示法的结果,只是这一次,为了编码更复杂的国际象棋规则,输入有 119 个通道!参见 DeepMind(David Silver 等人),[“一个通用的强化学习算法,通过自我对弈掌握国际象棋、将棋和围棋”](https://oreil.ly/E6ydw)。 -^(8) 请在[书籍的网站](https://oreil.ly/2H99xkJ)上查看这些内容的完整实现。 +⁸ 请在[书籍的网站](https://oreil.ly/2H99xkJ)上查看这些内容的完整实现。 -^(9) 完整的代码可以在[书籍的 GitHub 仓库](https://oreil.ly/2H99xkJ)的本章节中找到。 +⁹ 完整的代码可以在[书籍的 GitHub 仓库](https://oreil.ly/2H99xkJ)的本章节中找到。 diff --git a/totrans/dl-scr_6.md b/totrans/dl-scr_6.md index fa1f1c7..f917fc5 100644 --- a/totrans/dl-scr_6.md +++ b/totrans/dl-scr_6.md @@ -1,4 +1,4 @@ -# 第六章。循环神经网络 +# 第六章:循环神经网络 在这一章中,我们将介绍循环神经网络(RNNs),这是一类用于处理数据序列的神经网络架构。到目前为止,我们看到的神经网络将它们接收到的每一批数据视为一组独立的观察结果;在我们在第四章中看到的全连接神经网络或第五章中看到的卷积神经网络中,没有某些 MNIST 数字在其他数字之前或之后到达的概念。然而,许多种类的数据在本质上是有序的,无论是时间序列数据,在工业或金融背景下可能会处理的数据,还是语言数据,其中字符、单词、句子等是有序的。循环神经网络旨在学习如何接收*这些数据序列*并返回一个正确的预测作为输出,无论这个正确的预测是关于第二天金融资产价格的还是关于句子中下一个单词的。 @@ -778,7 +778,7 @@ def forward(self, ## LSTMNodes -长短期记忆单元,或 LSTMs,是香草 RNN 单元最受欢迎的变体。部分原因是它们是在深度学习的早期阶段,即 1997 年发明的^(6),而对于 LSTM 替代方案如 GRUs 的调查在过去几年中才加速进行(例如,GRUs 是在 2014 年提出的)。 +长短期记忆单元,或 LSTMs,是香草 RNN 单元最受欢迎的变体。部分原因是它们是在深度学习的早期阶段,即 1997 年发明的⁶,而对于 LSTM 替代方案如 GRUs 的调查在过去几年中才加速进行(例如,GRUs 是在 2014 年提出的)。 与 GRUs 一样,LSTMs 的动机是为了让 RNN 能够在接收新输入时“重置”或“忘记”其隐藏状态。在 GRUs 中,通过将输入和隐藏状态通过一系列门传递,以及使用这些门计算“建议”的新隐藏状态—`self.h_bar`,使用门`self.r`计算—然后使用建议的新隐藏状态和旧隐藏状态的加权平均值计算最终隐藏状态,由更新门控制: @@ -786,7 +786,7 @@ def forward(self, self.H_out = self.u * self.H_in + (1 - self.u) * self.h_bar ``` -相比之下,LSTMs*使用一个单独的“状态”向量,“单元状态”,来确定是否“忘记”隐藏状态中的内容*。然后,它们使用另外两个门来控制它们应该重置或更新*单元状态*中的内容的程度,以及第四个门来确定基于最终单元状态的情况下隐藏状态的更新程度。^(7) +相比之下,LSTMs*使用一个单独的“状态”向量,“单元状态”,来确定是否“忘记”隐藏状态中的内容*。然后,它们使用另外两个门来控制它们应该重置或更新*单元状态*中的内容的程度,以及第四个门来确定基于最终单元状态的情况下隐藏状态的更新程度。⁷ ### LSTMNodes: Diagram @@ -917,16 +917,16 @@ LSTMLayer(hidden_size=256, output_size=62)] 希望这个多方面的主题现在不再是一个黑匣子。在第七章中,我将通过转向深度学习的实践方面来结束本书,展示如何使用 PyTorch 框架实现我们迄今所讨论的一切,PyTorch 是一个高性能、基于自动微分的框架,用于构建和训练深度学习模型。继续前进! -^(1) 我们碰巧发现将观察结果排列在行上,将特征排列在列上很方便,但我们不一定要以这种方式排列数据。然而,数据必须是二维的。 +¹ 我们碰巧发现将观察结果排列在行上,将特征排列在列上很方便,但我们不一定要以这种方式排列数据。然而,数据必须是二维的。 -^(2) 或者至少是这本书的这个版本。 +² 或者至少是这本书的这个版本。 -^(3) 我想提到作者 Daniel Sabinasz 在他的博客[*deep ideas*](http://www.deepideas.net)上分享的另一种解决这个问题的方法:他将操作表示为一个图,然后使用广度优先搜索来计算反向传播中的梯度,以正确的顺序构建一个模仿 TensorFlow 的框架。他关于如何做到这一点的博客文章非常清晰和结构良好。 +³ 我想提到作者 Daniel Sabinasz 在他的博客[*deep ideas*](http://www.deepideas.net)上分享的另一种解决这个问题的方法:他将操作表示为一个图,然后使用广度优先搜索来计算反向传播中的梯度,以正确的顺序构建一个模仿 TensorFlow 的框架。他关于如何做到这一点的博客文章非常清晰和结构良好。 -^(4) 深入了解如何实现自动微分,请参阅 Andrew Trask 的*Grokking Deep Learning*(Manning)。 +⁴ 深入了解如何实现自动微分,请参阅 Andrew Trask 的*Grokking Deep Learning*(Manning)。 -^(5) 请查看 LSTMs 的维基百科页面,了解更多[LSTM 变体](https://oreil.ly/2TysrXj)的例子。 +⁵ 请查看 LSTMs 的维基百科页面,了解更多[LSTM 变体](https://oreil.ly/2TysrXj)的例子。 -^(6) 参见 Hochreiter 等人的原始 LSTM 论文[“长短期记忆”](https://oreil.ly/2YYZvwT) (1997)。 +⁶ 参见 Hochreiter 等人的原始 LSTM 论文[“长短期记忆”](https://oreil.ly/2YYZvwT) (1997)。 至少是标准变体的 LSTMs;正如提到的,还有其他变体,比如“带有窥视孔连接的 LSTMs”,其门的排列方式不同。 diff --git a/totrans/dl-scr_7.md b/totrans/dl-scr_7.md index 0eb8040..2f58553 100644 --- a/totrans/dl-scr_7.md +++ b/totrans/dl-scr_7.md @@ -1,4 +1,4 @@ -# 第七章。PyTorch +# 第七章:PyTorch 在第六章和第五章中,您学习了如何通过从头开始实现卷积和循环神经网络来使它们工作。然而,了解它们如何工作是必要的,但仅凭这些知识无法使它们在真实世界的问题上工作;为此,您需要能够在高性能库中实现它们。我们可以致力于构建一个高性能神经网络库的整本书,但那将是一本非常不同(或者只是更长)的书,面向一个非常不同的受众。相反,我们将把这最后一章献给介绍 PyTorch,这是一个越来越受欢迎的基于自动微分的神经网络框架,我们在第六章的开头介绍过。 diff --git a/totrans/fund-dl_01.md b/totrans/fund-dl_01.md index 2950b57..ede0c16 100644 --- a/totrans/fund-dl_01.md +++ b/totrans/fund-dl_01.md @@ -1,4 +1,4 @@ -# 第一章。深度学习的线性代数基础 +# 第一章:深度学习的线性代数基础 在本章中,我们涵盖了重要的先决知识,这些知识将激发我们在主文本和选定章节末尾的可选侧栏中讨论深度学习技术。深度学习最近在学术研究和工业领域都经历了一次复兴。它通过飞跃和飞跃地推动了机器学习的极限,革新了计算机视觉和自然语言处理等领域。然而,重要的是要记住,深度学习在其核心上是对诸如微积分、线性代数和概率等领域成就的总结。尽管与其他数学领域有更深入的联系,但我们专注于这里列出的三个领域,以帮助我们在深入研究深度学习之前拓宽我们的视野。这些领域对于揭示深度学习的整体图景和使其变得如此令人兴奋的微妙细节至关重要。在这个关于背景的第一章中,我们涵盖了线性代数的基础知识。 diff --git a/totrans/fund-dl_02.md b/totrans/fund-dl_02.md index 18a5f87..4f7cc8a 100644 --- a/totrans/fund-dl_02.md +++ b/totrans/fund-dl_02.md @@ -1,4 +1,4 @@ -# 第二章。概率基础 +# 第二章:概率基础 概率是一门量化我们对事件的不确定性的数学领域。例如,当掷骰子或抛硬币时,除非骰子或硬币本身存在任何不规则性,否则我们对即将发生的结果感到不确定。然而,我们可以通过概率来量化我们对每种可能结果的信念。例如,我们说每次抛硬币时硬币出现正面的概率是 1 2 。每次掷骰子时,我们说骰子朝上的概率是 1 6 。这些是我们在日常生活中轻松谈论的概率,但我们如何定义和有效利用它们呢?在本章中,我们将讨论概率的基础知识以及它们与深度学习中的关键概念的联系。 diff --git a/totrans/fund-dl_03.md b/totrans/fund-dl_03.md index f40a229..b1c5793 100644 --- a/totrans/fund-dl_03.md +++ b/totrans/fund-dl_03.md @@ -1,10 +1,10 @@ -# 第三章 神经网络 +# 第三章:神经网络 # 构建智能机器 大脑是人体中最不可思议的器官。它决定了我们感知每一处景象、声音、气味、味道和触感的方式。它使我们能够存储记忆,体验情感,甚至做梦。没有它,我们将是原始生物,除了最简单的反射动作外一无所能。大脑本质上是使我们聪明的东西。 -婴儿的大脑只有一磅重,但它以某种方式解决了即使是我们最大、最强大的超级计算机也无法解决的问题。出生几个月后,婴儿就能认出父母的脸,从背景中辨别出离散的物体,甚至分辨声音。一年后,他们已经对自然物理有了直觉,可以追踪物体,即使它们被部分或完全遮挡,也可以将声音与特定含义联系起来。到了幼儿时期,他们已经对语法有了复杂的理解,词汇量中有数千个单词。^(1) +婴儿的大脑只有一磅重,但它以某种方式解决了即使是我们最大、最强大的超级计算机也无法解决的问题。出生几个月后,婴儿就能认出父母的脸,从背景中辨别出离散的物体,甚至分辨声音。一年后,他们已经对自然物理有了直觉,可以追踪物体,即使它们被部分或完全遮挡,也可以将声音与特定含义联系起来。到了幼儿时期,他们已经对语法有了复杂的理解,词汇量中有数千个单词。¹ 几十年来,我们梦想着建造像我们一样拥有大脑的智能机器——用于清洁我们家的机器人助手,能自动驾驶的汽车,能自动检测疾病的显微镜。但要建造这些人工智能机器,我们必须解决一些我们曾经面对过的最复杂的计算问题;这些问题我们的大脑已经可以在几微秒内解决。为了解决这些问题,我们将不得不开发一种完全不同的编程计算机的方式,这种方式在过去十年中得到了广泛发展。这是一个极其活跃的人工计算机智能领域,通常被称为*深度学习*。 @@ -14,7 +14,7 @@ ![ ](img/fdl2_0301.png) -###### 图 3-1. 来自 MNIST 手写数字数据集的图像^(2) +###### 图 3-1. 来自 MNIST 手写数字数据集的图像² 尽管图 3-1 中的每个数字写法略有不同,但我们可以轻松识别第一行中的每个数字为零,第二行中的每个数字为一,依此类推。让我们尝试编写一个计算机程序来完成这个任务。我们可以使用什么规则来区分一个数字和另一个数字? diff --git a/totrans/fund-dl_04.md b/totrans/fund-dl_04.md index c27cccd..73e1a87 100644 --- a/totrans/fund-dl_04.md +++ b/totrans/fund-dl_04.md @@ -1,4 +1,4 @@ -# 第四章。训练前馈神经网络 +# 第四章:训练前馈神经网络 # 快餐问题 @@ -32,7 +32,7 @@ 我们还可以方便地将这个表面可视化为一组椭圆形轮廓,其中最小误差位于椭圆的中心。在这个设置中,我们在一个二维平面上工作,其中维度对应于两个权重。轮廓对应于评估为相同值 *E* 的 w 1w 2 的设置。轮廓越接近,斜率越陡。事实上,最陡下降的方向总是垂直于轮廓。这个方向被表示为一个称为*梯度*的向量。 -现在我们可以制定一个高层策略,来找到最小化误差函数的权重值。假设我们随机初始化网络的权重,这样我们就会发现自己在水平平面上的某个位置。通过评估当前位置的梯度,我们可以找到最陡下降的方向,并朝这个方向迈出一步。然后我们会发现自己在一个比之前更接近最小值的新位置。我们可以通过在这个新位置上取梯度并朝这个新方向迈出一步来重新评估最陡下降的方向。很容易看出,如图 4-3 所示,遵循这个策略最终会将我们带到最小误差点。这个算法被称为*梯度下降*,我们将用它来解决训练单个神经元和更一般的训练整个网络的问题。^(1) +现在我们可以制定一个高层策略,来找到最小化误差函数的权重值。假设我们随机初始化网络的权重,这样我们就会发现自己在水平平面上的某个位置。通过评估当前位置的梯度,我们可以找到最陡下降的方向,并朝这个方向迈出一步。然后我们会发现自己在一个比之前更接近最小值的新位置。我们可以通过在这个新位置上取梯度并朝这个新方向迈出一步来重新评估最陡下降的方向。很容易看出,如图 4-3 所示,遵循这个策略最终会将我们带到最小误差点。这个算法被称为*梯度下降*,我们将用它来解决训练单个神经元和更一般的训练整个网络的问题。¹ ![ ](img/fdl2_0403.png) @@ -198,7 +198,7 @@ y = 1 / (1 + e^(-z)) 在一个 epoch 结束时,验证集将告诉我们模型在尚未见过的数据上的表现。如果训练集上的准确性继续增加,而验证集上的准确性保持不变(或下降),这表明是时候停止训练了,因为我们正在过拟合。 -验证集还有助于作为*超参数优化*过程中准确性的代理度量。到目前为止,我们已经涵盖了几个超参数(学习率、小批量大小等),但我们尚未开发出如何找到这些超参数的最佳值的框架。找到超参数的最佳设置的一个潜在方法是应用*网格搜索*,在网格搜索中,我们从有限的选项集中为每个超参数选择一个值(例如,ϵ { 0 . 001 , 0 . 01 , 0 . 1 } , batch size { 16 , 64 , 128 } , ...),并使用每种超参数选择的所有可能排列来训练模型。我们选择在验证集上性能最佳的超参数组合,并报告使用最佳组合训练的模型在测试集上的准确性。^(3) +验证集还有助于作为*超参数优化*过程中准确性的代理度量。到目前为止,我们已经涵盖了几个超参数(学习率、小批量大小等),但我们尚未开发出如何找到这些超参数的最佳值的框架。找到超参数的最佳设置的一个潜在方法是应用*网格搜索*,在网格搜索中,我们从有限的选项集中为每个超参数选择一个值(例如,ϵ { 0 . 001 , 0 . 01 , 0 . 1 } , batch size { 16 , 64 , 128 } , ...),并使用每种超参数选择的所有可能排列来训练模型。我们选择在验证集上性能最佳的超参数组合,并报告使用最佳组合训练的模型在测试集上的准确性。³ 考虑到这一点,在我们开始描述直接对抗过拟合的各种方法之前,让我们先概述构建和训练深度学习模型时使用的工作流程。工作流程在图 4-14 中有详细描述。这有点复杂,但了解流程对确保我们正确训练神经网络至关重要。 @@ -220,7 +220,7 @@ y = 1 / (1 + e^(-z)) 一种对抗过拟合的方法称为*正则化*。正则化通过添加额外的惩罚大权重的项来修改我们最小化的目标函数。我们改变目标函数,使其变为E r r o r + λ f ( θ ),其中f ( θ )随着θ的分量增大而增大,λ是正则化强度(另一个超参数)。我们选择的λ的值决定了我们想要保护免受过拟合的程度。λ = 0意味着我们不采取任何措施来防止过拟合。如果λ太大,那么我们的模型将优先保持θ尽可能小,而不是试图找到在训练集上表现良好的参数值。因此,选择λ是一项非常重要的任务,可能需要一些试错。 -机器学习中最常见的正则化类型是*L2*正则化。^(4) 它可以通过将神经网络中所有权重的平方幅度添加到误差函数中来实现。换句话说,对于神经网络中的每个权重w,我们将1 2 λ w 2添加到误差函数中。L2 正则化具有对尖峰权重向量进行严厉惩罚并更喜欢扩散权重向量的直观解释。这具有鼓励网络稍微使用其所有输入而不是仅大量使用部分输入的吸引性属性。特别值得注意的是,在梯度下降更新期间,使用 L2 正则化最终意味着每个权重都会线性衰减至零。由于这种现象,L2 正则化通常也被称为*权重衰减*。 +机器学习中最常见的正则化类型是*L2*正则化。⁴ 它可以通过将神经网络中所有权重的平方幅度添加到误差函数中来实现。换句话说,对于神经网络中的每个权重w,我们将1 2 λ w 2添加到误差函数中。L2 正则化具有对尖峰权重向量进行严厉惩罚并更喜欢扩散权重向量的直观解释。这具有鼓励网络稍微使用其所有输入而不是仅大量使用部分输入的吸引性属性。特别值得注意的是,在梯度下降更新期间,使用 L2 正则化最终意味着每个权重都会线性衰减至零。由于这种现象,L2 正则化通常也被称为*权重衰减*。 我们可以使用 ConvNetJS 来可视化 L2 正则化的效果。与图 2-10 和 2-11 类似,我们使用一个具有 2 个输入、大小为 2 的 softmax 输出和一个包含 20 个神经元的隐藏层的神经网络。我们使用小批量梯度下降(批量大小为 10)和正则化强度为 0.01、0.1 和 1 来训练网络。结果可以在图 4-15 中看到。 @@ -244,14 +244,14 @@ y = 1 / (1 + e^(-z)) 在本章中,我们学习了训练前馈神经网络所涉及的所有基础知识。我们讨论了梯度下降,反向传播算法,以及我们可以使用的各种方法来防止过拟合。在下一章中,当我们使用 PyTorch 库高效实现我们的第一个神经网络时,我们将把这些教训付诸实践。然后在第六章中,我们将回到优化目标函数以训练神经网络的问题,并设计算法来显著提高性能。这些改进将使我们能够处理更多的数据,这意味着我们将能够构建更全面的模型。 -^(1) Rosenbloom, P. “The Method of Steepest Descent.” *Proceedings of Symposia in Applied Mathematics*. Vol. 6\. 1956. +¹ Rosenbloom, P. “The Method of Steepest Descent.” *Proceedings of Symposia in Applied Mathematics*. Vol. 6\. 1956. -^(2) Rumelhart, David E., Geoffrey E. Hinton, and Ronald J. Williams. “Learning Representations by Back-Propagating Errors.” *Cognitive Modeling* 5.3 (1988): 1. +² Rumelhart, David E., Geoffrey E. Hinton, and Ronald J. Williams. “Learning Representations by Back-Propagating Errors.” *Cognitive Modeling* 5.3 (1988): 1. -^(3) Nelder, John A., and Roger Mead. “A Simplex Method for Function Minimization.” *The Computer Journal* 7.4 (1965): 308-313. +³ Nelder, John A., and Roger Mead. “A Simplex Method for Function Minimization.” *The Computer Journal* 7.4 (1965): 308-313. -^(4) Tikhonov, Andrei Nikolaevich, and Vladlen Borisovich Glasko. “Use of the Regularization Method in Non-Linear Problems.” *USSR Computational Mathematics and Mathematical Physics* 5.3 (1965): 93-107. +⁴ Tikhonov, Andrei Nikolaevich, and Vladlen Borisovich Glasko. “Use of the Regularization Method in Non-Linear Problems.” *USSR Computational Mathematics and Mathematical Physics* 5.3 (1965): 93-107. -^(5) Srebro, Nathan, Jason DM Rennie, and Tommi S. Jaakkola. “Maximum-Margin Matrix Factorization.” *NIPS*, Vol. 17, 2004. +⁵ Srebro, Nathan, Jason DM Rennie, and Tommi S. Jaakkola. “Maximum-Margin Matrix Factorization.” *NIPS*, Vol. 17, 2004. -^(6) Srivastava, Nitish 等人。“Dropout: 一种简单的方法防止神经网络过拟合。” *机器学习研究杂志* 15.1 (2014): 1929-1958. +⁶ Srivastava, Nitish 等人。“Dropout: 一种简单的方法防止神经网络过拟合。” *机器学习研究杂志* 15.1 (2014): 1929-1958. diff --git a/totrans/fund-dl_05.md b/totrans/fund-dl_05.md index b0ce456..db103b3 100644 --- a/totrans/fund-dl_05.md +++ b/totrans/fund-dl_05.md @@ -1,4 +1,4 @@ -# 第五章。在 PyTorch 中实现神经网络 +# 第五章:在 PyTorch 中实现神经网络 # PyTorch 简介 diff --git a/totrans/fund-dl_06.md b/totrans/fund-dl_06.md index 9dd063a..57f7375 100644 --- a/totrans/fund-dl_06.md +++ b/totrans/fund-dl_06.md @@ -1,4 +1,4 @@ -# 第六章。超越梯度下降 +# 第六章:超越梯度下降 # 梯度下降的挑战 @@ -167,7 +167,7 @@ for alpha in torch.arange(-2, 2, 0.05): ###### 图 6-5\. 二维误差表面上的一个鞍点 -一般来说,在一个 d 维参数空间中,我们可以通过 d 个不同的轴切过一个临界点。一个临界点只有在每一个 d 个一维子空间中都出现为局部最小值时才能成为局部最小值。利用一个临界点在一维子空间中有三种不同类型的事实,我们意识到一个随机临界点在随机函数中的概率是 1 3 d 。这意味着一个具有 k 个临界点的随机函数有望有 k 3 d 个局部最小值。换句话说,随着参数空间的维度增加,局部最小值变得越来越稀有。对这个主题的更严格的处理超出了本书的范围,但在 2014 年由 Dauphin 等人进行了更深入的探讨。^(3) +一般来说,在一个 d 维参数空间中,我们可以通过 d 个不同的轴切过一个临界点。一个临界点只有在每一个 d 个一维子空间中都出现为局部最小值时才能成为局部最小值。利用一个临界点在一维子空间中有三种不同类型的事实,我们意识到一个随机临界点在随机函数中的概率是 1 3 d 。这意味着一个具有 k 个临界点的随机函数有望有 k 3 d 个局部最小值。换句话说,随着参数空间的维度增加,局部最小值变得越来越稀有。对这个主题的更严格的处理超出了本书的范围,但在 2014 年由 Dauphin 等人进行了更深入的探讨。³ 那么,这对于优化深度学习模型意味着什么?对于随机梯度下降,目前还不清楚。看起来这些错误表面的平坦段是棘手的,但最终并不会阻止随机梯度下降收敛到一个好的答案。然而,对于试图直接解决梯度为零点的方法,这对于某些二阶优化方法在深度学习模型中的有用性构成了严重问题,我们将在后面讨论。 @@ -405,18 +405,18 @@ PyTorch 中 Adam 的默认超参数设置通常表现良好,但 Adam 对于超 ([3] Dauphin, Yann N.等人。“在高维非凸优化中识别和攻击鞍点问题。”*神经信息处理系统的进展*。2014 年。 -^(4) Polyak, Boris T. “一些加速迭代方法收敛的方法。” *苏联计算数学和数学物理* 4.5 (1964): 1-17。 +⁴ Polyak, Boris T. “一些加速迭代方法收敛的方法。” *苏联计算数学和数学物理* 4.5 (1964): 1-17。 -^(5) Sutskever, Ilya, 等. “关于深度学习中初始化和动量的重要性。” *ICML* (3) 28 (2013): 1139-1147。 +⁵ Sutskever, Ilya, 等. “关于深度学习中初始化和动量的重要性。” *ICML* (3) 28 (2013): 1139-1147。 -^(6) Møller, Martin Fodslette. “一种用于快速监督学习的缩放共轭梯度算法。” *神经网络* 6.4 (1993): 525-533。 +⁶ Møller, Martin Fodslette. “一种用于快速监督学习的缩放共轭梯度算法。” *神经网络* 6.4 (1993): 525-533。 -^(7) Broyden, C. G. “解非线性联立方程的一种新方法。” *计算机杂志* 12.1 (1969): 94-99。 +⁷ Broyden, C. G. “解非线性联立方程的一种新方法。” *计算机杂志* 12.1 (1969): 94-99。 -^(8) Bonnans, Joseph-Frédéric, 等. *数值优化:理论和实践方面*。Springer Science & Business Media, 2006。 +⁸ Bonnans, Joseph-Frédéric, 等. *数值优化:理论和实践方面*。Springer Science & Business Media, 2006。 -^(9) Duchi, John, Elad Hazan, 和 Yoram Singer. “用于在线学习和随机优化的自适应次梯度方法。” *机器学习研究杂志* 12.Jul (2011): 2121-2159。 +⁹ Duchi, John, Elad Hazan, 和 Yoram Singer. “用于在线学习和随机优化的自适应次梯度方法。” *机器学习研究杂志* 12.Jul (2011): 2121-2159。 -^(10) Tieleman, Tijmen, 和 Geoffrey Hinton. “讲座 6.5-rmsprop:将梯度除以最近幅度的运行平均值。” *COURSERA:神经网络机器学习* 4.2 (2012)。 +¹⁰ Tieleman, Tijmen, 和 Geoffrey Hinton. “讲座 6.5-rmsprop:将梯度除以最近幅度的运行平均值。” *COURSERA:神经网络机器学习* 4.2 (2012)。 -^(11) Kingma, Diederik, 和 Jimmy Ba. “Adam:一种用于随机优化的方法。” *arXiv 预印本 arXiv*:1412.6980 (2014)。 +¹¹ Kingma, Diederik, 和 Jimmy Ba. “Adam:一种用于随机优化的方法。” *arXiv 预印本 arXiv*:1412.6980 (2014)。 diff --git a/totrans/fund-dl_07.md b/totrans/fund-dl_07.md index 14dd502..0bed789 100644 --- a/totrans/fund-dl_07.md +++ b/totrans/fund-dl_07.md @@ -1,14 +1,14 @@ -# 第七章。卷积神经网络 +# 第七章:卷积神经网络 # 人类视觉中的神经元 -人类的视觉感知能力是令人难以置信的先进。在几秒钟内,我们可以在视野范围内识别物体,毫不犹豫地,毫不费力。我们不仅可以命名我们看到的物体,还可以感知它们的深度,完美地区分它们的轮廓,并将物体与背景分开。不知何故,我们的眼睛接收到了原始的彩色数据体素,但我们的大脑将这些信息转化为更有意义的基元——线条、曲线和形状——这些基元可能表明,例如,我们正在看一只家猫。^(1) +人类的视觉感知能力是令人难以置信的先进。在几秒钟内,我们可以在视野范围内识别物体,毫不犹豫地,毫不费力。我们不仅可以命名我们看到的物体,还可以感知它们的深度,完美地区分它们的轮廓,并将物体与背景分开。不知何故,我们的眼睛接收到了原始的彩色数据体素,但我们的大脑将这些信息转化为更有意义的基元——线条、曲线和形状——这些基元可能表明,例如,我们正在看一只家猫。¹ -人类视觉的基础是神经元。专门的神经元负责在人眼中捕捉光信息。^(2)然后,这些光信息经过预处理,传输到大脑的视觉皮层,最终被完全分析。神经元单独负责所有这些功能。因此,直觉上,将我们的神经网络模型扩展到构建更好的计算机视觉系统是有很多道理的。在本章中,我们将利用对人类视觉的理解来构建有效的深度学习模型,解决图像问题。但在我们深入研究之前,让我们看看更传统的图像分析方法以及它们为什么存在缺陷。 +人类视觉的基础是神经元。专门的神经元负责在人眼中捕捉光信息。²然后,这些光信息经过预处理,传输到大脑的视觉皮层,最终被完全分析。神经元单独负责所有这些功能。因此,直觉上,将我们的神经网络模型扩展到构建更好的计算机视觉系统是有很多道理的。在本章中,我们将利用对人类视觉的理解来构建有效的深度学习模型,解决图像问题。但在我们深入研究之前,让我们看看更传统的图像分析方法以及它们为什么存在缺陷。 # 特征选择的缺陷 -让我们从考虑一个简单的计算机视觉问题开始。我给你一张随机选择的图像,比如图 7-1 中的图像。你的任务是告诉我这张图片中是否有一个人脸。这正是保罗·维奥拉和迈克尔·琼斯在他们 2001 年发表的开创性论文中解决的问题。^(3) +让我们从考虑一个简单的计算机视觉问题开始。我给你一张随机选择的图像,比如图 7-1 中的图像。你的任务是告诉我这张图片中是否有一个人脸。这正是保罗·维奥拉和迈克尔·琼斯在他们 2001 年发表的开创性论文中解决的问题。³ ![](img/fdl2_0701.png) @@ -44,7 +44,7 @@ Viola 和 Jones 有一个洞察,即人脸具有一定的光亮和暗斑块模 ###### 图 7-3。随着图像尺寸的增加,层之间的连接密度呈不可控增加 -卷积网络利用我们分析图像的事实,并合理地限制深度网络的架构,从而大大减少模型中的参数数量。受到人类视觉工作方式的启发,卷积网络的层中的神经元以三维方式排列,因此层具有宽度、高度和深度,如图 7-4 所示。^(7) +卷积网络利用我们分析图像的事实,并合理地限制深度网络的架构,从而大大减少模型中的参数数量。受到人类视觉工作方式的启发,卷积网络的层中的神经元以三维方式排列,因此层具有宽度、高度和深度,如图 7-4 所示。⁷ 正如我们将看到的,卷积层中的神经元仅连接到前一层的一个小区域,因此我们避免了全连接神经元的浪费。卷积层的功能可以简单地表达为:它处理一个三维信息体积,以产生一个新的三维信息体积。我们将在下一节更详细地看一下这是如何工作的。 @@ -54,7 +54,7 @@ Viola 和 Jones 有一个洞察,即人脸具有一定的光亮和暗斑块模 # 滤波器和特征图 -为了激发卷积层的基本原理,让我们建立对人类大脑如何将原始视觉信息拼接成我们周围世界理解的直觉。在这个领域最有影响力的研究之一来自 David Hubel 和 Torsten Wiesel,他们发现视觉皮层的部分负责检测边缘。1959 年,他们在猫的大脑中插入电极,并在屏幕上投射黑白图案。他们发现一些神经元只有在有垂直线时才会发射,其他神经元只有在有水平线时才会发射,还有一些神经元只有在线条呈特定角度时才会发射。^(8) +为了激发卷积层的基本原理,让我们建立对人类大脑如何将原始视觉信息拼接成我们周围世界理解的直觉。在这个领域最有影响力的研究之一来自 David Hubel 和 Torsten Wiesel,他们发现视觉皮层的部分负责检测边缘。1959 年,他们在猫的大脑中插入电极,并在屏幕上投射黑白图案。他们发现一些神经元只有在有垂直线时才会发射,其他神经元只有在有水平线时才会发射,还有一些神经元只有在线条呈特定角度时才会发射。⁸ 进一步的研究确定了视觉皮层是分层组织的。每一层负责在前一层检测到的特征基础上构建——从线条到轮廓,再到形状,最终到整个对象。此外,在视觉皮层的每一层中,相同的特征检测器在整个区域中复制,以便在图像的所有部分检测特征。这些想法对卷积神经网络的设计产生了重大影响。 @@ -359,7 +359,7 @@ layer = nn.BatchNorm1d(num_features=32) 在过去的十年中,图像处理中的各种归一化形式已经被研究和利用。其中最著名的是批量归一化。仅从前一节回顾一下,这种技术计算每个卷积层输出的通道均值和方差,使用计算出的统计数据对每个通道进行归一化,然后将归一化的输出馈送到下一个卷积层。因此,归一化输出中的任何给定通道在批次中将具有相同的均值和方差(分别为零和一)。在实践中,模型还将学习一个均值参数β和一个标准差参数γ,然后将它们应用于归一化的输出,使其在馈送到后续层之前具有均值β和标准差γ。这个过程用于减少任何给定通道从一个批次到下一个批次的分布偏移。请注意,这只是减少偏移而不是完全消除它,因为通道分布可能仍然在一个批次到下一个批次看起来完全不同,尽管它们具有相同的均值和方差。从理论上讲,并且根据经验观察,减少这种内部协变量偏移可以稳定训练并产生强大的性能增益。 -然而,在批量大小较大的情况下,通道均值和方差的计算会导致较大的内存成本。此外,批量归一化对批量大小的大小非常重要,因为较小的批量大小会由于嘈杂的均值和方差估计而显著降低性能。为了避免沿批处理维度进行计算带来的问题,*组归一化*被引入。^(12)组归一化不是沿着批处理维度进行归一化,而是沿着通道维度进行归一化,因此不受前述问题的影响。组归一化预定义了一些通道组,并且对于每个实例,在每个批次实例中计算每个通道组的均值μ和方差σ。每组计算出的β和γ参数集用于对归一化的条目集进行归一化。此外,类似于批量归一化,为每个条目集单独学习偏移/均值参数β和缩放/标准差参数γ。 +然而,在批量大小较大的情况下,通道均值和方差的计算会导致较大的内存成本。此外,批量归一化对批量大小的大小非常重要,因为较小的批量大小会由于嘈杂的均值和方差估计而显著降低性能。为了避免沿批处理维度进行计算带来的问题,*组归一化*被引入。¹²组归一化不是沿着批处理维度进行归一化,而是沿着通道维度进行归一化,因此不受前述问题的影响。组归一化预定义了一些通道组,并且对于每个实例,在每个批次实例中计算每个通道组的均值μ和方差σ。每组计算出的β和γ参数集用于对归一化的条目集进行归一化。此外,类似于批量归一化,为每个条目集单独学习偏移/均值参数β和缩放/标准差参数γ。 这类似于另一种流行的技术,称为*层归一化*,它实际上是批量归一化,但是跨越通道维度的整个长度,而不是整个批处理维度的长度。请注意,层归一化也只是组归一化的一个特例,其中通道组的数量设置为一。图 7-16 比较了批量归一化、组归一化和层归一化。每个立方体中的被阻挡的部分展示了归一化发生的维度以及一起归一化的条目组。请注意,为了可视化目的,我们将标准的 4D 表示压缩为 3D。 @@ -445,11 +445,11 @@ class Net(nn.Module): 我们可以在我们的滤波器中看到许多有趣的特征:垂直、水平和对角边缘,以及由另一种颜色包围的小点或斑点。我们可以确信我们的网络正在学习相关特征,因为这些滤波器不仅仅是噪音。 -我们还可以尝试可视化网络如何学习以图像形式聚类各种图像。为了说明这一点,我们采用一个在 ImageNet 挑战赛上训练过的大型网络,然后获取在每个图像的 softmax 之前完全连接层的隐藏状态。然后,我们采用称为*t-分布随机邻居嵌入*或*t-SNE*的算法,将每个图像的高维表示压缩到我们可以可视化的 2D 表示。^(14) 我们不在这里详细介绍 t-SNE 的细节,但有许多公开可用的软件工具可以为我们执行,包括[脚本](https://oreil.ly/7NA1K)。我们在图 7-20 中可视化嵌入,结果非常惊人。 +我们还可以尝试可视化网络如何学习以图像形式聚类各种图像。为了说明这一点,我们采用一个在 ImageNet 挑战赛上训练过的大型网络,然后获取在每个图像的 softmax 之前完全连接层的隐藏状态。然后,我们采用称为*t-分布随机邻居嵌入*或*t-SNE*的算法,将每个图像的高维表示压缩到我们可以可视化的 2D 表示。¹⁴ 我们不在这里详细介绍 t-SNE 的细节,但有许多公开可用的软件工具可以为我们执行,包括[脚本](https://oreil.ly/7NA1K)。我们在图 7-20 中可视化嵌入,结果非常惊人。 ![](img/fdl2_0720.png) -###### 图 7-20。t-SNE 嵌入(中心)周围是嵌入的放大子段(外围)^(15) +###### 图 7-20。t-SNE 嵌入(中心)周围是嵌入的放大子段(外围)¹⁵ 乍一看,颜色相似的图像更接近。这很有趣,但更引人注目的是,当我们放大可视化的部分时,我们意识到这不仅仅是颜色。我们意识到所有船的图片都在一个地方,所有人类的图片在另一个地方,所有蝴蝶的图片在可视化中的另一个位置。很明显,卷积网络具有惊人的学习能力。 @@ -459,7 +459,7 @@ class Net(nn.Module): 有趣的是,问题甚至不是过拟合(低训练准确率和高验证准确率所暗示的),对于具有如此多参数的网络来说,过拟合是可以理解的。此外,我们可以轻松地构建一个深度网络,其性能与其浅层对应物完全相同:只需取出训练好的浅层网络层,并简单地堆叠执行恒等操作的层。我们通过专门的优化算法表现更差,与我们的朴素构建相比,这是相当令人震惊的。问题在于由于某种无法解释的原因,训练停滞在一个我们无法摆脱的局部最小值。不幸的是,对于这一点的理论解释仍然有些模糊。 -2015 年,何等人^(16)引入了 ResNet34 架构,这是一个深度架构,在主要图像分类竞赛中超越了所有同行。何等人等人重新定义了我们如何训练深度计算机视觉架构,他们的贡献是引入了我们现在称之为*跳跃连接*的概念,即将从一层获得的特征向量添加到当前层之后的一层或两层获得的特征向量中。更确切地说,假设我们到目前为止已经通过网络的一半,我们的原始输入*x*已经转换为一些中间表示*x'*。跳跃连接将*x'*添加到下一层的结果*F(x')*中,然后将表示传递给下一层*G*。因此,G 看到的不是*F(x')*,而是*F(x') + x'*。请注意,跳跃连接不需要将当前表示添加到*F*的结果中。如图 7-21 所示,我们还可以将*x'*添加到*G*的结果中,因此下一层*H*看到的是*G(F(x')) + x'*,而不仅仅是*G(F(x'))*。 +2015 年,何等人¹⁶引入了 ResNet34 架构,这是一个深度架构,在主要图像分类竞赛中超越了所有同行。何等人等人重新定义了我们如何训练深度计算机视觉架构,他们的贡献是引入了我们现在称之为*跳跃连接*的概念,即将从一层获得的特征向量添加到当前层之后的一层或两层获得的特征向量中。更确切地说,假设我们到目前为止已经通过网络的一半,我们的原始输入*x*已经转换为一些中间表示*x'*。跳跃连接将*x'*添加到下一层的结果*F(x')*中,然后将表示传递给下一层*G*。因此,G 看到的不是*F(x')*,而是*F(x') + x'*。请注意,跳跃连接不需要将当前表示添加到*F*的结果中。如图 7-21 所示,我们还可以将*x'*添加到*G*的结果中,因此下一层*H*看到的是*G(F(x')) + x'*,而不仅仅是*G(F(x'))*。 ![](img/fdl2_0721.png) @@ -628,7 +628,7 @@ class ResNet34(nn.Module): # 利用卷积滤波器复制艺术风格 -在过去的几年里,我们还开发了利用卷积网络以更有创意方式的算法。其中一个算法被称为*神经风格*。^(17) 神经风格的目标是能够将任意照片呈现为以著名艺术家的风格绘制的样子。这似乎是一项艰巨的任务,如果没有卷积网络,我们不太清楚如何解决这个问题。然而,聪明地操作卷积滤波器可以在这个问题上产生惊人的结果。 +在过去的几年里,我们还开发了利用卷积网络以更有创意方式的算法。其中一个算法被称为*神经风格*。¹⁷ 神经风格的目标是能够将任意照片呈现为以著名艺术家的风格绘制的样子。这似乎是一项艰巨的任务,如果没有卷积网络,我们不太清楚如何解决这个问题。然而,聪明地操作卷积滤波器可以在这个问题上产生惊人的结果。 让我们拿一个预训练的卷积网络。我们处理三幅图像。前两幅是内容源***p***和风格源***a***。第三幅图像是生成的图像***x***。我们的目标是推导一个错误函数,我们可以反向传播,当最小化时,将完美地结合所需照片的内容和所需艺术作品的风格。 @@ -648,11 +648,11 @@ class ResNet34(nn.Module): ![](img/fdl2_0722.png) -###### 图 7-22。将雨公主与麻省理工学院圆顶的照片混合的结果^(18) +###### 图 7-22。将雨公主与麻省理工学院圆顶的照片混合的结果¹⁸ # 学习卷积滤波器用于其他问题领域 -尽管本章中的示例侧重于图像识别,但卷积网络在几个其他问题领域中也很有用。图像分析的自然延伸是视频分析。事实上,使用五维张量(包括时间作为一个维度)并应用三维卷积是将卷积范式扩展到视频的一种简单方法。^(19) 卷积滤波器还成功地用于分析听力图。^(20) 在这些应用中,卷积网络在听力图输入上滑动,以预测另一侧的音素。 +尽管本章中的示例侧重于图像识别,但卷积网络在几个其他问题领域中也很有用。图像分析的自然延伸是视频分析。事实上,使用五维张量(包括时间作为一个维度)并应用三维卷积是将卷积范式扩展到视频的一种简单方法。¹⁹ 卷积滤波器还成功地用于分析听力图。²⁰ 在这些应用中,卷积网络在听力图输入上滑动,以预测另一侧的音素。 不太直观的是,卷积网络还在自然语言处理中找到了一些用途。我们将在后面的章节中看到一些例子。卷积网络的更奇特用途包括教授算法玩棋盘游戏,以及分析生物分子以进行药物发现。我们还将在本书的后面章节讨论这两个例子。 @@ -662,42 +662,42 @@ class ResNet34(nn.Module): 由于我们能够想出有效的方法将图像表示为张量,因此图像分析变得容易。在其他情况下(例如自然语言),如何将输入数据表示为张量并不太清楚。为了作为新深度学习模型的一个基石来解决这个问题,我们将在下一章中开发一些关键概念,包括向量嵌入和表示学习。 -^(1) Hubel, David H., and Torsten N. Wiesel. “Receptive Fields and Functional Architecture of Monkey Striate Cortex.” *The Journal of Physiology* 195.1 (1968): 215-243. +¹ Hubel, David H., and Torsten N. Wiesel. “Receptive Fields and Functional Architecture of Monkey Striate Cortex.” *The Journal of Physiology* 195.1 (1968): 215-243. -^(2) Cohen, Adolph I. “Rods and Cones.” *Physiology of Photoreceptor Organs*. Springer Berlin Heidelberg, 1972\. 63-110. +² Cohen, Adolph I. “Rods and Cones.” *Physiology of Photoreceptor Organs*. Springer Berlin Heidelberg, 1972\. 63-110. -^(3) Viola, Paul, and Michael Jones. “Rapid Object Detection using a Boosted Cascade of Simple Features.” Computer Vision and Pattern Recognition, 2001\. CVPR 2001\. *Proceedings of the 2001 IEEE Computer Society Conference* on. Vol. 1\. IEEE, 2001. +³ Viola, Paul, and Michael Jones. “Rapid Object Detection using a Boosted Cascade of Simple Features.” Computer Vision and Pattern Recognition, 2001\. CVPR 2001\. *Proceedings of the 2001 IEEE Computer Society Conference* on. Vol. 1\. IEEE, 2001. -^(4) Deng, Jia, et al. “ImageNet: A Large-Scale Hierarchical Image Database.” *Computer Vision and Pattern Recognition*, 2009\. CVPR 2009\. IEEE Conference. IEEE, 2009. +⁴ Deng, Jia, et al. “ImageNet: A Large-Scale Hierarchical Image Database.” *Computer Vision and Pattern Recognition*, 2009\. CVPR 2009\. IEEE Conference. IEEE, 2009. -^(5) Perronnin, Florent, Jorge Sénchez, and Yan Liu Xerox. “Large-Scale Image Categorization with Explicit Data Embedding.” *Computer Vision and Pattern Recognition* (CVPR), 2010 IEEE Conference. IEEE, 2010. +⁵ Perronnin, Florent, Jorge Sénchez, and Yan Liu Xerox. “Large-Scale Image Categorization with Explicit Data Embedding.” *Computer Vision and Pattern Recognition* (CVPR), 2010 IEEE Conference. IEEE, 2010. -^(6) Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “ImageNet Classification with Deep Convolutional Neural Networks.” *Advances in Neural Information Processing Systems*. 2012. +⁶ Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “ImageNet Classification with Deep Convolutional Neural Networks.” *Advances in Neural Information Processing Systems*. 2012. -^(7) LeCun, Yann, et al. “Handwritten Digit Recognition with a Back-Propagation Network.” *Advances in Neural Information Processing Systems*. 1990. +⁷ LeCun, Yann, et al. “Handwritten Digit Recognition with a Back-Propagation Network.” *Advances in Neural Information Processing Systems*. 1990. -^(8) Hubel, David H., and Torsten N. Wiesel. “Receptive Fields of Single Neurones in the Cat’s Striate Cortex.” *The Journal of Physiology* 148.3 (1959): 574-591. +⁸ Hubel, David H., and Torsten N. Wiesel. “Receptive Fields of Single Neurones in the Cat’s Striate Cortex.” *The Journal of Physiology* 148.3 (1959): 574-591. -^(9) Graham, Benjamin. “Fractional Max-Pooling.” *arXiv Preprint arXiv*:1412.6071 (2014). +⁹ Graham, Benjamin. “Fractional Max-Pooling.” *arXiv Preprint arXiv*:1412.6071 (2014). -^(10) Simonyan, Karen, and Andrew Zisserman. “Very Deep Convolutional Networks for Large-Scale Image Recognition.” *arXiv Preprint arXiv*:1409.1556 (2014). +¹⁰ Simonyan, Karen, and Andrew Zisserman. “Very Deep Convolutional Networks for Large-Scale Image Recognition.” *arXiv Preprint arXiv*:1409.1556 (2014). -^(11) S. Ioffe, C. Szegedy. “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.” *arXiv Preprint arXiv*:1502.03167\. 2015. +¹¹ S. Ioffe, C. Szegedy. “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.” *arXiv Preprint arXiv*:1502.03167\. 2015. -^(12) Wu et. al. “Group Normalization.” 2018\. *https://arxiv.org/abs/1803.08494*. +¹² Wu et. al. “Group Normalization.” 2018\. *https://arxiv.org/abs/1803.08494*. -^(13) Krizhevsky, Alex, and Geoffrey Hinton. “Learning Multiple Layers of Features from Tiny Images.” University of Toronto (2009). +¹³ Krizhevsky, Alex, and Geoffrey Hinton. “Learning Multiple Layers of Features from Tiny Images.” University of Toronto (2009). -^(14) Maaten, Laurens van der, and Geoffrey Hinton. “Visualizing Data Using t-SNE.” *Journal of Machine Learning Research* 9\. Nov (2008): 2579-2605. +¹⁴ Maaten, Laurens van der, and Geoffrey Hinton. “Visualizing Data Using t-SNE.” *Journal of Machine Learning Research* 9\. Nov (2008): 2579-2605. -^(15) 图像来源:Andrej Karpathy。*http://cs.stanford.edu/people/karpathy/cnnembed*。 +¹⁵ 图像来源:Andrej Karpathy。*http://cs.stanford.edu/people/karpathy/cnnembed*。 -^(16) He et. al. “Deep Residual Learning for Image Recognition.” *arXiv Preprint arXiv*:1512.03385\. 2015. +¹⁶ He et. al. “Deep Residual Learning for Image Recognition.” *arXiv Preprint arXiv*:1512.03385\. 2015. -^(17) Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “A Neural Algorithm of Artistic Style.” *arXiv Preprint arXiv*:1508.06576 (2015). +¹⁷ Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “A Neural Algorithm of Artistic Style.” *arXiv Preprint arXiv*:1508.06576 (2015). -^(18) 图像来源:Anish Athalye。 +¹⁸ 图像来源:Anish Athalye。 -^(19) Karpathy, Andrej, et al. “Large-scale Video Classification with Convolutional Neural Networks.” *Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*. 2014. +¹⁹ Karpathy, Andrej, et al. “Large-scale Video Classification with Convolutional Neural Networks.” *Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*. 2014. -^(20) Abdel-Hamid, Ossama, et al. “Applying Convolutional Neural Networks Concepts to Hybrid NN-HMM Model for Speech Recognition.” IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), Kyoto, 2012, pp. 4277-4280. +²⁰ Abdel-Hamid, Ossama, et al. “Applying Convolutional Neural Networks Concepts to Hybrid NN-HMM Model for Speech Recognition.” IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), Kyoto, 2012, pp. 4277-4280. diff --git a/totrans/fund-dl_08.md b/totrans/fund-dl_08.md index e6166b7..89d121c 100644 --- a/totrans/fund-dl_08.md +++ b/totrans/fund-dl_08.md @@ -1,4 +1,4 @@ -# 第八章。嵌入和表示学习 +# 第八章:嵌入和表示学习 # 学习低维表示 @@ -289,7 +289,7 @@ c_x = (corrupt_input(x) * corrupt) + (x * (1 - corrupt)) E Sparse = E + β · SparsityPenalty -β的值决定了我们在追求稀疏性的同时牺牲生成更好重建的程度。对于数学倾向的人来说,您可以将每个表示的每个组件的值视为具有未知均值的随机变量的结果。然后,我们将使用一个衡量观察这个随机变量(每个组件的值)的分布和已知均值为 0 的随机变量的分布之间差异的度量。用于此目的的常用度量是 Kullback-Leibler(通常称为 KL)散度。关于自动编码器中稀疏性的进一步讨论超出了本文的范围,但已被 Ranzato 等人(2007 年^(4)和 2008 年^(5))涵盖。最近,Makhzani 和 Frey(2014 年)^(6)研究了在编码层之前引入一个中间函数的理论性质和经验有效性,该函数将表示中的最大激活值之外的所有值都归零。这些*k-稀疏自动编码器*被证明与其他稀疏机制一样有效,尽管实现和理解起来非常简单(以及在计算上更有效)。 +β的值决定了我们在追求稀疏性的同时牺牲生成更好重建的程度。对于数学倾向的人来说,您可以将每个表示的每个组件的值视为具有未知均值的随机变量的结果。然后,我们将使用一个衡量观察这个随机变量(每个组件的值)的分布和已知均值为 0 的随机变量的分布之间差异的度量。用于此目的的常用度量是 Kullback-Leibler(通常称为 KL)散度。关于自动编码器中稀疏性的进一步讨论超出了本文的范围,但已被 Ranzato 等人(2007 年⁴和 2008 年⁵)涵盖。最近,Makhzani 和 Frey(2014 年)⁶研究了在编码层之前引入一个中间函数的理论性质和经验有效性,该函数将表示中的最大激活值之外的所有值都归零。这些*k-稀疏自动编码器*被证明与其他稀疏机制一样有效,尽管实现和理解起来非常简单(以及在计算上更有效)。 这结束了我们对自动编码器的讨论。我们已经探讨了如何使用自动编码器通过总结其内容来找到数据点的强表示。当独立数据点丰富并包含有关其结构的所有相关信息时,这种降维的机制效果很好。在下一节中,我们将探讨当主要信息源是数据点的上下文而不是数据点本身时,我们可以使用的策略。 @@ -535,18 +535,18 @@ data.plot_with_labels(low_dim_embs, labels) 在本章中,我们探讨了表示学习中的各种方法。我们了解了如何使用自动编码器进行有效的降维。我们还学习了去噪和稀疏性,这些增强了自动编码器的有用属性。在讨论完自动编码器后,我们将注意力转向当输入的上下文比输入本身更具信息性时的表示学习。我们学习了如何使用 Skip-Gram 模型为英语单词生成嵌入,这将在我们探索用于理解语言的深度学习模型时非常有用。在下一章中,我们将在此基础上分析语言和其他序列使用深度学习。 -^(1) Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. “使用神经网络降低数据的维度。”*科学*313.5786(2006):504-507。 +¹ Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. “使用神经网络降低数据的维度。”*科学*313.5786(2006):504-507。 -^(2) Vincent, Pascal, et al. “使用去噪自动编码器提取和组合稳健特征。”*第 25 届国际机器学习会议论文集*。ACM,2008 年。 +² Vincent, Pascal, et al. “使用去噪自动编码器提取和组合稳健特征。”*第 25 届国际机器学习会议论文集*。ACM,2008 年。 -^(3) Bengio, Yoshua, et al. “广义去噪自动编码器作为生成模型。”*神经信息处理系统进展*。2013 年。 +³ Bengio, Yoshua, et al. “广义去噪自动编码器作为生成模型。”*神经信息处理系统进展*。2013 年。 -^(4) Ranzato, Marc’Aurelio, et al. “使用基于能量的模型高效学习稀疏表示。”*第 19 届神经信息处理系统国际会议论文集*。MIT 出版社,2006 年。 +⁴ Ranzato, Marc’Aurelio, et al. “使用基于能量的模型高效学习稀疏表示。”*第 19 届神经信息处理系统国际会议论文集*。MIT 出版社,2006 年。 -^(5) Ranzato, Marc’Aurelio, and Martin Szummer. “半监督学习中的紧凑文档表示与深度网络。”*第 25 届国际机器学习会议论文集*。ACM,2008 年。 +⁵ Ranzato, Marc’Aurelio, and Martin Szummer. “半监督学习中的紧凑文档表示与深度网络。”*第 25 届国际机器学习会议论文集*。ACM,2008 年。 -^(6) Makhzani, Alireza, and Brendan Frey. “k-稀疏自动编码器。”*arXiv 预印本 arXiv*:1312.5663(2013)。 +⁶ Makhzani, Alireza, and Brendan Frey. “k-稀疏自动编码器。”*arXiv 预印本 arXiv*:1312.5663(2013)。 -^(7) Mikolov, Tomas, et al. “单词和短语的分布式表示及其组合性。”*神经信息处理系统进展*。2013 年。 +⁷ Mikolov, Tomas, et al. “单词和短语的分布式表示及其组合性。”*神经信息处理系统进展*。2013 年。 -^(8) Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. “在向量空间中高效估计单词表示。”*ICLR 研讨会*,2013 年。 +⁸ Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. “在向量空间中高效估计单词表示。”*ICLR 研讨会*,2013 年。 diff --git a/totrans/fund-dl_09.md b/totrans/fund-dl_09.md index 55226b1..a8c21b2 100644 --- a/totrans/fund-dl_09.md +++ b/totrans/fund-dl_09.md @@ -1,4 +1,4 @@ -# 第九章。序列分析模型 +# 第九章:序列分析模型 Surya Bhupatiraju @@ -335,7 +335,7 @@ Shift 在全局归一化网络中,我们对分数的解释略有不同。我们不是通过 softmax 将分数转换为每个操作的概率分布,而是将所有假设动作序列的分数相加。确保我们选择正确的假设序列的一种方法是计算所有可能假设的总和,然后应用 softmax 层生成概率分布。理论上,我们可以使用与局部归一化网络中相同的交叉熵损失函数。然而,这种策略的问题在于可能的假设序列数量太大,难以处理。即使考虑到平均句子长度为 10,每个左右弧有 1 个移动和 7 个标签的保守总操作数为 15,这对应于 1,000,000,000,000,000 个可能的假设。 -为了使这个问题可解,如图 9-12 所示,我们应用一个固定大小的束搜索,直到我们要么(1)到达句子的结尾,要么(2)正确的动作序列不再包含在束中。然后,我们构建一个损失函数,试图通过最大化相对于其他假设的分数来尽可能将“黄金标准”动作序列(用蓝色突出显示)推到束的顶部。虽然我们不会在这里深入讨论如何构建这个损失函数的细节,但我们建议您参考 2016 年 Andor 等人的原始论文。^(3) 该论文还描述了一个更复杂的词性标注器,它使用全局归一化和束搜索来显著提高准确性(与我们在本章前面构建的词性标注器相比)。 +为了使这个问题可解,如图 9-12 所示,我们应用一个固定大小的束搜索,直到我们要么(1)到达句子的结尾,要么(2)正确的动作序列不再包含在束中。然后,我们构建一个损失函数,试图通过最大化相对于其他假设的分数来尽可能将“黄金标准”动作序列(用蓝色突出显示)推到束的顶部。虽然我们不会在这里深入讨论如何构建这个损失函数的细节,但我们建议您参考 2016 年 Andor 等人的原始论文。³ 该论文还描述了一个更复杂的词性标注器,它使用全局归一化和束搜索来显著提高准确性(与我们在本章前面构建的词性标注器相比)。 ![](img/fdl2_0912.png) @@ -998,13 +998,13 @@ loss += step_loss / steps_per_checkpoint current_step += 1 随着最基本的架构被理解和实现,我们现在将继续研究 RNN 的令人兴奋的新发展,并开始探索更复杂的学习。 -# 自注意力和变压器 +# 自注意力和 Transformer -早些时候,我们讨论了一种注意力形式,这种形式首次在 2015 年由 Bahdanau 等人提出。具体来说,我们使用一个简单的前馈神经网络来计算每个编码器隐藏状态与当前时间步的解码器状态的对齐分数。在本节中,我们将讨论一种称为*缩放点积注意力*的不同形式的注意力,它在*自注意力*中的使用,以及*变压器*,这是一种最近的语言建模突破。基于变压器的模型主要取代了 LSTM,并已被证明在许多序列到序列问题中具有更高的质量。 +早些时候,我们讨论了一种注意力形式,这种形式首次在 2015 年由 Bahdanau 等人提出。具体来说,我们使用一个简单的前馈神经网络来计算每个编码器隐藏状态与当前时间步的解码器状态的对齐分数。在本节中,我们将讨论一种称为*缩放点积注意力*的不同形式的注意力,它在*自注意力*中的使用,以及*Transformer*,这是一种最近的语言建模突破。基于 Transformer 的模型主要取代了 LSTM,并已被证明在许多序列到序列问题中具有更高的质量。 点积注意力实际上就像听起来的那样简单——这种方法计算编码器隐藏状态之间的点积作为对齐分数。这些权重用于计算上下文向量,这是编码器隐藏状态的凸组合(通过 softmax)。为什么使用点积来衡量对齐?正如我们在第一章中学到的,两个向量的点积可以表示为两个向量的范数和它们之间夹角的余弦的乘积。当两个向量之间的夹角趋近于零时,余弦趋近于一。此外,从三角学中我们知道,当输入角度在 0 度到 180 度之间时,余弦的范围是 1 到-1,这是我们需要考虑的角度域的唯一部分。点积具有一个很好的性质,即当两个向量之间的夹角变小时,点积变大。这使我们能够将点积作为相似性的自然度量。 -2017 年,Vaswani 等人^(7)通过引入一个缩放因子——隐藏状态维度的平方根,对现有的点积注意力框架进行了修改。Vaswani 等人承认,随着隐藏状态表示在维度上变得越来越大,我们预计会看到更多高幅度的点积。为了理解包含这个缩放因子的原因,假设每个 h i 的索引都是从均值为零、单位方差的随机变量中独立且相同地抽取的。让我们计算它们的点积的期望和方差: +2017 年,Vaswani 等人⁷通过引入一个缩放因子——隐藏状态维度的平方根,对现有的点积注意力框架进行了修改。Vaswani 等人承认,随着隐藏状态表示在维度上变得越来越大,我们预计会看到更多高幅度的点积。为了理解包含这个缩放因子的原因,假设每个 h i 的索引都是从均值为零、单位方差的随机变量中独立且相同地抽取的。让我们计算它们的点积的期望和方差: 𝔼 [ s t T h i ] = j=1 k 𝔼 [ s t,j * h i,j ] @@ -1038,16 +1038,16 @@ loss += step_loss / steps_per_checkpoint current_step += 1 在本章中,我们深入探讨了序列分析的世界。我们分析了如何修改前馈网络以处理序列,发展了对 RNN 的深刻理解,并探讨了注意力机制如何实现从语言翻译到音频转录等令人难以置信的应用。序列分析是一个领域,不仅涉及自然语言问题,还涉及金融领域的主题,比如对金融资产回报的时间序列分析。任何涉及纵向分析或跨时间分析的领域都可以使用本章描述的序列分析应用。我们建议您通过在不同领域实施序列分析来加深对其的理解,并通过将自然语言技术的结果与各领域的最新技术进行比较。在某些情况下,本文介绍的技术可能不是最合适的建模选择,我们建议您深入思考为什么这里所做的建模假设可能不适用于广泛应用。序列分析是一个强大的工具,在几乎所有技术应用中都有一席之地,不仅仅是自然语言。 -^(1) Nivre, Joakim. “Incrementality in Deterministic Dependency Parsing.” *Proceedings of the Workshop on Incremental Parsing: Bringing Engineering and Cognition Together*. Association for Computational Linguistics, 2004; Chen, Danqi, and Christopher D. Manning. “A Fast and Accurate Dependency Parser Using Neural Networks.” *EMNLP*. 2014. +¹ Nivre, Joakim. “Incrementality in Deterministic Dependency Parsing.” *Proceedings of the Workshop on Incremental Parsing: Bringing Engineering and Cognition Together*. Association for Computational Linguistics, 2004; Chen, Danqi, and Christopher D. Manning. “A Fast and Accurate Dependency Parser Using Neural Networks.” *EMNLP*. 2014. -^(2) Andor, Daniel, et al. “Globally Normalized Transition-Based Neural Networks.” *arXiv preprint* *arXiv*:1603.06042 (2016). +² Andor, Daniel, et al. “Globally Normalized Transition-Based Neural Networks.” *arXiv preprint* *arXiv*:1603.06042 (2016). -^(3) 同上。 +³ 同上。 -^(4) Kilian, Joe, 和 Hava T. Siegelmann。“Sigmoid 神经网络的动态普适性。” *信息与计算* 128.1 (1996): 48-56。 +⁴ Kilian, Joe, 和 Hava T. Siegelmann。“Sigmoid 神经网络的动态普适性。” *信息与计算* 128.1 (1996): 48-56。 -^(5) Kiros, Ryan, 等。“Skip-Thought Vectors。” *神经信息处理系统的进展*。2015 年。 +⁵ Kiros, Ryan, 等。“Skip-Thought Vectors。” *神经信息处理系统的进展*。2015 年。 -^(6) Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “通过联合学习对齐和翻译的神经机器翻译。” *arXiv 预印本 arXiv*:1409.0473 (2014)。 +⁶ Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “通过联合学习对齐和翻译的神经机器翻译。” *arXiv 预印本 arXiv*:1409.0473 (2014)。 -^(7) Vaswani 等。“注意力就是一切。” *arXiv 预印本 arXiv*:1706.03762 2017 年。 +⁷ Vaswani 等。“注意力就是一切。” *arXiv 预印本 arXiv*:1706.03762 2017 年。 diff --git a/totrans/fund-dl_10.md b/totrans/fund-dl_10.md index 0fdeef3..e624d29 100644 --- a/totrans/fund-dl_10.md +++ b/totrans/fund-dl_10.md @@ -1,4 +1,4 @@ -# 第十章. 生成模型 +# 第十章:生成模型 生成模型试图理解产生我们所看到的数据的*潜在*或基础过程。例如,在分解 MNIST 数据集中的数字图像时,我们可以将生成每个图像的潜在过程的一些属性解释为数字本身(从零到九的离散变量)、将绘制图像的方向或角度、生成图像的大小、线条的粗细以及一些噪声成分(所有这些都是连续变量)。到目前为止,我们关注的是*鉴别*模型,无论是在回归还是分类设置中。在分类设置中,鉴别模型将 MNIST 数据集中的图像作为输入,并尝试确定输入最有可能属于的数字类别,从零到九。生成模型则尝试完全建模数据分布,并在此过程中可能隐含地尝试学习先前提到的一些特征,以生成看起来就像最初来自 MNIST 数据集的图像。请注意,生成建模比鉴别建模更难,因为例如,鉴别模型可能只需要很好地学习几个特征,以令人满意地区分 MNIST 数据集中不同数字之间的差异。生成模型有许多种类,在本章中,我们提供了一个瞥见过去十年才开始蓬勃发展的广阔研究领域。 @@ -601,6 +601,6 @@ Vincent 在 2011 年首次提出了使用

p σ 5%)         8              11.2±5.4 在本书的最后一章中,我们将开始探索一个非常不同的问题空间,即强化学习。我们将建立对这一新类任务的直觉,并利用迄今为止我们开发的深度学习工具来解决这些问题的算法基础。 -^(1) 来源:[格雷夫斯等人“神经图灵机。”(2014)](https://arxiv.org/abs/1410.5401) +¹ 来源:[格雷夫斯等人“神经图灵机。”(2014)](https://arxiv.org/abs/1410.5401) diff --git a/totrans/fund-dl_13.md b/totrans/fund-dl_13.md index b384664..35b2bc7 100644 --- a/totrans/fund-dl_13.md +++ b/totrans/fund-dl_13.md @@ -1,4 +1,4 @@ -# 第十三章。深度强化学习 +# 第十三章:深度强化学习 [Nicholas Locascio](http://nicklocascio.com) @@ -6,7 +6,7 @@ # 深度强化学习掌握 Atari 游戏 -2014 年,伦敦初创公司 DeepMind 在强化学习中应用深度神经网络取得了重大突破,令机器学习社区大为震惊,他们揭示了一个可以学会以超人类技能玩 Atari 游戏的深度神经网络。这个网络被称为*深度 Q 网络*(DQN),是强化学习与深度神经网络的首次大规模成功应用。DQN 之所以如此引人注目,是因为相同的架构,没有任何改变,能够学会玩 49 种不同的 Atari 游戏,尽管每个游戏都有不同的规则、目标和游戏结构。为了实现这一壮举,DeepMind 汇集了许多传统的强化学习思想,同时也开发了一些关键的新技术,这些技术对 DQN 的成功至关重要。在本章的后面,我们将实现 DQN,如《自然》杂志上描述的那样,“通过深度强化学习实现人类水平控制”。^(1) 但首先,让我们深入了解强化学习(图 13-1)。 +2014 年,伦敦初创公司 DeepMind 在强化学习中应用深度神经网络取得了重大突破,令机器学习社区大为震惊,他们揭示了一个可以学会以超人类技能玩 Atari 游戏的深度神经网络。这个网络被称为*深度 Q 网络*(DQN),是强化学习与深度神经网络的首次大规模成功应用。DQN 之所以如此引人注目,是因为相同的架构,没有任何改变,能够学会玩 49 种不同的 Atari 游戏,尽管每个游戏都有不同的规则、目标和游戏结构。为了实现这一壮举,DeepMind 汇集了许多传统的强化学习思想,同时也开发了一些关键的新技术,这些技术对 DQN 的成功至关重要。在本章的后面,我们将实现 DQN,如《自然》杂志上描述的那样,“通过深度强化学习实现人类水平控制”。¹ 但首先,让我们深入了解强化学习(图 13-1)。 ![](img/fdl2_1301.png) @@ -30,7 +30,7 @@ ![](img/fdl2_1303.png) -###### 图 13-3。一个简单的强化学习代理:平衡杆^(3) +###### 图 13-3。一个简单的强化学习代理:平衡杆³ # 马尔可夫决策过程 @@ -1017,18 +1017,18 @@ UNREAL 提出了一个问题,我们可以从世界中学到什么,而不需 强化学习对于构建能够不仅感知和解释世界,还能够采取行动并与之互动的代理至关重要。深度强化学习在这方面取得了重大进展,成功地产生了能够掌握 Atari 游戏、安全驾驶汽车、盈利交易股票、控制机器人等的代理。 -^(1) Mnih, Volodymyr, et al. “Human-Level Control Through Deep Reinforcement Learning.” *Nature* 518.7540 (2015): 529-533. +¹ Mnih, Volodymyr, et al. “Human-Level Control Through Deep Reinforcement Learning.” *Nature* 518.7540 (2015): 529-533. -^(2) 这幅图片来自我们在本章中构建的 OpenAI Gym DQN 代理:Brockman, Greg, et al. “OpenAI Gym.” *arXiv preprint arXiv*:1606.01540 (2016). *https://gym.openai.com* +² 这幅图片来自我们在本章中构建的 OpenAI Gym DQN 代理:Brockman, Greg, et al. “OpenAI Gym.” *arXiv preprint arXiv*:1606.01540 (2016). *https://gym.openai.com* -^(3) 这幅图片来自我们在本章中构建的 OpenAI Gym 策略梯度代理。 +³ 这幅图片来自我们在本章中构建的 OpenAI Gym 策略梯度代理。 -^(4) Sutton, Richard S., et al. “Policy Gradient Methods for Reinforcement Learning with Function Approximation.” NIPS. Vol. 99\. 1999. +⁴ Sutton, Richard S., et al. “Policy Gradient Methods for Reinforcement Learning with Function Approximation.” NIPS. Vol. 99\. 1999. -^(5) Sorokin, Ivan, et al. “Deep Attention Recurrent Q-Network.” *arXiv preprint arXiv*:1512.01693 (2015). +⁵ Sorokin, Ivan, et al. “Deep Attention Recurrent Q-Network.” *arXiv preprint arXiv*:1512.01693 (2015). -^(6) Mnih, Volodymyr, et al. “Asynchronous Methods for Deep Reinforcement Learning.” *International Conference on Machine Learning*. 2016. +⁶ Mnih, Volodymyr, et al. “Asynchronous Methods for Deep Reinforcement Learning.” *International Conference on Machine Learning*. 2016. -^(7) Konda, Vijay R., and John N. Tsitsiklis. “Actor-Critic Algorithms.” *NIPS*. Vol. 13\. 1999. +⁷ Konda, Vijay R., and John N. Tsitsiklis. “Actor-Critic Algorithms.” *NIPS*. Vol. 13\. 1999. -^(8) Jaderberg, Max, et al. “Reinforcement Learning with Unsupervised Auxiliary Tasks.” *arXiv preprint arXiv*:1611.05397 (2016). +⁸ Jaderberg, Max, et al. “Reinforcement Learning with Unsupervised Auxiliary Tasks.” *arXiv preprint arXiv*:1611.05397 (2016). diff --git a/totrans/gen-dl_01.md b/totrans/gen-dl_01.md index a1ba6d1..dccaee7 100644 --- a/totrans/gen-dl_01.md +++ b/totrans/gen-dl_01.md @@ -62,7 +62,7 @@ 最后,在第三部分中,我们基于这些基础探索了最先进的图像生成、写作、音乐创作和基于模型的强化学习模型的内部运作: -+ 在第九章“变压器”中,我们探讨了 StyleGAN 模型的渊源和技术细节,以及其他用于图像生成的最先进 GANs,如 VQ-GAN。 ++ 在第九章“Transformer”中,我们探讨了 StyleGAN 模型的渊源和技术细节,以及其他用于图像生成的最先进 GANs,如 VQ-GAN。 + 在第十章“高级 GANs”中,我们考虑了 Transformer 架构,包括一个实用的指南,教你如何构建自己的 GPT 版本用于文本生成。 diff --git a/totrans/gen-dl_03.md b/totrans/gen-dl_03.md index 440e765..7feb139 100644 --- a/totrans/gen-dl_03.md +++ b/totrans/gen-dl_03.md @@ -1,4 +1,4 @@ -# 第一章。生成建模 +# 第一章:生成建模 本章是对生成建模领域的一般介绍。 @@ -58,7 +58,7 @@ ![](img/gdl2_0103.png) -###### 图 1-3。使用生成建模进行人脸生成在过去十年中取得了显著进展(改编自[Brundage et al., 2018](https://www.eff.org/files/2018/02/20/malicious_ai_report_final.pdf))^(1) +###### 图 1-3。使用生成建模进行人脸生成在过去十年中取得了显著进展(改编自[Brundage et al., 2018](https://www.eff.org/files/2018/02/20/malicious_ai_report_final.pdf))¹ 除了更容易处理外,辨别建模在历史上比生成建模更容易应用于跨行业的实际问题。例如,医生可能会从一个可以预测给定视网膜图像是否显示青光眼迹象的模型中受益,但不一定会从一个可以生成眼睛背面的新颖图片的模型中受益。 diff --git a/totrans/gen-dl_04.md b/totrans/gen-dl_04.md index d7b78e9..61f023d 100644 --- a/totrans/gen-dl_04.md +++ b/totrans/gen-dl_04.md @@ -1,4 +1,4 @@ -# 第二章。深度学习 +# 第二章:深度学习 让我们从深度学习的基本定义开始: @@ -94,7 +94,7 @@ MLP 是一种判别模型(而不是生成模型),但在本书后面的章 ![](img/gdl2_0204.png) -###### 图 2-4\. CIFAR-10 数据集中的示例图像(来源:[Krizhevsky, 2009](https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf))^(2) +###### 图 2-4\. CIFAR-10 数据集中的示例图像(来源:[Krizhevsky, 2009](https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf))² 默认情况下,图像数据由每个像素通道的 0 到 255 之间的整数组成。我们首先需要通过将这些值缩放到 0 到 1 之间来预处理图像,因为当每个输入的绝对值小于 1 时,神经网络的效果最好。 @@ -296,7 +296,7 @@ Keras 提供了许多内置的损失函数可供选择,或者你可以创建 ### 优化器 -*优化器* 是基于损失函数的梯度更新神经网络权重的算法。最常用和稳定的优化器之一是 *Adam*(自适应矩估计)。^(3) 在大多数情况下,您不需要调整 Adam 优化器的默认参数,除了 *学习率*。学习率越大,每个训练步骤中权重的变化就越大。虽然初始时使用较大的学习率训练速度更快,但缺点是可能导致训练不稳定,无法找到损失函数的全局最小值。这是您可能需要在训练过程中调整的参数。 +*优化器* 是基于损失函数的梯度更新神经网络权重的算法。最常用和稳定的优化器之一是 *Adam*(自适应矩估计)。³ 在大多数情况下,您不需要调整 Adam 优化器的默认参数,除了 *学习率*。学习率越大,每个训练步骤中权重的变化就越大。虽然初始时使用较大的学习率训练速度更快,但缺点是可能导致训练不稳定,无法找到损失函数的全局最小值。这是您可能需要在训练过程中调整的参数。 另一个您可能遇到的常见优化器是 *RMSProp*(均方根传播)。同样,您不需要太多调整这个优化器的参数,但值得阅读[Keras 文档](https://keras.io/optimizers)以了解每个参数的作用。 @@ -345,7 +345,7 @@ model.fit(x_train ![1](img/1.png) ###### 提示 -使用整个数据集在每个训练步骤中计算梯度将耗费太多时间和计算资源,因此通常使用 32 到 256 之间的批量大小。现在推荐的做法是随着训练的进行增加批量大小。^(4) +使用整个数据集在每个训练步骤中计算梯度将耗费太多时间和计算资源,因此通常使用 32 到 256 之间的批量大小。现在推荐的做法是随着训练的进行增加批量大小。⁴ 这将持续到数据集中的所有观察值都被看到一次。这完成了第一个 *epoch*。然后数据再次以批次的形式通过网络,作为第二个 epoch 的一部分。这个过程重复,直到指定的 epoch 数已经过去。 @@ -592,7 +592,7 @@ model = models.Model(input_layer, output_layer) ![](img/gdl2_0214.png) -###### 图 2-14。批量归一化过程(来源:[Ioffe and Szegedy, 2015](https://arxiv.org/abs/1502.03167))^(6) +###### 图 2-14。批量归一化过程(来源:[Ioffe and Szegedy, 2015](https://arxiv.org/abs/1502.03167))⁶ 我们可以在密集层或卷积层之后放置批量归一化层来归一化输出。 @@ -623,7 +623,7 @@ layers.BatchNormalization(momentum = 0.9) 相同的原则适用于机器学习。任何成功的机器学习算法必须确保它能泛化到未见过的数据,而不仅仅是*记住*训练数据集。如果一个算法在训练数据集上表现良好,但在测试数据集上表现不佳,我们称其为*过拟合*。为了解决这个问题,我们使用*正则化*技术,确保模型在开始过拟合时受到惩罚。 -有许多方法可以对机器学习算法进行正则化,但对于深度学习来说,最常见的一种方法是使用*dropout*层。这个想法是由 Hinton 等人在 2012 年提出的^(7),并在 2014 年由 Srivastava 等人在一篇论文中提出^(8) +有许多方法可以对机器学习算法进行正则化,但对于深度学习来说,最常见的一种方法是使用*dropout*层。这个想法是由 Hinton 等人在 2012 年提出的⁷,并在 2014 年由 Srivastava 等人在一篇论文中提出⁸ Dropout 层非常简单。在训练期间,每个 dropout 层从前一层中选择一组随机单元,并将它们的输出设置为 0,如图 2-15 所示。 @@ -763,18 +763,18 @@ model = models.Model(input_layer, output_layer) 在下一章中,我们将看到如何使用这些积木来设计一个可以生成图像的网络。 -^(1) Kaiming He 等人,“用于图像识别的深度残差学习”,2015 年 12 月 10 日,[*https://arxiv.org/abs/1512.03385*](https://arxiv.org/abs/1512.03385)。 +¹ Kaiming He 等人,“用于图像识别的深度残差学习”,2015 年 12 月 10 日,[*https://arxiv.org/abs/1512.03385*](https://arxiv.org/abs/1512.03385)。 -^(2) Alex Krizhevsky,“从微小图像中学习多层特征”,2009 年 4 月 8 日,[*https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf*](https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf)。 +² Alex Krizhevsky,“从微小图像中学习多层特征”,2009 年 4 月 8 日,[*https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf*](https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf)。 -^(3) Diederik Kingma 和 Jimmy Ba,“Adam:一种随机优化方法”,2014 年 12 月 22 日,[*https://arxiv.org/abs/1412.6980v8*](https://arxiv.org/abs/1412.6980v8)。 +³ Diederik Kingma 和 Jimmy Ba,“Adam:一种随机优化方法”,2014 年 12 月 22 日,[*https://arxiv.org/abs/1412.6980v8*](https://arxiv.org/abs/1412.6980v8)。 -^(4) Samuel L. Smith 等人,“不要降低学习率,增加批量大小”,2017 年 11 月 1 日,[*https://arxiv.org/abs/1711.00489*](https://arxiv.org/abs/1711.00489)。 +⁴ Samuel L. Smith 等人,“不要降低学习率,增加批量大小”,2017 年 11 月 1 日,[*https://arxiv.org/abs/1711.00489*](https://arxiv.org/abs/1711.00489)。 -^(5) Vincent Dumoulin 和 Francesco Visin,“深度学习卷积算术指南”,2018 年 1 月 12 日,[*https://arxiv.org/abs/1603.07285*](https://arxiv.org/abs/1603.07285)。 +⁵ Vincent Dumoulin 和 Francesco Visin,“深度学习卷积算术指南”,2018 年 1 月 12 日,[*https://arxiv.org/abs/1603.07285*](https://arxiv.org/abs/1603.07285)。 -^(6) Sergey Ioffe 和 Christian Szegedy,“批量归一化:通过减少内部协变量转移加速深度网络训练”,2015 年 2 月 11 日,[*https://arxiv.org/abs/1502.03167*](https://arxiv.org/abs/1502.03167)。 +⁶ Sergey Ioffe 和 Christian Szegedy,“批量归一化:通过减少内部协变量转移加速深度网络训练”,2015 年 2 月 11 日,[*https://arxiv.org/abs/1502.03167*](https://arxiv.org/abs/1502.03167)。 -^(7) Hinton 等人,“通过防止特征探测器的共适应来构建网络”,2012 年 7 月 3 日,[*https://arxiv.org/abs/1207.0580*](https://arxiv.org/abs/1207.0580)。 +⁷ Hinton 等人,“通过防止特征探测器的共适应来构建网络”,2012 年 7 月 3 日,[*https://arxiv.org/abs/1207.0580*](https://arxiv.org/abs/1207.0580)。 -^(8) Nitish Srivastava 等人,“Dropout:防止神经网络过拟合的简单方法”,*机器学习研究杂志* 15 (2014): 1929–1958,[*http://jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf*](http://jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf)。 +⁸ Nitish Srivastava 等人,“Dropout:防止神经网络过拟合的简单方法”,*机器学习研究杂志* 15 (2014): 1929–1958,[*http://jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf*](http://jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf)。 diff --git a/totrans/gen-dl_06.md b/totrans/gen-dl_06.md index 9836b47..28adad1 100644 --- a/totrans/gen-dl_06.md +++ b/totrans/gen-dl_06.md @@ -1,6 +1,6 @@ -# 第三章. 变分自动编码器 +# 第三章:变分自动编码器 -2013 年,Diederik P. Kingma 和 Max Welling 发表了一篇论文,奠定了一种称为*变分自动编码器*(VAE)的神经网络类型的基础。^(1) 这现在是最基本和最知名的深度学习架构之一,用于生成建模,也是我们进入生成式深度学习旅程的绝佳起点。 +2013 年,Diederik P. Kingma 和 Max Welling 发表了一篇论文,奠定了一种称为*变分自动编码器*(VAE)的神经网络类型的基础。¹ 这现在是最基本和最知名的深度学习架构之一,用于生成建模,也是我们进入生成式深度学习旅程的绝佳起点。 在本章中,我们将首先构建一个标准的自动编码器,然后看看如何扩展这个框架以开发一个变分自动编码器。在这个过程中,我们将分析这两种模型,以了解它们在细粒度级别上的工作原理。通过本章的结束,您应该完全了解如何构建和操作基于自动编码器的模型,特别是如何从头开始构建一个变分自动编码器,以根据您自己的数据集生成图像。 @@ -660,7 +660,7 @@ TensorFlow 的*梯度带*是一种机制,允许在模型前向传递期间计 ![](img/gdl2_0315.png) -###### 图 3-15。CelebA 数据集的一些示例(来源:[Liu 等,2015](http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html))^(3) +###### 图 3-15。CelebA 数据集的一些示例(来源:[Liu 等,2015](http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html))³ 当我们开始探索这些特征如何在多维潜在空间中被捕获时,我们当然不需要标签来训练 VAE,但这些标签以后会很有用。一旦我们的 VAE 训练完成,我们就可以从潜在空间中进行采样,生成名人面孔的新示例。 @@ -870,8 +870,8 @@ z_new = z_A * (1- alpha) + z_B * alpha 在下一章中,我们将探索一种不同类型的模型,这种模型仍然是生成图像建模的一种流行选择:生成对抗网络。 -^(1) Diederik P. Kingma 和 Max Welling,“自动编码变分贝叶斯”,2013 年 12 月 20 日,[*https://arxiv.org/abs/1312.6114*](https://arxiv.org/abs/1312.6114)。 +¹ Diederik P. Kingma 和 Max Welling,“自动编码变分贝叶斯”,2013 年 12 月 20 日,[*https://arxiv.org/abs/1312.6114*](https://arxiv.org/abs/1312.6114)。 -^(2) Vincent Dumoulin 和 Francesco Visin,“深度学习卷积算术指南”,2018 年 1 月 12 日,[*https://arxiv.org/abs/1603.07285*](https://arxiv.org/abs/1603.07285)。 +² Vincent Dumoulin 和 Francesco Visin,“深度学习卷积算术指南”,2018 年 1 月 12 日,[*https://arxiv.org/abs/1603.07285*](https://arxiv.org/abs/1603.07285)。 -^(3) Ziwei Liu 等,“大规模 CelebFaces 属性(CelebA)数据集”,2015 年,[*http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html*](http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)。 +³ Ziwei Liu 等,“大规模 CelebFaces 属性(CelebA)数据集”,2015 年,[*http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html*](http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)。 diff --git a/totrans/gen-dl_07.md b/totrans/gen-dl_07.md index b339f64..6426375 100644 --- a/totrans/gen-dl_07.md +++ b/totrans/gen-dl_07.md @@ -1,6 +1,6 @@ -# 第四章。生成对抗网络 +# 第四章:生成对抗网络 -2014 年,Ian Goodfellow 等人在蒙特利尔的神经信息处理系统会议(NeurIPS)上发表了一篇名为“生成对抗网络”的论文^(1)。生成对抗网络(或者更常见的称为 GAN)的引入现在被认为是生成建模历史上的一个关键转折点,因为这篇论文中提出的核心思想衍生出了一些最成功和令人印象深刻的生成模型。 +2014 年,Ian Goodfellow 等人在蒙特利尔的神经信息处理系统会议(NeurIPS)上发表了一篇名为“生成对抗网络”的论文¹。生成对抗网络(或者更常见的称为 GAN)的引入现在被认为是生成建模历史上的一个关键转折点,因为这篇论文中提出的核心思想衍生出了一些最成功和令人印象深刻的生成模型。 本章将首先阐述 GAN 的理论基础,然后我们将看到如何使用 Keras 构建我们自己的 GAN。 @@ -22,7 +22,7 @@ GAN 是生成器和鉴别器之间的一场战斗。生成器试图将随机噪 为了看到这个过程,让我们开始在 Keras 中构建我们的第一个 GAN,以生成砖块的图片。 -我们将密切关注 GAN 的第一篇重要论文之一,“使用深度卷积生成对抗网络进行无监督表示学习”^(2)。在这篇 2015 年的论文中,作者展示了如何构建一个深度卷积 GAN 来从各种数据集中生成逼真的图像。他们还引入了一些显著改进生成图像质量的变化。 +我们将密切关注 GAN 的第一篇重要论文之一,“使用深度卷积生成对抗网络进行无监督表示学习”²。在这篇 2015 年的论文中,作者展示了如何构建一个深度卷积 GAN 来从各种数据集中生成逼真的图像。他们还引入了一些显著改进生成图像质量的变化。 # 运行此示例的代码 @@ -941,14 +941,14 @@ def train_step(self, data): 在下一章中,我们将探讨一种适合建模序列数据的不同生成模型家族——自回归模型。 -^(1) Ian J. Goodfellow 等人,“生成对抗网络”,2014 年 6 月 10 日,[*https://arxiv.org/abs/1406.2661*](https://arxiv.org/abs/1406.2661) +¹ Ian J. Goodfellow 等人,“生成对抗网络”,2014 年 6 月 10 日,[*https://arxiv.org/abs/1406.2661*](https://arxiv.org/abs/1406.2661) -^(2) Alec Radford 等人,“使用深度卷积生成对抗网络进行无监督表示学习”,2016 年 1 月 7 日,[*https://arxiv.org/abs/1511.06434*](https://arxiv.org/abs/1511.06434)。 +² Alec Radford 等人,“使用深度卷积生成对抗网络进行无监督表示学习”,2016 年 1 月 7 日,[*https://arxiv.org/abs/1511.06434*](https://arxiv.org/abs/1511.06434)。 -^(3) Augustus Odena 等人,“反卷积和棋盘伪影”,2016 年 10 月 17 日,[*https://distill.pub/2016/deconv-checkerboard*](https://distill.pub/2016/deconv-checkerboard)。 +³ Augustus Odena 等人,“反卷积和棋盘伪影”,2016 年 10 月 17 日,[*https://distill.pub/2016/deconv-checkerboard*](https://distill.pub/2016/deconv-checkerboard)。 -^(4) Martin Arjovsky 等人,“Wasserstein GAN”,2017 年 1 月 26 日,[*https://arxiv.org/abs/1701.07875*](https://arxiv.org/abs/1701.07875)。 +⁴ Martin Arjovsky 等人,“Wasserstein GAN”,2017 年 1 月 26 日,[*https://arxiv.org/abs/1701.07875*](https://arxiv.org/abs/1701.07875)。 -^(5) Ishaan Gulrajani 等人,“改进的 Wasserstein GANs 训练”,2017 年 3 月 31 日,[*https://arxiv.org/abs/1704.00028*](https://arxiv.org/abs/1704.00028)。 +⁵ Ishaan Gulrajani 等人,“改进的 Wasserstein GANs 训练”,2017 年 3 月 31 日,[*https://arxiv.org/abs/1704.00028*](https://arxiv.org/abs/1704.00028)。 -^(6) Mehdi Mirza 和 Simon Osindero,“条件生成对抗网络”,2014 年 11 月 6 日,[*https://arxiv.org/abs/1411.1784*](https://arxiv.org/abs/1411.1784)。 +⁶ Mehdi Mirza 和 Simon Osindero,“条件生成对抗网络”,2014 年 11 月 6 日,[*https://arxiv.org/abs/1411.1784*](https://arxiv.org/abs/1411.1784)。 diff --git a/totrans/gen-dl_08.md b/totrans/gen-dl_08.md index 7e7c78e..f9d0825 100644 --- a/totrans/gen-dl_08.md +++ b/totrans/gen-dl_08.md @@ -1,4 +1,4 @@ -# 第五章。自回归模型 +# 第五章:自回归模型 到目前为止,我们已经探讨了两种涉及潜变量的生成模型家族——变分自动编码器(VAEs)和生成对抗网络(GANs)。在这两种情况下,引入了一个新变量,其分布易于抽样,模型学习如何将此变量*解码*回原始领域。 @@ -18,7 +18,7 @@ LSTM 是一种特殊类型的循环神经网络(RNN)。RNN 包含一个循 当 RNN 首次引入时,循环层非常简单,仅包含一个 tanh 运算符,确保在时间步之间传递的信息在-1 和 1 之间缩放。然而,这种方法被证明存在梯度消失问题,并且在处理长序列数据时不具备良好的可扩展性。 -LSTM 单元最初是在 1997 年由 Sepp Hochreiter 和 Jürgen Schmidhuber 的一篇论文中首次引入的。^(1)在这篇论文中,作者描述了 LSTM 不会像普通 RNN 那样遭受梯度消失问题,并且可以在数百个时间步长的序列上进行训练。自那时以来,LSTM 架构已经被改进和改良,变体如门控循环单元(本章后面讨论)现在被广泛应用并作为 Keras 中的层可用。 +LSTM 单元最初是在 1997 年由 Sepp Hochreiter 和 Jürgen Schmidhuber 的一篇论文中首次引入的。¹在这篇论文中,作者描述了 LSTM 不会像普通 RNN 那样遭受梯度消失问题,并且可以在数百个时间步长的序列上进行训练。自那时以来,LSTM 架构已经被改进和改良,变体如门控循环单元(本章后面讨论)现在被广泛应用并作为 Keras 中的层可用。 LSTM 已经应用于涉及序列数据的各种问题,包括时间序列预测、情感分析和音频分类。在本章中,我们将使用 LSTM 来解决文本生成的挑战。 @@ -531,7 +531,7 @@ model = models.Model(text_in, probabilites) ## 门控循环单元 -另一种常用的 RNN 层是*门控循环单元*(GRU)。^(2) 与 LSTM 单元的主要区别如下: +另一种常用的 RNN 层是*门控循环单元*(GRU)。² 与 LSTM 单元的主要区别如下: 1. *遗忘*和*输入*门被*重置*和*更新*门替换。 @@ -573,7 +573,7 @@ layer = layers.Bidirectional(layers.GRU(100)) # PixelCNN -2016 年,van den Oord 等人^(3)提出了一种通过预测下一个像素的可能性来逐像素生成图像的模型。该模型称为*PixelCNN*,可以训练以自回归方式生成图像。 +2016 年,van den Oord 等人³提出了一种通过预测下一个像素的可能性来逐像素生成图像的模型。该模型称为*PixelCNN*,可以训练以自回归方式生成图像。 我们需要介绍两个新概念来理解 PixelCNN - *掩码卷积层*和*残差块*。 @@ -943,10 +943,10 @@ dist.sample(10).numpy() 在下一章中,我们将探讨另一种生成建模家族,明确地对数据生成分布进行建模—正规化流模型。 -^(1) Sepp Hochreiter 和 Jürgen Schmidhuber, “长短期记忆,” *神经计算* 9 (1997): 1735–1780, [*https://www.bioinf.jku.at/publications/older/2604.pdf*](https://www.bioinf.jku.at/publications/older/2604.pdf). +¹ Sepp Hochreiter 和 Jürgen Schmidhuber, “长短期记忆,” *神经计算* 9 (1997): 1735–1780, [*https://www.bioinf.jku.at/publications/older/2604.pdf*](https://www.bioinf.jku.at/publications/older/2604.pdf). -^(2) Kyunghyun Cho 等人, “使用 RNN 编码器-解码器学习短语表示进行统计机器翻译,” 2014 年 6 月 3 日, [*https://arxiv.org/abs/1406.1078*](https://arxiv.org/abs/1406.1078). +² Kyunghyun Cho 等人, “使用 RNN 编码器-解码器学习短语表示进行统计机器翻译,” 2014 年 6 月 3 日, [*https://arxiv.org/abs/1406.1078*](https://arxiv.org/abs/1406.1078). -^(3) Aaron van den Oord 等人, “像素递归神经网络,” 2016 年 8 月 19 日, [*https://arxiv.org/abs/1601.06759*](https://arxiv.org/abs/1601.06759). +³ Aaron van den Oord 等人, “像素递归神经网络,” 2016 年 8 月 19 日, [*https://arxiv.org/abs/1601.06759*](https://arxiv.org/abs/1601.06759). -^(4) Tim Salimans 等人, “PixelCNN++: 使用离散化逻辑混合似然和其他修改改进 PixelCNN,” 2017 年 1 月 19 日, [*http://arxiv.org/abs/1701.05517*](http://arxiv.org/abs/1701.05517). +⁴ Tim Salimans 等人, “PixelCNN++: 使用离散化逻辑混合似然和其他修改改进 PixelCNN,” 2017 年 1 月 19 日, [*http://arxiv.org/abs/1701.05517*](http://arxiv.org/abs/1701.05517). diff --git a/totrans/gen-dl_09.md b/totrans/gen-dl_09.md index 5dfd755..f8d6baa 100644 --- a/totrans/gen-dl_09.md +++ b/totrans/gen-dl_09.md @@ -1,4 +1,4 @@ -# 第六章。正规化流模型 +# 第六章:正规化流模型 到目前为止,我们已经讨论了三类生成模型家族:变分自动编码器、生成对抗网络和自回归模型。每种模型都提出了不同的方法来解决建模分布 p(x)的挑战,要么通过引入一个可以轻松采样的潜变量(并在 VAE 中使用解码器或在 GAN 中使用生成器进行转换),要么通过可处理地将分布建模为前面元素值的函数(自回归模型)。 @@ -435,7 +435,7 @@ model.fit( ![](img/gdl2_0614.png) -###### 图 6-14。GLOW 模型的随机样本(来源:[Kingma 和 Dhariwal,2018](https://arxiv.org/abs/1807.03039))^(2) +###### 图 6-14。GLOW 模型的随机样本(来源:[Kingma 和 Dhariwal,2018](https://arxiv.org/abs/1807.03039))² ## FFJORD @@ -447,7 +447,7 @@ RealNVP 和 GLOW 是离散时间归一化流模型,即它们通过一组离散 ![](img/gdl2_0615.png) -###### 图 6-15。FFJORD 通过由神经网络参数化的普通微分方程模拟数据分布与标准高斯之间的转换(来源:[Will Grathwohl 等人,2018](https://arxiv.org/abs/1810.01367))^(3) +###### 图 6-15。FFJORD 通过由神经网络参数化的普通微分方程模拟数据分布与标准高斯之间的转换(来源:[Will Grathwohl 等人,2018](https://arxiv.org/abs/1810.01367))³ # 总结 @@ -465,8 +465,8 @@ RealNVP 论文还展示了如何将这种技术应用于图像,通过在耦合 总的来说,我们已经看到了归一化流是一个强大的生成建模家族,可以生成高质量的样本,同时保持能够可靠地描述数据密度函数的能力。 -^(1) Laurent Dinh 等人,“使用 Real NVP 进行密度估计”,2016 年 5 月 27 日,[*https://arxiv.org/abs/1605.08803v3*](https://arxiv.org/abs/1605.08803v3)。 +¹ Laurent Dinh 等人,“使用 Real NVP 进行密度估计”,2016 年 5 月 27 日,[*https://arxiv.org/abs/1605.08803v3*](https://arxiv.org/abs/1605.08803v3)。 -^(2) Diedrick P. Kingma 和 Prafulla Dhariwal,“Glow: 具有可逆 1x1 卷积的生成流”,2018 年 7 月 10 日,[*https://arxiv.org/abs/1807.03039*](https://arxiv.org/abs/1807.03039)。 +² Diedrick P. Kingma 和 Prafulla Dhariwal,“Glow: 具有可逆 1x1 卷积的生成流”,2018 年 7 月 10 日,[*https://arxiv.org/abs/1807.03039*](https://arxiv.org/abs/1807.03039)。 -^(3) Will Grathwohl 等人,“FFJORD: 用于可扩展可逆生成模型的自由形式连续动力学”,2018 年 10 月 22 日,[*https://arxiv.org/abs/1810.01367*](https://arxiv.org/abs/1810.01367)。 +³ Will Grathwohl 等人,“FFJORD: 用于可扩展可逆生成模型的自由形式连续动力学”,2018 年 10 月 22 日,[*https://arxiv.org/abs/1810.01367*](https://arxiv.org/abs/1810.01367)。 diff --git a/totrans/gen-dl_10.md b/totrans/gen-dl_10.md index 5408482..f2dfbcc 100644 --- a/totrans/gen-dl_10.md +++ b/totrans/gen-dl_10.md @@ -1,4 +1,4 @@ -# 第七章。基于能量的模型 +# 第七章:基于能量的模型 基于能量的模型是一类广泛的生成模型,借鉴了建模物理系统的一个关键思想——即,事件的概率可以用玻尔兹曼分布来表示,这是一个特定函数,将实值能量函数归一化在 0 到 1 之间。这个分布最初是由路德维希·玻尔兹曼在 1868 年提出的,他用它来描述处于热平衡状态的气体。 @@ -120,7 +120,7 @@ model = models.Model(ebm_input, ebm_output) ![3](img/3.png) # 随机梯度 Langevin 动力学 -重要的是,当我们穿越样本空间时,我们还必须向输入添加少量随机噪声;否则,有可能陷入局部最小值。因此,该技术被称为随机梯度 Langevin 动力学。^(3) +重要的是,当我们穿越样本空间时,我们还必须向输入添加少量随机噪声;否则,有可能陷入局部最小值。因此,该技术被称为随机梯度 Langevin 动力学。³ 我们可以将这种梯度下降可视化为 图 7-4 中所示,对于一个具有能量函数值的三维空间。路径是一个嘈杂的下降,沿着能量函数 E ( x ) 的负梯度相对于输入 x 下降。在 MNIST 图像数据集中,我们有 1,024 个像素,因此在一个 1,024 维空间中导航,但是相同的原则适用! @@ -190,13 +190,13 @@ def generate_samples(model, inp_imgs, steps, step_size, noise): 现在我们知道如何从样本空间中采样一个新的低能量点,让我们将注意力转向训练模型。 -我们无法应用最大似然估计,因为能量函数不输出概率;它输出的是一个在样本空间中不积分为 1 的分数。相反,我们将应用 Geoffrey Hinton 在 2002 年首次提出的一种技术,称为*对比散度*,用于训练非归一化评分模型。^(4) +我们无法应用最大似然估计,因为能量函数不输出概率;它输出的是一个在样本空间中不积分为 1 的分数。相反,我们将应用 Geoffrey Hinton 在 2002 年首次提出的一种技术,称为*对比散度*,用于训练非归一化评分模型。⁴ 我们希望最小化的值(一如既往)是数据的负对数似然: = - 𝔼 x data log p θ ( 𝐱 ) -当 p θ ( 𝐱 ) 具有玻尔兹曼分布的形式,能量函数为 E θ ( 𝐱 ) ,可以证明该值的梯度可以写成以下形式(Oliver Woodford 的“对比散度笔记”进行完整推导):^(5) +当 p θ ( 𝐱 ) 具有玻尔兹曼分布的形式,能量函数为 E θ ( 𝐱 ) ,可以证明该值的梯度可以写成以下形式(Oliver Woodford 的“对比散度笔记”进行完整推导):⁵ θ = 𝔼 x data θ E θ ( 𝐱 ) - 𝔼 x model θ E θ ( 𝐱 ) @@ -409,7 +409,7 @@ gen_img = generate_samples( 在前面的例子中,我们使用了使用对比散度和 Langevin 动力学采样器训练的深度 EBM。然而,早期的 EBM 模型并没有使用 Langevin 采样,而是依赖于其他技术和架构。 -最早的能量基模型之一是 *Boltzmann 机*。^(6) 这是一个全连接的无向神经网络,其中二进制单元要么是 *可见*(*v*),要么是 *隐藏*(*h*)。网络的给定配置的能量定义如下: +最早的能量基模型之一是 *Boltzmann 机*。⁶ 这是一个全连接的无向神经网络,其中二进制单元要么是 *可见*(*v*),要么是 *隐藏*(*h*)。网络的给定配置的能量定义如下: E θ ( v , h ) = - 1 2 v T L v + h T J h + v T W h @@ -421,7 +421,7 @@ gen_img = generate_samples( 这个模型的扩展,*受限玻尔兹曼机*(RBM),移除了相同类型单元之间的连接,因此创建了一个两层的二部图。这使得 RBM 可以堆叠成*深度信念网络*,以建模更复杂的分布。然而,使用 RBM 对高维数据进行建模仍然是不切实际的,因为仍然需要长混合时间的吉布斯采样。 -直到 2000 年代末,EBM 才被证明具有对更高维数据集进行建模的潜力,并建立了一个构建深度 EBM 的框架。^(7) Langevin 动力学成为 EBM 的首选采样方法,后来演变成一种称为*得分匹配*的训练技术。这进一步发展成一种称为*去噪扩散概率模型*的模型类,为 DALL.E 2 和 ImageGen 等最先进的生成模型提供动力。我们将在第八章中更详细地探讨扩散模型。 +直到 2000 年代末,EBM 才被证明具有对更高维数据集进行建模的潜力,并建立了一个构建深度 EBM 的框架。⁷ Langevin 动力学成为 EBM 的首选采样方法,后来演变成一种称为*得分匹配*的训练技术。这进一步发展成一种称为*去噪扩散概率模型*的模型类,为 DALL.E 2 和 ImageGen 等最先进的生成模型提供动力。我们将在第八章中更详细地探讨扩散模型。 # 摘要 @@ -431,16 +431,16 @@ gen_img = generate_samples( 深度 EBM 的采样是通过 Langevin 动力学实现的,这是一种利用得分相对于输入图像的梯度逐渐将随机噪声转化为合理观察的技术,通过更新输入进行小步骤,沿着梯度下降。这改进了早期的方法,如受限玻尔兹曼机使用的吉布斯采样。 -^(1) 杜一伦和伊戈尔·莫达奇,“基于能量的模型的隐式生成和建模”,2019 年 3 月 20 日,[*https://arxiv.org/abs/1903.08689*](https://arxiv.org/abs/1903.08689)。 +¹ 杜一伦和伊戈尔·莫达奇,“基于能量的模型的隐式生成和建模”,2019 年 3 月 20 日,[*https://arxiv.org/abs/1903.08689*](https://arxiv.org/abs/1903.08689)。 -^(2) Prajit Ramachandran 等人,“搜索激活函数”,2017 年 10 月 16 日,[*https://arxiv.org/abs/1710.05941v2*](https://arxiv.org/abs/1710.05941v2)。 +² Prajit Ramachandran 等人,“搜索激活函数”,2017 年 10 月 16 日,[*https://arxiv.org/abs/1710.05941v2*](https://arxiv.org/abs/1710.05941v2)。 -^(3) Max Welling 和 Yee Whye Teh,“通过随机梯度 Langevin 动力学进行贝叶斯学习”,2011 年,[*https://www.stats.ox.ac.uk/~teh/research/compstats/WelTeh2011a.pdf*](https://www.stats.ox.ac.uk/~teh/research/compstats/WelTeh2011a.pdf) +³ Max Welling 和 Yee Whye Teh,“通过随机梯度 Langevin 动力学进行贝叶斯学习”,2011 年,[*https://www.stats.ox.ac.uk/~teh/research/compstats/WelTeh2011a.pdf*](https://www.stats.ox.ac.uk/~teh/research/compstats/WelTeh2011a.pdf) -^(4) Geoffrey E. Hinton,“通过最小化对比散度训练专家乘积”,2002 年,[*https://www.cs.toronto.edu/~hinton/absps/tr00-004.pdf*](https://www.cs.toronto.edu/~hinton/absps/tr00-004.pdf)。 +⁴ Geoffrey E. Hinton,“通过最小化对比散度训练专家乘积”,2002 年,[*https://www.cs.toronto.edu/~hinton/absps/tr00-004.pdf*](https://www.cs.toronto.edu/~hinton/absps/tr00-004.pdf)。 -^(5) Oliver Woodford,“对比散度笔记”,2006 年,[*https://www.robots.ox.ac.uk/~ojw/files/NotesOnCD.pdf*](https://www.robots.ox.ac.uk/~ojw/files/NotesOnCD.pdf)。 +⁵ Oliver Woodford,“对比散度笔记”,2006 年,[*https://www.robots.ox.ac.uk/~ojw/files/NotesOnCD.pdf*](https://www.robots.ox.ac.uk/~ojw/files/NotesOnCD.pdf)。 -^(6) David H. Ackley 等人,“玻尔兹曼机的学习算法”,1985 年,*认知科学* 9(1), 147-165。 +⁶ David H. Ackley 等人,“玻尔兹曼机的学习算法”,1985 年,*认知科学* 9(1), 147-165。 -^(7) Yann Lecun 等人,“基于能量的学习教程”,2006 年,*[*https://www.researchgate.net/publication/200744586_A_tutorial_on_energy-based_learning*](https://www.researchgate.net/publication/200744586_A_tutorial_on_energy-based_learning)*. +⁷ Yann Lecun 等人,“基于能量的学习教程”,2006 年,*[*https://www.researchgate.net/publication/200744586_A_tutorial_on_energy-based_learning*](https://www.researchgate.net/publication/200744586_A_tutorial_on_energy-based_learning)*. diff --git a/totrans/gen-dl_11.md b/totrans/gen-dl_11.md index c7e0c97..11547a8 100644 --- a/totrans/gen-dl_11.md +++ b/totrans/gen-dl_11.md @@ -1,12 +1,12 @@ -# 第八章。扩散模型 +# 第八章:扩散模型 与 GANs 并驾齐驱,扩散模型是过去十年中引入的最具影响力和影响力的生成建模技术之一。在许多基准测试中,扩散模型现在胜过以前的最先进 GANs,并迅速成为生成建模从业者的首选选择,特别是对于视觉领域(例如,OpenAI 的 DALL.E 2 和 Google 的 ImageGen 用于文本到图像生成)。最近,扩散模型在广泛任务中的应用呈现爆炸性增长,类似于 2017 年至 2020 年间 GAN 的普及。 -许多支撑扩散模型的核心思想与本书中已经探索过的早期类型的生成模型(例如,去噪自动编码器,基于能量的模型)有相似之处。事实上,名称*扩散*灵感来自热力学扩散的深入研究:在 2015 年,这一纯物理领域与深度学习之间建立了重要联系。^(1) +许多支撑扩散模型的核心思想与本书中已经探索过的早期类型的生成模型(例如,去噪自动编码器,基于能量的模型)有相似之处。事实上,名称*扩散*灵感来自热力学扩散的深入研究:在 2015 年,这一纯物理领域与深度学习之间建立了重要联系。¹ -在基于分数的生成模型领域也取得了重要进展,^(2)^,^(3)这是能量基模型的一个分支,直接估计对数分布的梯度(也称为分数函数),以训练模型,作为使用对比散度的替代方法。特别是,杨松和斯特凡诺·厄尔蒙使用多个尺度的噪声扰动应用于原始数据,以确保模型-一个*噪声条件分数网络*(NCSN)在低数据密度区域表现良好。 +在基于分数的生成模型领域也取得了重要进展,²^,³这是能量基模型的一个分支,直接估计对数分布的梯度(也称为分数函数),以训练模型,作为使用对比散度的替代方法。特别是,杨松和斯特凡诺·厄尔蒙使用多个尺度的噪声扰动应用于原始数据,以确保模型-一个*噪声条件分数网络*(NCSN)在低数据密度区域表现良好。 -突破性的扩散模型论文于 2020 年夏天发表。^(4)在前人的基础上,该论文揭示了扩散模型和基于分数的生成模型之间的深刻联系,作者利用这一事实训练了一个可以在几个数据集上与 GANs 匹敌的扩散模型,称为*去噪扩散概率模型*(DDPM)。 +突破性的扩散模型论文于 2020 年夏天发表。⁴在前人的基础上,该论文揭示了扩散模型和基于分数的生成模型之间的深刻联系,作者利用这一事实训练了一个可以在几个数据集上与 GANs 匹敌的扩散模型,称为*去噪扩散概率模型*(DDPM)。 本章将介绍理解去噪扩散模型工作原理的理论要求。然后,您将学习如何使用 Keras 构建自己的去噪扩散模型。 @@ -645,7 +645,7 @@ model.fit( 让我们来分解一下。方程式右侧括号内的第一个项是估计的图像 x 0,使用我们网络预测的噪声 ϵ θ (t) 计算得到。然后我们通过 t - 1 信号率 α ¯ t-1 缩放这个值,并重新应用预测的噪声,但这次是通过 t - 1 噪声率 1 - α ¯ t-1 - σ t 2 进行缩放。还添加了额外的高斯随机噪声 σ t ϵ t,其中 σ t 确定了我们希望生成过程有多随机。 -特殊情况 σ t = 0 对于所有的 t 对应于一种称为*去噪扩散隐式模型*(DDIM)的模型,由 Song 等人在 2020 年提出。^(9) 使用 DDIM,生成过程完全是确定性的—也就是说,相同的随机噪声输入将始终产生相同的输出。这是可取的,因为这样我们在潜在空间的样本和像素空间中生成的输出之间有一个明确定义的映射。 +特殊情况 σ t = 0 对于所有的 t 对应于一种称为*去噪扩散隐式模型*(DDIM)的模型,由 Song 等人在 2020 年提出。⁹ 使用 DDIM,生成过程完全是确定性的—也就是说,相同的随机噪声输入将始终产生相同的输出。这是可取的,因为这样我们在潜在空间的样本和像素空间中生成的输出之间有一个明确定义的映射。 在我们的示例中,我们将实现一个 DDIM,从而使我们的生成过程确定性。DDIM 采样过程(反向扩散)的代码显示在示例 8-11 中。 @@ -784,20 +784,20 @@ class DiffusionModel(models.Model): 我们看到,在逆过程中增加扩散步骤的数量会提高图像生成质量,但会降低速度。 我们还执行了潜在空间算术,以在两个图像之间插值。 -^(1) Jascha Sohl-Dickstein 等,“使用非平衡热力学进行深度无监督学习”,2015 年 3 月 12 日,[*https://arxiv.org/abs/1503.03585*](https://arxiv.org/abs/1503.03585) +¹ Jascha Sohl-Dickstein 等,“使用非平衡热力学进行深度无监督学习”,2015 年 3 月 12 日,[*https://arxiv.org/abs/1503.03585*](https://arxiv.org/abs/1503.03585) -^(2) 杨松和 Stefano Ermon,“通过估计数据分布的梯度进行生成建模”,2019 年 7 月 12 日,[*https://arxiv.org/abs/1907.05600*](https://arxiv.org/abs/1907.05600)。 +² 杨松和 Stefano Ermon,“通过估计数据分布的梯度进行生成建模”,2019 年 7 月 12 日,[*https://arxiv.org/abs/1907.05600*](https://arxiv.org/abs/1907.05600)。 -^(3) 杨松和 Stefano Ermon,“改进训练基于分数的生成模型的技术”,2020 年 6 月 16 日,[*https://arxiv.org/abs/2006.09011*](https://arxiv.org/abs/2006.09011)。 +³ 杨松和 Stefano Ermon,“改进训练基于分数的生成模型的技术”,2020 年 6 月 16 日,[*https://arxiv.org/abs/2006.09011*](https://arxiv.org/abs/2006.09011)。 -^(4) Jonathon Ho 等,“去噪扩散概率模型”,2020 年 6 月 19 日,[*https://arxiv.org/abs/2006.11239*](https://arxiv.org/abs/2006.11239)。 +⁴ Jonathon Ho 等,“去噪扩散概率模型”,2020 年 6 月 19 日,[*https://arxiv.org/abs/2006.11239*](https://arxiv.org/abs/2006.11239)。 -^(5) Alex Nichol 和 Prafulla Dhariwal,“改进去噪扩散概率模型”,2021 年 2 月 18 日,[*https://arxiv.org/abs/2102.09672*](https://arxiv.org/abs/2102.09672)。 +⁵ Alex Nichol 和 Prafulla Dhariwal,“改进去噪扩散概率模型”,2021 年 2 月 18 日,[*https://arxiv.org/abs/2102.09672*](https://arxiv.org/abs/2102.09672)。 -^(6) Ashish Vaswani 等,“注意力就是一切”,2017 年 6 月 12 日,[*https://arxiv.org/abs/1706.03762*](https://arxiv.org/abs/1706.03762)。 +⁶ Ashish Vaswani 等,“注意力就是一切”,2017 年 6 月 12 日,[*https://arxiv.org/abs/1706.03762*](https://arxiv.org/abs/1706.03762)。 -^(7) Ben Mildenhall 等,“NeRF:将场景表示为神经辐射场进行视图合成”,2020 年 3 月 1 日,[*https://arxiv.org/abs/2003.08934*](https://arxiv.org/abs/2003.08934)。 +⁷ Ben Mildenhall 等,“NeRF:将场景表示为神经辐射场进行视图合成”,2020 年 3 月 1 日,[*https://arxiv.org/abs/2003.08934*](https://arxiv.org/abs/2003.08934)。 -^(8) Kaiming He 等,“用于图像识别的深度残差学习”,2015 年 12 月 10 日,[*https://arxiv.org/abs/1512.03385*](https://arxiv.org/abs/1512.03385)。 +⁸ Kaiming He 等,“用于图像识别的深度残差学习”,2015 年 12 月 10 日,[*https://arxiv.org/abs/1512.03385*](https://arxiv.org/abs/1512.03385)。 -^(9) 宋嘉明等,“去噪扩散隐式模型”,2020 年 10 月 6 日,[*https://arxiv.org/abs/2010.02502*](https://arxiv.org/abs/2010.02502)` +⁹ 宋嘉明等,“去噪扩散隐式模型”,2020 年 10 月 6 日,[*https://arxiv.org/abs/2010.02502*](https://arxiv.org/abs/2010.02502)` diff --git a/totrans/gen-dl_13.md b/totrans/gen-dl_13.md index b9ed0f2..afa36ac 100644 --- a/totrans/gen-dl_13.md +++ b/totrans/gen-dl_13.md @@ -1,18 +1,18 @@ -# 第九章 变压器 +# 第九章:Transformer 我们在第五章中看到,我们可以使用循环神经网络(RNNs)(如 LSTM 和 GRU)在文本数据上构建生成模型。这些自回归模型一次处理一个令牌的顺序数据,不断更新一个捕获输入当前潜在表示的隐藏向量。可以设计 RNN 以通过在隐藏向量上应用密集层和 softmax 激活来预测序列中的下一个单词。直到 2017 年,这被认为是生成文本的最复杂方式,当一篇论文永久改变了文本生成的格局。 # 介绍 -谷歌 Brain 的论文,自信地命名为“注意力就是一切”^(1),因推广*注意力*的概念而闻名,这个概念现在驱动着大多数最先进的文本生成模型。 +谷歌 Brain 的论文,自信地命名为“注意力就是一切”¹,因推广*注意力*的概念而闻名,这个概念现在驱动着大多数最先进的文本生成模型。 -作者展示了如何创建称为*变压器*的强大神经网络,用于顺序建模,而不需要复杂的循环或卷积架构,而只依赖于注意机制。这种方法克服了 RNN 方法的一个关键缺点,即难以并行化,因为它必须一次处理一个令牌的序列。变压器是高度可并行化的,使它们能够在大规模数据集上进行训练。 +作者展示了如何创建称为*Transformer*的强大神经网络,用于顺序建模,而不需要复杂的循环或卷积架构,而只依赖于注意机制。这种方法克服了 RNN 方法的一个关键缺点,即难以并行化,因为它必须一次处理一个令牌的序列。Transformer 是高度可并行化的,使它们能够在大规模数据集上进行训练。 -在本章中,我们将深入探讨现代文本生成模型如何利用 Transformer 架构在文本生成挑战中达到最先进的性能。特别是,我们将探索一种称为*生成式预训练变压器*(GPT)的自回归模型,它驱动着 OpenAI 的 GPT-4 模型,被广泛认为是当前文本生成领域的最先进技术。 +在本章中,我们将深入探讨现代文本生成模型如何利用 Transformer 架构在文本生成挑战中达到最先进的性能。特别是,我们将探索一种称为*生成式预训练 Transformer*(GPT)的自回归模型,它驱动着 OpenAI 的 GPT-4 模型,被广泛认为是当前文本生成领域的最先进技术。 # GPT -OpenAI 于 2018 年 6 月推出了 GPT,在论文“通过生成式预训练改进语言理解”中^(2),几乎与原始 Transformer 论文出现一年后完全一致。 +OpenAI 于 2018 年 6 月推出了 GPT,在论文“通过生成式预训练改进语言理解”中²,几乎与原始 Transformer 论文出现一年后完全一致。 在本文中,作者展示了如何训练 Transformer 架构以预测序列中的下一个单词,然后随后对特定下游任务进行微调。 @@ -182,7 +182,7 @@ np.transpose(causal_attention_mask(1, 10, 10, dtype = tf.int32)[0]) 因果掩码仅在*解码器 Transformer*(如 GPT)中需要,其中任务是根据先前的标记顺序生成标记。在训练期间屏蔽未来标记因此至关重要。 -其他类型的 Transformer(例如*编码器 Transformer*)不需要因果掩码,因为它们不是训练来预测下一个标记。例如,Google 的 BERT 预测给定句子中的掩码单词,因此它可以使用单词之前和之后的上下文。^(3) +其他类型的 Transformer(例如*编码器 Transformer*)不需要因果掩码,因为它们不是训练来预测下一个标记。例如,Google 的 BERT 预测给定句子中的掩码单词,因此它可以使用单词之前和之后的上下文。³ 我们将在本章末尾更详细地探讨不同类型的 Transformer。 @@ -206,7 +206,7 @@ np.transpose(causal_attention_mask(1, 10, 10, dtype = tf.int32)[0]) ![](img/gdl2_0907.png) -###### 图 9-7。层归一化与批归一化——归一化统计量是跨蓝色单元计算的(来源:[Sheng 等人,2020](https://arxiv.org/pdf/2003.07845.pdf))^(4) +###### 图 9-7。层归一化与批归一化——归一化统计量是跨蓝色单元计算的(来源:[Sheng 等人,2020](https://arxiv.org/pdf/2003.07845.pdf))⁴ # 层归一化与批归一化 @@ -524,7 +524,7 @@ GPT-3 也可以[根据您自己的训练数据进行微调](https://oreil.ly/B-K ###### 图 9-16。ChatGPT 回答有关 Transformer 的问题的示例 -在撰写本文时,尚无描述 ChatGPT 工作详细信息的官方论文,但根据官方[博客文章](https://openai.com/blog/chatgpt),我们知道它使用一种称为*reinforcement learning from human feedback*(RLHF)的技术来微调 GPT-3.5 模型。这种技术也在 ChatGPT 小组早期的论文^(6)中使用,该论文介绍了*InstructGPT*模型,这是一个经过微调的 GPT-3 模型,专门设计用于更准确地遵循书面说明。 +在撰写本文时,尚无描述 ChatGPT 工作详细信息的官方论文,但根据官方[博客文章](https://openai.com/blog/chatgpt),我们知道它使用一种称为*reinforcement learning from human feedback*(RLHF)的技术来微调 GPT-3.5 模型。这种技术也在 ChatGPT 小组早期的论文⁶中使用,该论文介绍了*InstructGPT*模型,这是一个经过微调的 GPT-3 模型,专门设计用于更准确地遵循书面说明。 ChatGPT 的训练过程如下: @@ -546,7 +546,7 @@ RLHF 过程如图 9-17 所示。 虽然 ChatGPT 仍然存在许多限制(例如有时“产生”事实不正确的信息),但它是一个强大的示例,展示了 Transformers 如何用于构建生成模型,可以产生复杂、长期和新颖的输出,往往难以区分是否为人类生成的文本。像 ChatGPT 这样的模型迄今取得的进展证明了人工智能的潜力及其对世界的变革性影响。 -此外,显而易见的是,基于人工智能的沟通和互动将继续在未来快速发展。像*Visual ChatGPT*^(7)这样的项目现在正在将 ChatGPT 的语言能力与 Stable Diffusion 等视觉基础模型相结合,使用户不仅可以通过文本与 ChatGPT 互动,还可以通过图像。在像 Visual ChatGPT 和 GPT-4 这样的项目中融合语言和视觉能力,有望开启人机交互的新时代。 +此外,显而易见的是,基于人工智能的沟通和互动将继续在未来快速发展。像*Visual ChatGPT*⁷这样的项目现在正在将 ChatGPT 的语言能力与 Stable Diffusion 等视觉基础模型相结合,使用户不仅可以通过文本与 ChatGPT 互动,还可以通过图像。在像 Visual ChatGPT 和 GPT-4 这样的项目中融合语言和视觉能力,有望开启人机交互的新时代。 # 总结 @@ -562,16 +562,16 @@ GPT 利用一种称为注意力的机制,消除了循环层(例如 LSTM) 我们看到了 Transformer 有三个系列(编码器、解码器和编码器-解码器)以及每个系列可以完成的不同任务。最后,我们探讨了其他大型语言模型的结构和训练过程,如谷歌的 T5 和 OpenAI 的 ChatGPT。 -^(1) Ashish Vaswani 等人,“注意力就是一切”,2017 年 6 月 12 日,[*https://arxiv.org/abs/1706.03762*](https://arxiv.org/abs/1706.03762)。 +¹ Ashish Vaswani 等人,“注意力就是一切”,2017 年 6 月 12 日,[*https://arxiv.org/abs/1706.03762*](https://arxiv.org/abs/1706.03762)。 -^(2) Alec Radford 等人,“通过生成式预训练改进语言理解”,2018 年 6 月 11 日,[*https://openai.com/research/language-unsupervised*](https://openai.com/research/language-unsupervised)。 +² Alec Radford 等人,“通过生成式预训练改进语言理解”,2018 年 6 月 11 日,[*https://openai.com/research/language-unsupervised*](https://openai.com/research/language-unsupervised)。 -^(3) Jacob Devlin 等人,“BERT: 深度双向 Transformer 的语言理解预训练”,2018 年 10 月 11 日,[*https://arxiv.org/abs/1810.04805*](https://arxiv.org/abs/1810.04805)。 +³ Jacob Devlin 等人,“BERT: 深度双向 Transformer 的语言理解预训练”,2018 年 10 月 11 日,[*https://arxiv.org/abs/1810.04805*](https://arxiv.org/abs/1810.04805)。 -^(4) Sheng Shen 等人,“PowerNorm: 重新思考 Transformer 中的批归一化”,2020 年 6 月 28 日,[*https://arxiv.org/abs/2003.07845*](https://arxiv.org/abs/2003.07845)。 +⁴ Sheng Shen 等人,“PowerNorm: 重新思考 Transformer 中的批归一化”,2020 年 6 月 28 日,[*https://arxiv.org/abs/2003.07845*](https://arxiv.org/abs/2003.07845)。 -^(5) Colin Raffel 等人,“探索统一文本到文本 Transformer 的迁移学习极限”,2019 年 10 月 23 日,[*https://arxiv.org/abs/1910.10683*](https://arxiv.org/abs/1910.10683)。 +⁵ Colin Raffel 等人,“探索统一文本到文本 Transformer 的迁移学习极限”,2019 年 10 月 23 日,[*https://arxiv.org/abs/1910.10683*](https://arxiv.org/abs/1910.10683)。 -^(6) Long Ouyang 等人,“使用人类反馈训练语言模型遵循指令”,2022 年 3 月 4 日,[*https://arxiv.org/abs/2203.02155*](https://arxiv.org/abs/2203.02155)。 +⁶ Long Ouyang 等人,“使用人类反馈训练语言模型遵循指令”,2022 年 3 月 4 日,[*https://arxiv.org/abs/2203.02155*](https://arxiv.org/abs/2203.02155)。 -^(7) Chenfei Wu 等人,“Visual ChatGPT: 使用视觉基础模型进行对话、绘画和编辑”,2023 年 3 月 8 日,[*https://arxiv.org/abs/2303.04671*](https://arxiv.org/abs/2303.04671)。 +⁷ Chenfei Wu 等人,“Visual ChatGPT: 使用视觉基础模型进行对话、绘画和编辑”,2023 年 3 月 8 日,[*https://arxiv.org/abs/2303.04671*](https://arxiv.org/abs/2303.04671)。 diff --git a/totrans/gen-dl_14.md b/totrans/gen-dl_14.md index b91d244..d580eb4 100644 --- a/totrans/gen-dl_14.md +++ b/totrans/gen-dl_14.md @@ -1,4 +1,4 @@ -# 第十章. 高级 GANs +# 第十章:高级 GANs 第四章介绍了生成对抗网络(GANs),这是一类生成模型,在各种图像生成任务中取得了最先进的结果。模型架构和训练过程的灵活性导致学术界和深度学习从业者找到了设计和训练 GAN 的新方法,从而产生了许多不同的高级架构,我们将在本章中探讨。 @@ -110,7 +110,7 @@ ProGAN 论文的作者发现,当与 Adam 或 RMSProp 等现代优化器结合 # StyleGAN -StyleGAN^(3)是 2018 年的一个 GAN 架构,建立在 ProGAN 论文中的早期思想基础上。实际上,鉴别器是相同的;只有生成器被改变。 +StyleGAN³是 2018 年的一个 GAN 架构,建立在 ProGAN 论文中的早期思想基础上。实际上,鉴别器是相同的;只有生成器被改变。 通常在训练 GAN 时,很难将潜在空间中对应于高级属性的向量分离出来——它们经常是*纠缠在一起*,这意味着调整潜在空间中的图像以使脸部更多雀斑,例如,可能也会无意中改变背景颜色。虽然 ProGAN 生成了极其逼真的图像,但它也不例外。我们理想情况下希望完全控制图像的风格,这需要在潜在空间中对特征进行分离。 @@ -324,21 +324,21 @@ VQ-GAN 论文详细介绍了 VQ-VAE 架构的几个关键变化,如图 10-20 其次,GAN 鉴别器预测图像的小块是否真实或伪造,而不是一次性预测整个图像。这个想法(*PatchGAN*)被应用在 2016 年由 Isola 等人介绍的成功的*pix2pix*图像到图像模型中,并且也成功地作为*CycleGAN*的一部分应用,另一个图像到图像的风格转移模型。PatchGAN 鉴别器输出一个预测向量(每个块的预测),而不是整个图像的单个预测。使用 PatchGAN 鉴别器的好处在于,损失函数可以衡量鉴别器在基于*风格*而不是*内容*来区分图像方面的表现如何。由于鉴别器预测的每个单独元素基于图像的一个小方块,它必须使用块的风格而不是内容来做出决定。这是有用的,因为我们知道 VAE 生成的图像在风格上比真实图像更模糊,因此 PatchGAN 鉴别器可以鼓励 VAE 解码器生成比其自然产生的更清晰的图像。 -第三,与使用单个 MSE 重建损失不同,该损失将输入图像像素与 VAE 解码器输出像素进行比较,VQ-GAN 使用*感知损失*项,计算编码器中间层的特征图与解码器相应层之间的差异。这个想法来自于侯等人 2016 年的论文,^(14)作者在其中展示了这种对损失函数的改变导致更逼真的图像生成。 +第三,与使用单个 MSE 重建损失不同,该损失将输入图像像素与 VAE 解码器输出像素进行比较,VQ-GAN 使用*感知损失*项,计算编码器中间层的特征图与解码器相应层之间的差异。这个想法来自于侯等人 2016 年的论文,¹⁴作者在其中展示了这种对损失函数的改变导致更逼真的图像生成。 最后,模型的自回归部分使用 Transformer 而不是 PixelCNN,训练以生成代码序列。Transformer 在 VQ-GAN 完全训练后的一个单独阶段中进行训练。作者选择仅使用在要预测的令牌周围的滑动窗口内的令牌,而不是完全自回归地使用所有先前的令牌。这确保了模型可以扩展到需要更大潜在网格大小和因此需要 Transformer 生成更多令牌的更大图像。 ## ViT VQ-GAN -Yu 等人在 2021 年的论文“Vector-Quantized Image Modeling with Improved VQGAN”中对 VQ-GAN 进行了最后一个扩展。^(15) 在这里,作者展示了如何将 VQ-GAN 的卷积编码器和解码器替换为 Transformer,如图 10-21 所示。 +Yu 等人在 2021 年的论文“Vector-Quantized Image Modeling with Improved VQGAN”中对 VQ-GAN 进行了最后一个扩展。¹⁵ 在这里,作者展示了如何将 VQ-GAN 的卷积编码器和解码器替换为 Transformer,如图 10-21 所示。 -对于编码器,作者使用*Vision Transformer*(ViT)。^(16) ViT 是一种神经网络架构,将最初设计用于自然语言处理的 Transformer 模型应用于图像数据。ViT 不使用卷积层从图像中提取特征,而是将图像分成一系列补丁,对其进行标记化,然后将其作为输入馈送到编码器 Transformer 中。 +对于编码器,作者使用*Vision Transformer*(ViT)。¹⁶ ViT 是一种神经网络架构,将最初设计用于自然语言处理的 Transformer 模型应用于图像数据。ViT 不使用卷积层从图像中提取特征,而是将图像分成一系列补丁,对其进行标记化,然后将其作为输入馈送到编码器 Transformer 中。 具体来说,在 ViT VQ-GAN 中,非重叠的输入补丁(每个大小为 8×8)首先被展平,然后投影到低维嵌入空间中,位置嵌入被添加。然后,这个序列被馈送到标准编码器 Transformer 中,生成的嵌入根据学习的码书进行量化。这些整数代码然后由解码器 Transformer 模型处理,最终输出是一系列补丁,可以被拼接在一起形成原始图像。整体的编码器-解码器模型被作为自动编码器端到端训练。 ![](img/gdl2_1021.png) -###### 图 10-21。ViT VQ-GAN 的图表:GAN 鉴别器通过额外的对抗损失项帮助 VAE 生成更清晰的图像(来源:[Yu and Koh, 2022](https://ai.googleblog.com/2022/05/vector-quantized-image-modeling-with.html))^(17) +###### 图 10-21。ViT VQ-GAN 的图表:GAN 鉴别器通过额外的对抗损失项帮助 VAE 生成更清晰的图像(来源:[Yu and Koh, 2022](https://ai.googleblog.com/2022/05/vector-quantized-image-modeling-with.html))¹⁷ 与原始 VQ-GAN 模型一样,训练的第二阶段涉及使用自回归解码器 Transformer 生成代码序列。因此,在 ViT VQ-GAN 中总共有三个 Transformer,另外还有 GAN 鉴别器和学习的码书。论文中 ViT VQ-GAN 生成的图像示例显示在图 10-22 中。 @@ -354,38 +354,38 @@ Yu 等人在 2021 年的论文“Vector-Quantized Image Modeling with Improved V 我们还看到了如何将注意力的概念构建到 GAN 中,2018 年引入了 SAGAN。这使网络能够捕捉长距离依赖关系,例如图像相对两侧的相似背景颜色,而无需依赖深度卷积映射将信息传播到图像的空间维度。BigGAN 是这个想法的延伸,进行了几个关键改变,并训练了一个更大的网络以进一步提高图像质量。 -在 VQ-GAN 论文中,作者展示了如何将几种不同类型的生成模型结合起来产生很好的效果。在最初引入具有离散潜在空间的 VAE 概念的 VQ-VAE 论文的基础上,VQ-GAN 还包括一个鼓励 VAE 通过额外的对抗损失项生成更清晰图像的鉴别器。自回归变压器用于构建一个新颖的代码令牌序列,可以由 VAE 解码器解码以生成新颖图像。ViT VQ-GAN 论文进一步扩展了这个想法,通过用变压器替换 VQ-GAN 的卷积编码器和解码器。 +在 VQ-GAN 论文中,作者展示了如何将几种不同类型的生成模型结合起来产生很好的效果。在最初引入具有离散潜在空间的 VAE 概念的 VQ-VAE 论文的基础上,VQ-GAN 还包括一个鼓励 VAE 通过额外的对抗损失项生成更清晰图像的鉴别器。自回归 Transformer 用于构建一个新颖的代码令牌序列,可以由 VAE 解码器解码以生成新颖图像。ViT VQ-GAN 论文进一步扩展了这个想法,通过用 Transformer 替换 VQ-GAN 的卷积编码器和解码器。 -^(1) Huiwen Chang 等人,“Muse: 通过遮罩生成变压器进行文本到图像生成”,2023 年 1 月 2 日,[*https://arxiv.org/abs/2301.00704*](https://arxiv.org/abs/2301.00704)。 +¹ Huiwen Chang 等人,“Muse: 通过遮罩生成 Transformer 进行文本到图像生成”,2023 年 1 月 2 日,[*https://arxiv.org/abs/2301.00704*](https://arxiv.org/abs/2301.00704)。 -^(2) Tero Karras 等人,“用于改善质量、稳定性和变化的 GAN 的渐进增长”,2017 年 10 月 27 日,[*https://arxiv.org/abs/1710.10196*](https://arxiv.org/abs/1710.10196)。 +² Tero Karras 等人,“用于改善质量、稳定性和变化的 GAN 的渐进增长”,2017 年 10 月 27 日,[*https://arxiv.org/abs/1710.10196*](https://arxiv.org/abs/1710.10196)。 -^(3) Tero Karras 等人,“用于生成对抗网络的基于样式的生成器架构”,2018 年 12 月 12 日,[*https://arxiv.org/abs/1812.04948*](https://arxiv.org/abs/1812.04948)。 +³ Tero Karras 等人,“用于生成对抗网络的基于样式的生成器架构”,2018 年 12 月 12 日,[*https://arxiv.org/abs/1812.04948*](https://arxiv.org/abs/1812.04948)。 -^(4) Xun Huang 和 Serge Belongie,“使用自适应实例归一化实时进行任意风格转移”,2017 年 3 月 20 日,[*https://arxiv.org/abs/1703.06868*](https://arxiv.org/abs/1703.06868)。 +⁴ Xun Huang 和 Serge Belongie,“使用自适应实例归一化实时进行任意风格转移”,2017 年 3 月 20 日,[*https://arxiv.org/abs/1703.06868*](https://arxiv.org/abs/1703.06868)。 -^(5) Tero Karras 等人,“分析和改进 StyleGAN 的图像质量”,2019 年 12 月 3 日,[*https://arxiv.org/abs/1912.04958*](https://arxiv.org/abs/1912.04958)。 +⁵ Tero Karras 等人,“分析和改进 StyleGAN 的图像质量”,2019 年 12 月 3 日,[*https://arxiv.org/abs/1912.04958*](https://arxiv.org/abs/1912.04958)。 -^(6) Axel Sauer 等人,“StyleGAN-XL: 将 StyleGAN 扩展到大型多样数据集”,2022 年 2 月 1 日,[*https://arxiv.org/abs/2202.00273v2*](https://arxiv.org/abs/2202.00273v2)。 +⁶ Axel Sauer 等人,“StyleGAN-XL: 将 StyleGAN 扩展到大型多样数据集”,2022 年 2 月 1 日,[*https://arxiv.org/abs/2202.00273v2*](https://arxiv.org/abs/2202.00273v2)。 -^(7) Han Zhang 等人,“自注意力生成对抗网络”,2018 年 5 月 21 日,[*https://arxiv.org/abs/1805.08318*](https://arxiv.org/abs/1805.08318)。 +⁷ Han Zhang 等人,“自注意力生成对抗网络”,2018 年 5 月 21 日,[*https://arxiv.org/abs/1805.08318*](https://arxiv.org/abs/1805.08318)。 -^(8) Andrew Brock 等人,“用于高保真自然图像合成的大规模 GAN 训练”,2018 年 9 月 28 日,[*https://arxiv.org/abs/1809.11096*](https://arxiv.org/abs/1809.11096)。 +⁸ Andrew Brock 等人,“用于高保真自然图像合成的大规模 GAN 训练”,2018 年 9 月 28 日,[*https://arxiv.org/abs/1809.11096*](https://arxiv.org/abs/1809.11096)。 -^(9) Patrick Esser 等人,“驯服变压器以进行高分辨率图像合成”,2020 年 12 月 17 日,[*https://arxiv.org/abs/2012.09841*](https://arxiv.org/abs/2012.09841)。 +⁹ Patrick Esser 等人,“驯服 Transformer 以进行高分辨率图像合成”,2020 年 12 月 17 日,[*https://arxiv.org/abs/2012.09841*](https://arxiv.org/abs/2012.09841)。 -^(10) Aaron van den Oord 等人,“神经离散表示学习”,2017 年 11 月 2 日,[*https://arxiv.org/abs/1711.00937v2*](https://arxiv.org/abs/1711.00937v2)。 +¹⁰ Aaron van den Oord 等人,“神经离散表示学习”,2017 年 11 月 2 日,[*https://arxiv.org/abs/1711.00937v2*](https://arxiv.org/abs/1711.00937v2)。 -^(11) Anders Boesen Lindbo Larsen 等人,“超越像素的自动编码:使用学习的相似度度量”,2015 年 12 月 31 日,[*https://arxiv.org/abs/1512.09300*](https://arxiv.org/abs/1512.09300)。 +¹¹ Anders Boesen Lindbo Larsen 等人,“超越像素的自动编码:使用学习的相似度度量”,2015 年 12 月 31 日,[*https://arxiv.org/abs/1512.09300*](https://arxiv.org/abs/1512.09300)。 -^(12) Phillip Isola 等人,“带条件对抗网络的图像到图像翻译”,2016 年 11 月 21 日,[*https://arxiv.org/abs/1611.07004v3*](https://arxiv.org/abs/1611.07004v3)。 +¹² Phillip Isola 等人,“带条件对抗网络的图像到图像翻译”,2016 年 11 月 21 日,[*https://arxiv.org/abs/1611.07004v3*](https://arxiv.org/abs/1611.07004v3)。 -^(13) Jun-Yan Zhu 等人,“使用循环一致性对抗网络进行无配对图像到图像翻译”,2017 年 3 月 30 日,[*https://arxiv.org/abs/1703.10593*](https://arxiv.org/abs/1703.10593)。 +¹³ Jun-Yan Zhu 等人,“使用循环一致性对抗网络进行无配对图像到图像翻译”,2017 年 3 月 30 日,[*https://arxiv.org/abs/1703.10593*](https://arxiv.org/abs/1703.10593)。 -^(14) Xianxu Hou 等人,“深度特征一致变分自动编码器”,2016 年 10 月 2 日,[*https://arxiv.org/abs/1610.00291*](https://arxiv.org/abs/1610.00291)。 +¹⁴ Xianxu Hou 等人,“深度特征一致变分自动编码器”,2016 年 10 月 2 日,[*https://arxiv.org/abs/1610.00291*](https://arxiv.org/abs/1610.00291)。 -^(15) Jiahui Yu 等人,“改进的 VQGAN 进行矢量量化图像建模”,2021 年 10 月 9 日,[*https://arxiv.org/abs/2110.04627*](https://arxiv.org/abs/2110.04627)。 +¹⁵ Jiahui Yu 等人,“改进的 VQGAN 进行矢量量化图像建模”,2021 年 10 月 9 日,[*https://arxiv.org/abs/2110.04627*](https://arxiv.org/abs/2110.04627)。 -^(16) Alexey Dosovitskiy 等人,“一幅图像价值 16x16 个词:规模化图像识别的变压器”,2020 年 10 月 22 日,[*https://arxiv.org/abs/2010.11929v2*](https://arxiv.org/abs/2010.11929v2)。 +¹⁶ Alexey Dosovitskiy 等人,“一幅图像价值 16x16 个词:规模化图像识别的 Transformer”,2020 年 10 月 22 日,[*https://arxiv.org/abs/2010.11929v2*](https://arxiv.org/abs/2010.11929v2)。 -^(17) Jiahui Yu 和 Jing Yu Koh,“改进的 VQGAN 进行矢量量化图像建模”,2022 年 5 月 18 日,[*https://ai.googleblog.com/2022/05/vector-quantized-image-modeling-with.html*](https://ai.googleblog.com/2022/05/vector-quantized-image-modeling-with.html)。 +¹⁷ Jiahui Yu 和 Jing Yu Koh,“改进的 VQGAN 进行矢量量化图像建模”,2022 年 5 月 18 日,[*https://ai.googleblog.com/2022/05/vector-quantized-image-modeling-with.html*](https://ai.googleblog.com/2022/05/vector-quantized-image-modeling-with.html)。 diff --git a/totrans/gen-dl_15.md b/totrans/gen-dl_15.md index 1d46356..4a51dad 100644 --- a/totrans/gen-dl_15.md +++ b/totrans/gen-dl_15.md @@ -1,4 +1,4 @@ -# 第十一章 音乐生成 +# 第十一章:音乐生成 音乐作曲是一个复杂而创造性的过程,涉及将不同的音乐元素(如旋律、和声、节奏和音色)结合在一起。虽然传统上认为这是一种独特的人类活动,但最近的进展使得生成既能让耳朵愉悦又具有长期结构的音乐成为可能。 @@ -191,7 +191,7 @@ class TokenAndPositionEmbedding(layers.Layer): 设计您的模型没有*对*或*错*的方式——其中一部分乐趣就是尝试不同的设置,看看哪种对您最有效! -## 音乐生成变压器的分析 +## 音乐生成 Transformer 的分析 我们将从头开始生成一些音乐,通过向网络提供一个`START`音符标记和`0.0`持续时间标记(即,我们告诉模型假设它是从乐曲的开头开始)。然后我们可以使用与我们在第九章中用于生成文本序列的相同迭代技术来生成一个音乐段落,如下所示: @@ -241,7 +241,7 @@ class TokenAndPositionEmbedding(layers.Layer): 我们在本节中探讨的 Transformer 对单线(单声部)音乐效果很好,但它能够适应多线(复调)音乐吗? -挑战在于如何将不同的音乐线表示为单个令牌序列。在前一节中,我们决定将音符和音符持续时间分成网络的两个不同输入和输出,但我们也看到我们可以将这些令牌交错成一个单一流。我们可以使用相同的想法来处理复调音乐。这里将介绍两种不同的方法:*网格标记化*和*基于事件的标记化*,正如 2018 年的论文“音乐变压器:生成具有长期结构的音乐”中所讨论的那样。^(1) +挑战在于如何将不同的音乐线表示为单个令牌序列。在前一节中,我们决定将音符和音符持续时间分成网络的两个不同输入和输出,但我们也看到我们可以将这些令牌交错成一个单一流。我们可以使用相同的想法来处理复调音乐。这里将介绍两种不同的方法:*网格标记化*和*基于事件的标记化*,正如 2018 年的论文“音乐 Transformer:生成具有长期结构的音乐”中所讨论的那样。¹ ### 网格标记化 @@ -259,7 +259,7 @@ class TokenAndPositionEmbedding(layers.Layer): ###### 图 11-12。为巴赫赞美诗的前两小节创建网格标记化 -然后,我们将训练我们的变压器模型以预测给定先前令牌的下一个令牌。我们可以通过将序列在时间上以四个音符一组(每个声部一个)展开来将生成的序列解码回网格结构。尽管同一个音符经常被分割成多个令牌,并且在其他声部的令牌之间有令牌,但这种技术效果出奇地好。 +然后,我们将训练我们的 Transformer 模型以预测给定先前令牌的下一个令牌。我们可以通过将序列在时间上以四个音符一组(每个声部一个)展开来将生成的序列解码回网格结构。尽管同一个音符经常被分割成多个令牌,并且在其他声部的令牌之间有令牌,但这种技术效果出奇地好。 然而,也存在一些缺点。首先,请注意,模型无法区分一个长音符和相同音高的两个较短相邻音符。这是因为标记化并没有明确编码音符的持续时间,只是在每个时间步是否存在音符。 @@ -705,10 +705,10 @@ critic = Critic() Transformer 的设计类似于我们在第九章中看到的用于文本生成的网络。音乐和文本生成有很多共同点,通常可以同时用于两者的类似技术。我们通过将两个输入和输出流(音符和持续时间)纳入 Transformer 架构来扩展了 Transformer 架构。我们看到模型能够通过准确生成巴赫音乐来学习关于调式和音阶等概念。 -我们还探讨了如何调整标记化过程以处理多声部(多轨)音乐生成。网格标记化将乐谱的钢琴卷表示序列化,使我们能够在描述每个音轨中存在哪个音符的令牌的单个流上训练变压器,在离散的、等间隔的时间步长间隔内。基于事件的标记化产生了一个*配方*,描述了如何以顺序方式创建多行音乐,通过一系列指令的单个流。这两种方法都有优缺点——变压器基于的音乐生成方法的成功或失败往往严重依赖于标记化方法的选择。 +我们还探讨了如何调整标记化过程以处理多声部(多轨)音乐生成。网格标记化将乐谱的钢琴卷表示序列化,使我们能够在描述每个音轨中存在哪个音符的令牌的单个流上训练 Transformer,在离散的、等间隔的时间步长间隔内。基于事件的标记化产生了一个*配方*,描述了如何以顺序方式创建多行音乐,通过一系列指令的单个流。这两种方法都有优缺点——Transformer 基于的音乐生成方法的成功或失败往往严重依赖于标记化方法的选择。 我们还看到生成音乐并不总是需要顺序方法——MuseGAN 使用卷积来生成具有多轨的多声部乐谱,将乐谱视为图像,其中轨道是图像的各个通道。MuseGAN 的新颖之处在于四个输入噪声向量(和弦、风格、旋律和节奏)的组织方式,使得可以对音乐的高级特征保持完全控制。虽然底层的和声仍然不像巴赫的那样完美或多样化,但这是对一个极其难以掌握的问题的良好尝试,并突显了 GAN 处理各种问题的能力。 -^(1) 黄成志安娜等人,“音乐变压器:生成具有长期结构的音乐”,2018 年 9 月 12 日,[*https://arxiv.org/abs/1809.04281*](https://arxiv.org/abs/1809.04281)。 +¹ 黄成志安娜等人,“音乐 Transformer:生成具有长期结构的音乐”,2018 年 9 月 12 日,[*https://arxiv.org/abs/1809.04281*](https://arxiv.org/abs/1809.04281)。 -^(2) 董浩文等人,“MuseGAN:用于符号音乐生成和伴奏的多轨序列生成对抗网络”,2017 年 9 月 19 日,[*https://arxiv.org/abs/1709.06298*](https://arxiv.org/abs/1709.06298)。 +² 董浩文等人,“MuseGAN:用于符号音乐生成和伴奏的多轨序列生成对抗网络”,2017 年 9 月 19 日,[*https://arxiv.org/abs/1709.06298*](https://arxiv.org/abs/1709.06298)。 diff --git a/totrans/gen-dl_16.md b/totrans/gen-dl_16.md index 8b7edee..6796dd5 100644 --- a/totrans/gen-dl_16.md +++ b/totrans/gen-dl_16.md @@ -1,4 +1,4 @@ -# 第十二章。世界模型 +# 第十二章:世界模型 本章介绍了近年来生成模型最有趣的应用之一,即它们在所谓的世界模型中的使用。 @@ -412,7 +412,7 @@ CMA-ES 只是进化策略的一种形式。简而言之,它通过维护一个 ![CMA-ES 算法的一个代更新](img/gdl2_1213.png) -###### 图 12-13\. CMA-ES 算法的一个更新步骤(来源:[Ha, 2017](http://bit.ly/2XufRwq))^(2) +###### 图 12-13\. CMA-ES 算法的一个更新步骤(来源:[Ha, 2017](http://bit.ly/2XufRwq))² 步骤如下: @@ -518,6 +518,6 @@ VAE 被训练来学习环境的潜在表示,然后作为输入传递给一个 有关该模型的更多信息,请参阅原始论文作者编写的出色互动解释,可在[在线](https://worldmodels.github.io)获取。 -^(1) 大卫·哈和尤尔根·施密德胡伯,“世界模型”,2018 年 3 月 27 日,[*https://arxiv.org/abs/1803.10122*](https://arxiv.org/abs/1803.10122)。 +¹ 大卫·哈和尤尔根·施密德胡伯,“世界模型”,2018 年 3 月 27 日,[*https://arxiv.org/abs/1803.10122*](https://arxiv.org/abs/1803.10122)。 -^(2) 大卫·哈,“演化策略的视觉指南”,2017 年 10 月 29 日,[*https://blog.otoro.net/2017/10/29/visual-evolution-strategies*](https://blog.otoro.net/2017/10/29/visual-evolution-strategies)。 +² 大卫·哈,“演化策略的视觉指南”,2017 年 10 月 29 日,[*https://blog.otoro.net/2017/10/29/visual-evolution-strategies*](https://blog.otoro.net/2017/10/29/visual-evolution-strategies)。 diff --git a/totrans/gen-dl_17.md b/totrans/gen-dl_17.md index 64e995e..ed35836 100644 --- a/totrans/gen-dl_17.md +++ b/totrans/gen-dl_17.md @@ -1,4 +1,4 @@ -# 第十三章。多模态模型 +# 第十三章:多模态模型 到目前为止,我们已经分析了专注于单一数据模态的生成学习问题:文本、图像或音乐。我们已经看到了 GAN 和扩散模型如何生成最先进的图像,以及 Transformer 如何引领文本和图像生成的方式。然而,作为人类,我们没有跨模态的困难——例如,描述给定照片中正在发生的事情,创作数字艺术来描绘书中虚构的幻想世界,或将电影配乐与给定场景的情感相匹配。我们能训练机器做同样的事吗? @@ -46,7 +46,7 @@ DALL.E 2 是一个非常令人印象深刻的模型,进一步增进了我们 ## CLIP -[CLIP](https://openai.com/blog/clip)^(3)是 OpenAI 于 2021 年 2 月发布的一篇论文中公布的(就在第一篇 DALL.E 论文发布几天后),该论文将其描述为“一种能够有效地从自然语言监督中学习视觉概念的神经网络。” +[CLIP](https://openai.com/blog/clip)³是 OpenAI 于 2021 年 2 月发布的一篇论文中公布的(就在第一篇 DALL.E 论文发布几天后),该论文将其描述为“一种能够有效地从自然语言监督中学习视觉概念的神经网络。” 它使用一种称为*对比学习*的技术将图像与文本描述进行匹配。该模型在从互联网上抓取的 4 亿个文本-图像对数据集上进行训练——一些示例对显示在图 13-3 中。作为比较,ImageNet 中有 1400 万个手动注释的图像。给定一幅图像和一组可能的文本描述,它的任务是找到实际与图像匹配的描述。 @@ -112,13 +112,13 @@ DALL.E 2 的自回归先验是一个编码器-解码器 Transformer。它经过 该模型在 CLIP 文本-图像对数据集上进行训练。您可以将其视为我们需要的桥梁的第二部分,以便从文本领域跳转到图像领域:我们正在将一个向量从文本嵌入潜在空间转换为图像嵌入潜在空间。 -输入文本嵌入由变压器的编码器处理,产生另一个表示,传递给解码器,同时传递当前生成的输出图像嵌入。输出是逐个元素生成的,使用教师强制来比较预测的下一个元素与实际的 CLIP 图像嵌入。 +输入文本嵌入由 Transformer 的编码器处理,产生另一个表示,传递给解码器,同时传递当前生成的输出图像嵌入。输出是逐个元素生成的,使用教师强制来比较预测的下一个元素与实际的 CLIP 图像嵌入。 生成的顺序性意味着自回归模型在计算效率上不如作者尝试的其他方法,接下来我们将看一下这些方法。 ### 扩散先验 -正如我们在第八章中看到的,扩散模型正迅速成为生成建模从业者的首选之一,与变压器并列。在 DALL.E 2 中,一个仅使用解码器的变压器作为先验,通过扩散过程进行训练。 +正如我们在第八章中看到的,扩散模型正迅速成为生成建模从业者的首选之一,与 Transformer 并列。在 DALL.E 2 中,一个仅使用解码器的 Transformer 作为先验,通过扩散过程进行训练。 训练和生成过程如图 13-9 所示。再次强调,这是一个简化版本;原始论文包含了扩散模型结构的所有细节。 @@ -134,7 +134,7 @@ DALL.E 2 的自回归先验是一个编码器-解码器 Transformer。它经过 DALL.E 2 的最后部分是解码器。这是模型的一部分,根据文本提示和先验输出的预测图像嵌入生成最终图像。 -解码器的架构和训练过程借鉴了早前 OpenAI 发表的一篇论文,该论文于 2021 年 12 月发表,介绍了一种名为 Guided Language to Image Diffusion for Generation and Editing (GLIDE)的生成模型。^(4) +解码器的架构和训练过程借鉴了早前 OpenAI 发表的一篇论文,该论文于 2021 年 12 月发表,介绍了一种名为 Guided Language to Image Diffusion for Generation and Editing (GLIDE)的生成模型。⁴ GLIDE 能够从文本提示中生成逼真的图像,这与 DALL.E 2 的工作方式非常相似。不同之处在于 GLIDE 不使用 CLIP 嵌入,而是直接使用原始文本提示进行训练,从头开始训练整个模型,如图 13-10 所示。 @@ -146,9 +146,9 @@ GLIDE 能够从文本提示中生成逼真的图像,这与 DALL.E 2 的工作 ### GLIDE -GLIDE 作为一个扩散模型进行训练,使用 U-Net 架构作为去噪器,使用变压器架构作为文本编码器。它学会了根据文本提示消除添加到图像中的噪声。最后,一个*上采样器*被训练以将生成的图像缩放到 1,024×1,024 像素。 +GLIDE 作为一个扩散模型进行训练,使用 U-Net 架构作为去噪器,使用 Transformer 架构作为文本编码器。它学会了根据文本提示消除添加到图像中的噪声。最后,一个*上采样器*被训练以将生成的图像缩放到 1,024×1,024 像素。 -GLIDE 从头开始训练 35 亿(B)参数模型—模型的视觉部分(U-Net 和上采样器)有 23 亿参数,变压器有 12 亿参数。它在 2.5 亿文本-图像对上进行训练。 +GLIDE 从头开始训练 35 亿(B)参数模型—模型的视觉部分(U-Net 和上采样器)有 23 亿参数,Transformer 有 12 亿参数。它在 2.5 亿文本-图像对上进行训练。 扩散过程如图 13-11 所示。使用 Transformer 创建输入文本提示的嵌入,然后用于引导 U-Net 进行去噪过程。我们在第八章中探讨了 U-Net 架构;当图像的整体大小应保持不变时(例如,用于风格转移、去噪等),这是一个完美的模型选择。 @@ -276,7 +276,7 @@ DALL.E 2 和 Imagen 都是在文本到图像生成领域做出了重大贡献的 ## 架构 -稳定扩散和之前讨论的文本到图像模型之间的主要架构差异在于它使用*潜在扩散*作为其基础生成模型。潜在扩散模型(LDMs)是由 Rombach 等人在 2021 年 12 月提出的,在论文“使用潜在扩散模型进行高分辨率图像合成”中。^(6) 该论文的关键思想是将扩散模型包装在一个自动编码器中,使得扩散过程在图像的潜在空间表示上运行,而不是在图像本身上运行,如图 13-20 所示。 +稳定扩散和之前讨论的文本到图像模型之间的主要架构差异在于它使用*潜在扩散*作为其基础生成模型。潜在扩散模型(LDMs)是由 Rombach 等人在 2021 年 12 月提出的,在论文“使用潜在扩散模型进行高分辨率图像合成”中。⁶ 该论文的关键思想是将扩散模型包装在一个自动编码器中,使得扩散过程在图像的潜在空间表示上运行,而不是在图像本身上运行,如图 13-20 所示。 ![](img/gdl2_1320.png) @@ -300,7 +300,7 @@ DALL.E 2 和 Imagen 都是在文本到图像生成领域做出了重大贡献的 # Flamingo -到目前为止,我们已经看过三种不同类型的文本到图像模型。在本节中,我们将探索一种多模态模型,它可以根据文本和视觉数据流生成文本。Flamingo 是 DeepMind 在 2022 年 4 月发表的一篇论文中介绍的,^(7)是一系列视觉语言模型(VLMs),作为预训练的仅视觉和仅语言模型之间的桥梁。 +到目前为止,我们已经看过三种不同类型的文本到图像模型。在本节中,我们将探索一种多模态模型,它可以根据文本和视觉数据流生成文本。Flamingo 是 DeepMind 在 2022 年 4 月发表的一篇论文中介绍的,⁷是一系列视觉语言模型(VLMs),作为预训练的仅视觉和仅语言模型之间的桥梁。 在这一部分,我们将介绍 Flamingo 模型的架构,并将其与我们迄今为止看到的文本到图像模型进行比较。 @@ -316,7 +316,7 @@ Flamingo 的整体架构显示在图 13-22 中。为了简洁起见,我们将 Flamingo 模型与纯文本到图像模型(如 DALL.E 2 和 Imagen)之间的第一个区别是,Flamingo 可以接受交错的文本和视觉数据的组合。这里,*视觉数据*包括视频和图像。 -视觉编码器的工作是将输入中的视觉数据转换为嵌入向量(类似于 CLIP 中的图像编码器)。Flamingo 中的视觉编码器是一个预训练的无归一化 ResNet(NFNet),由 Brock 等人在 2021 年介绍^(8)—具体来说,是一个 NFNet-F6(NFNet 模型从 F0 到 F6,大小和功率逐渐增加)。这是 CLIP 图像编码器和 Flamingo 视觉编码器之间的一个关键区别:前者使用 ViT 架构,而后者使用 ResNet 架构。 +视觉编码器的工作是将输入中的视觉数据转换为嵌入向量(类似于 CLIP 中的图像编码器)。Flamingo 中的视觉编码器是一个预训练的无归一化 ResNet(NFNet),由 Brock 等人在 2021 年介绍⁸—具体来说,是一个 NFNet-F6(NFNet 模型从 F0 到 F6,大小和功率逐渐增加)。这是 CLIP 图像编码器和 Flamingo 视觉编码器之间的一个关键区别:前者使用 ViT 架构,而后者使用 ResNet 架构。 视觉编码器是使用与 CLIP 论文中引入的对比目标相同的图像-文本对进行训练的。训练后,权重被冻结,以便对 Flamingo 模型的任何进一步训练不会影响视觉编码器的权重。 @@ -336,7 +336,7 @@ Perceiver Resampler 的输出是一个固定长度的潜在向量,传递给语 ## 语言模型 -语言模型由几个堆叠的块组成,以解码器 Transformer 的风格输出预测的文本延续。事实上,语言模型的大部分来自一个名为*Chinchilla*的预训练 DeepMind 模型。2022 年 3 月发表的 Chinchilla 论文^(9)展示了一个设计得比同行要小得多的语言模型(例如,Chinchilla 的参数为 70B,而 GPT-3 的参数为 170B),同时在训练中使用了更多标记。作者表明,该模型在一系列任务上优于更大的模型,突出了在训练更大的模型和在训练期间使用更多标记之间优化权衡的重要性。 +语言模型由几个堆叠的块组成,以解码器 Transformer 的风格输出预测的文本延续。事实上,语言模型的大部分来自一个名为*Chinchilla*的预训练 DeepMind 模型。2022 年 3 月发表的 Chinchilla 论文⁹展示了一个设计得比同行要小得多的语言模型(例如,Chinchilla 的参数为 70B,而 GPT-3 的参数为 170B),同时在训练中使用了更多标记。作者表明,该模型在一系列任务上优于更大的模型,突出了在训练更大的模型和在训练期间使用更多标记之间优化权衡的重要性。 Flamingo 论文的一个关键贡献是展示了 Chinchilla 如何适应与插入语言数据(`Y`)一起工作的额外视觉数据(`X`)。让我们首先探讨语言和视觉输入是如何结合以产生语言模型的输入的(图 13-24)。 @@ -398,6 +398,6 @@ DALL.E 2 是来自 OpenAI 的大规模文本到图像模型,可以根据文本 让-巴蒂斯特·阿拉拉克等人,“Flamingo: 一种用于少样本学习的视觉语言模型”,2022 年 4 月 29 日,https://arxiv.org/abs/2204.14198。 -^(8) Andrew Brock 等人,“无归一化的高性能大规模图像识别”,2021 年 2 月 11 日,[*https://arxiv.org/abs/2102.06171*](https://arxiv.org/abs/2102.06171)。 +⁸ Andrew Brock 等人,“无归一化的高性能大规模图像识别”,2021 年 2 月 11 日,[*https://arxiv.org/abs/2102.06171*](https://arxiv.org/abs/2102.06171)。 -^(9) Jordan Hoffmann 等人,“训练计算优化的大型语言模型”,2022 年 3 月 29 日,[*https://arxiv.org/abs/2203.15556v1*](https://arxiv.org/abs/2203.15556v1)。 +⁹ Jordan Hoffmann 等人,“训练计算优化的大型语言模型”,2022 年 3 月 29 日,[*https://arxiv.org/abs/2203.15556v1*](https://arxiv.org/abs/2203.15556v1)。 diff --git a/totrans/gen-dl_18.md b/totrans/gen-dl_18.md index 515d309..4abec72 100644 --- a/totrans/gen-dl_18.md +++ b/totrans/gen-dl_18.md @@ -1,4 +1,4 @@ -# 第十四章。结论 +# 第十四章:结论 2018 年 5 月,我开始着手第一版这本书的工作。五年后,我对生成 AI 的无限可能性和潜在影响感到比以往任何时候都更加兴奋。 @@ -18,7 +18,7 @@ 1. 2014 年至 2017 年:VAE 和 GAN 时代 -1. 2018 年至 2019 年:变压器时代 +1. 2018 年至 2019 年:Transformer 时代 1. 2020 年至 2022 年:大模型时代 @@ -92,7 +92,7 @@ Transformer 也开始成功应用于音乐生成,例如 Music Transformer(20 许多人仍认为 OpenAI 的 GPT 系列(GPT-3、GPT-3.5、GPT-4 等)是目前个人和商业使用中最强大的最新语言模型套件。它们可以通过[网络应用](https://platform.openai.com/playground)和[API](https://openai.com/api)使用。 -大型语言模型家族的另一个最新成员是 Meta 推出的*大型语言模型 Meta AI*(LLaMA),^(1),这是一套从 7B 到 65B 参数大小的模型系列,纯粹基于公开可用的数据集进行训练。 +大型语言模型家族的另一个最新成员是 Meta 推出的*大型语言模型 Meta AI*(LLaMA),¹,这是一套从 7B 到 65B 参数大小的模型系列,纯粹基于公开可用的数据集进行训练。 今天存在的一些最强大的 LLM 的摘要显示在表 14-1 中。有些模型,如 LLaMA,是不同规模模型的系列—在这种情况下,最大模型的规模显示在这里。一些模型的预训练权重是完全开源的,这意味着任何人都可以免费使用和构建。 @@ -287,7 +287,7 @@ ControlNet 包含一个可训练的稳定扩散编码器副本,以及一个完 例如,大型语言模型的一个主要批评是,当询问一个陌生或矛盾的主题时,它们很容易生成错误信息,如图 14-4 所示。这种危险在于很难知道生成的回应中包含的信息是否真实准确。即使您要求 LLM 解释其推理或引用来源,它可能会编造参考文献或说出一系列逻辑上不相连的陈述。这不是一个容易解决的问题,因为 LLM 只是一组权重,准确捕捉给定一组输入标记时最可能的下一个词-它没有可以用作参考的*真实*信息库。 -解决这个问题的一个潜在方案是为大型语言模型提供调用结构化工具的能力,如计算器、代码编译器和在线信息源,用于需要精确执行或事实的任务。例如,图 14-11 展示了 Meta 于 2023 年 2 月发布的名为*Toolformer*的模型的输出。^(4) +解决这个问题的一个潜在方案是为大型语言模型提供调用结构化工具的能力,如计算器、代码编译器和在线信息源,用于需要精确执行或事实的任务。例如,图 14-11 展示了 Meta 于 2023 年 2 月发布的名为*Toolformer*的模型的输出。⁴ ![](img/gdl2_1411.png) @@ -319,10 +319,10 @@ Toolformer 能够明确调用 API 以获取信息,作为其生成式响应的 在这个基础上,我鼓励您继续从在线和其他书籍中提供的优质材料中学习更多关于生成模型的知识。感谢您抽出时间阅读本书至此,希望您和我一样享受阅读的乐趣! -^(1) Hugo Touvron 等人,“LLaMA: 开放高效的基础语言模型”,2023 年 2 月 27 日,[*https://arxiv.org/abs/2302.13971*](https://arxiv.org/abs/2302.13971)。 +¹ Hugo Touvron 等人,“LLaMA: 开放高效的基础语言模型”,2023 年 2 月 27 日,[*https://arxiv.org/abs/2302.13971*](https://arxiv.org/abs/2302.13971)。 -^(2) Mark Chen 等人,“评估在代码上训练的大型语言模型”,2021 年 7 月 7 日,[*https://arxiv.org/abs/2107.03374*](https://arxiv.org/abs/2107.03374)。 +² Mark Chen 等人,“评估在代码上训练的大型语言模型”,2021 年 7 月 7 日,[*https://arxiv.org/abs/2107.03374*](https://arxiv.org/abs/2107.03374)。 -^(3) 张旅民和 Maneesh Agrawala,“向文本到图像扩散模型添加条件控制”,2023 年 2 月 10 日,[*https://arxiv.org/abs/2302.05543*](https://arxiv.org/abs/2302.05543)。 +³ 张旅民和 Maneesh Agrawala,“向文本到图像扩散模型添加条件控制”,2023 年 2 月 10 日,[*https://arxiv.org/abs/2302.05543*](https://arxiv.org/abs/2302.05543)。 -^(4) Timo Schick 等人,“Toolformer: 语言模型可以自学使用工具”,2023 年 2 月 9 日,[*https://arxiv.org/abs/2302.04761*](https://arxiv.org/abs/2302.04761)。 +⁴ Timo Schick 等人,“Toolformer: 语言模型可以自学使用工具”,2023 年 2 月 9 日,[*https://arxiv.org/abs/2302.04761*](https://arxiv.org/abs/2302.04761)。 diff --git a/totrans/prac-dl-cld_01.md b/totrans/prac-dl-cld_01.md index 4bbafbe..89f5f50 100644 --- a/totrans/prac-dl-cld_01.md +++ b/totrans/prac-dl-cld_01.md @@ -1,4 +1,4 @@ -# 第一章 探索人工智能的领域 +# 第一章:探索人工智能的领域 以下是 Dr. May Carson(图 1-1)关于人工智能(AI)在 21 世纪人类生活中角色变化的重要论文中的话: @@ -709,4 +709,4 @@ TensorFlow 实现了许多前述承诺,从开发到部署形成了一个端到 如果您正在阅读盗版副本,请考虑我们对您感到失望。 -^(2) [Robert Geirhos 等人](https://arxiv.org/pdf/1811.12231.pdf) +² [Robert Geirhos 等人](https://arxiv.org/pdf/1811.12231.pdf) diff --git a/totrans/prac-dl-cld_02.md b/totrans/prac-dl-cld_02.md index 930cccb..441d3ad 100644 --- a/totrans/prac-dl-cld_02.md +++ b/totrans/prac-dl-cld_02.md @@ -1,4 +1,4 @@ -# 第二章。图片中有什么:使用 Keras 进行图像分类 +# 第二章:图片中有什么:使用 Keras 进行图像分类 如果您浏览过深度学习文献,可能会看到一大堆充斥着令人生畏的数学的学术解释。不用担心。我们将通过一个简单的例子来引导您进入实际的深度学习,只需几行代码就可以对图像进行分类。 @@ -277,7 +277,7 @@ $ ffmpeg -framerate 25 -i kitchen-output/result-%04d.jpg kitchen-output.mp4 ###### 提示 -热图是一种在数据中可视化检测偏见的好方法。模型预测的质量严重依赖于其训练的数据。如果数据存在偏见,那将反映在预测中。一个很好的例子是(尽管可能是一个都市传说),美国军方想要使用神经网络来检测伪装在树木中的敌方坦克。^(1) 构建模型的研究人员拍摄了照片——50%包含伪装的坦克,50%只有树木。模型训练得到了 100%的准确率。值得庆祝吗?遗憾的是,当美国军方进行测试时情况并非如此。该模型表现得非常糟糕——不比随机猜测好。调查发现,带有坦克的照片是在多云(阴天)拍摄的,而没有坦克的照片是在晴朗的天气拍摄的。神经网络模型开始寻找天空而不是坦克。如果研究人员使用热图来可视化模型,他们会很早就发现这个问题。 +热图是一种在数据中可视化检测偏见的好方法。模型预测的质量严重依赖于其训练的数据。如果数据存在偏见,那将反映在预测中。一个很好的例子是(尽管可能是一个都市传说),美国军方想要使用神经网络来检测伪装在树木中的敌方坦克。¹ 构建模型的研究人员拍摄了照片——50%包含伪装的坦克,50%只有树木。模型训练得到了 100%的准确率。值得庆祝吗?遗憾的是,当美国军方进行测试时情况并非如此。该模型表现得非常糟糕——不比随机猜测好。调查发现,带有坦克的照片是在多云(阴天)拍摄的,而没有坦克的照片是在晴朗的天气拍摄的。神经网络模型开始寻找天空而不是坦克。如果研究人员使用热图来可视化模型,他们会很早就发现这个问题。 在收集数据时,我们必须警惕潜在的偏见,这可能会影响我们模型的学习。例如,当收集图像来构建食物分类器时,我们应该验证其他人工制品(如盘子和餐具)是否被学习为食物。否则,筷子的存在可能会导致我们的食物被分类为炒面。另一个术语来定义这个问题是*共现性*。食物经常与餐具共同出现。因此要注意这些人工制品是否渗入到分类器的训练中。 @@ -287,4 +287,4 @@ $ ffmpeg -framerate 25 -i kitchen-output/result-%04d.jpg kitchen-output.mp4 在第三章中,我们探讨了如何调整现有的预训练模型,以便对其原始意图之外的输入类别进行预测。与当前章节一样,我们的方法旨在获得输出,而无需数百万张图片和大量硬件资源来训练分类器。 -^(1) [“人工智能作为全球风险中的积极和消极因素”](https://oreil.ly/-svD0) 作者 Eliezer Yudkowsky 在《全球灾难性风险》(牛津大学出版社)中。 +¹ [“人工智能作为全球风险中的积极和消极因素”](https://oreil.ly/-svD0) 作者 Eliezer Yudkowsky 在《全球灾难性风险》(牛津大学出版社)中。 diff --git a/totrans/prac-dl-cld_03.md b/totrans/prac-dl-cld_03.md index 2b0a4b5..9056947 100644 --- a/totrans/prac-dl-cld_03.md +++ b/totrans/prac-dl-cld_03.md @@ -1,4 +1,4 @@ -# 第三章。猫与狗:使用 Keras 中的 30 行进行迁移学习 +# 第三章:猫与狗:使用 Keras 中的 30 行进行迁移学习 想象一下,我们想学习如何演奏口琴,这是一种手持键盘形式的吹奏乐器。如果没有音乐背景,口琴是我们的第一件乐器,可能需要我们几个月的时间才能熟练演奏。相比之下,如果我们已经擅长演奏另一种乐器,比如钢琴,可能只需要几天的时间,因为这两种乐器非常相似。将一个任务的经验应用到另一个类似任务上进行微调是我们在现实生活中经常做的事情(如图 3-1 所示)。两个任务越相似,将一个任务的经验应用到另一个任务上就越容易。 diff --git a/totrans/prac-dl-cld_04.md b/totrans/prac-dl-cld_04.md index 4b58dcc..b876e4e 100644 --- a/totrans/prac-dl-cld_04.md +++ b/totrans/prac-dl-cld_04.md @@ -1,4 +1,4 @@ -# 第四章。构建反向图像搜索引擎:理解嵌入 +# 第四章:构建反向图像搜索引擎:理解嵌入 鲍勃刚刚买了一套新房子,正在寻找一些时尚现代的家具来填充它。他不停地翻阅家具目录,参观家具展厅,但还没有找到自己喜欢的东西。然后有一天,他看到了他梦寐以求的沙发——一张独特的 L 形白色现代沙发在一个办公室接待处。好消息是他知道自己想要什么。坏消息是他不知道从哪里购买。沙发上没有写品牌和型号号码。询问办公室经理也没有帮助。所以,他从不同角度拍了几张照片,想在当地的家具店里打听,但运气不佳:没有人知道这个特定品牌。在互联网上使用“白色 L 形”、“现代沙发”等关键词搜索给他带来了成千上万的结果,但没有他在找的那个。 diff --git a/totrans/prac-dl-cld_05.md b/totrans/prac-dl-cld_05.md index 1cf136a..645028a 100644 --- a/totrans/prac-dl-cld_05.md +++ b/totrans/prac-dl-cld_05.md @@ -1,4 +1,4 @@ -# 第五章。从新手到大师预测者:最大化卷积神经网络准确性 +# 第五章:从新手到大师预测者:最大化卷积神经网络准确性 在第一章中,我们探讨了负责任的人工智能开发的重要性。我们讨论的一个方面是我们模型的稳健性的重要性。用户只有在能够确信他们在日常生活中遇到的人工智能是准确可靠的情况下,才能信任我们构建的内容。显然,应用的背景非常重要。食物分类器偶尔将意大利面误分类为面包可能没问题。但是对于自动驾驶汽车将行人误认为街道车道就很危险。因此,本章的主要目标是构建更准确的模型。 diff --git a/totrans/prac-dl-cld_06.md b/totrans/prac-dl-cld_06.md index 804fce7..bea0486 100644 --- a/totrans/prac-dl-cld_06.md +++ b/totrans/prac-dl-cld_06.md @@ -1,4 +1,4 @@ -# 第六章。最大化 TensorFlow 的速度和性能:一个便捷清单 +# 第六章:最大化 TensorFlow 的速度和性能:一个便捷清单 生活就是要用手头的资源做到最好,优化就是游戏的名字。 @@ -416,7 +416,7 @@ dataset = dataset.cache(filename='tmp.cache') *`# on-disk`* ###### 提示 -在[“减少输入数据的大小”中,我们提到预处理数据并将其保存为 TFRecord 文件作为未来数据流水线的输入。在流水线中的预处理步骤之后直接使用**`cache()`**函数,只需在代码中进行一个单词的更改,就可以获得类似的性能。 +在“减少输入数据的大小”中,我们提到预处理数据并将其保存为 TFRecord 文件作为未来数据流水线的输入。在流水线中的预处理步骤之后直接使用**`cache()`**函数,只需在代码中进行一个单词的更改,就可以获得类似的性能。 ## 打开实验性优化 @@ -533,7 +533,7 @@ updated_image = tf.image.adjust_hue(image, delta = 0.2) ### NVIDIA DALI -![NVIDIA DALI 流水线](img/00256.jpeg) +![NVIDIA DALI 流水线 ###### 图 6-4\. NVIDIA DALI 流水线 diff --git a/totrans/prac-dl-cld_07.md b/totrans/prac-dl-cld_07.md index 0ebef6a..50db647 100644 --- a/totrans/prac-dl-cld_07.md +++ b/totrans/prac-dl-cld_07.md @@ -1,4 +1,4 @@ -# 第七章。实用工具、技巧和窍门 +# 第七章:实用工具、技巧和窍门 本章包含我们作为作者在专业工作中以及在撰写本书过程中遇到的材料,主要是在实验过程中。这里涵盖的材料不一定适用于任何单独的章节;相反,这些材料是深度学习从业者在日常工作中可能会发现有用的,涵盖了各种任务的实用指南,包括设置环境、训练、模型互操作性、数据收集和标记、代码质量、管理实验、团队协作实践、隐私以及进一步探索主题。 diff --git a/totrans/prac-dl-cld_08.md b/totrans/prac-dl-cld_08.md index dba1d0f..8eda9d4 100644 --- a/totrans/prac-dl-cld_08.md +++ b/totrans/prac-dl-cld_08.md @@ -1,4 +1,4 @@ -# 第八章。云计算机视觉 API:15 分钟内上手 +# 第八章:云计算机视觉 API:15 分钟内上手 由于附近核电站多次发生近乎核泄漏的事件,斯普林菲尔德市图书馆(我们不允许提及州名)决定将他们所有宝贵的档案以数字形式存储太过危险。在听说对手城市 Shelbyville 的图书馆开始数字化他们的记录后,他们也想加入这场游戏。毕竟,他们的文章收藏,如“老人对着云喊叫”和“本地人认为摔跤是真的”,以及百年历史的峡谷和城市创始人杰比达·斯普林菲尔德的标志性照片是无法替代的。除了使他们的档案对灾难具有弹性外,他们还将使他们的档案易于搜索和检索。当然,现在斯普林菲尔德的居民可以在他们的客厅沙发上轻松访问所有这些材料。 diff --git a/totrans/prac-dl-cld_09.md b/totrans/prac-dl-cld_09.md index f2129a3..7aaf79f 100644 --- a/totrans/prac-dl-cld_09.md +++ b/totrans/prac-dl-cld_09.md @@ -1,4 +1,4 @@ -# 第九章。使用 TensorFlow Serving 和 KubeFlow 在云上进行可扩展推断服务 +# 第九章:使用 TensorFlow Serving 和 KubeFlow 在云上进行可扩展推断服务 想象一下:你刚刚建立了一个一流的分类器。你的目标,正如硅谷的座右铭所说,“*让世界变得更美好*”,你将通过一个出色的狗/猫分类器来实现这一目标。你有一个扎实的商业计划,迫不及待地想要在下周向风险投资公司推销你的神奇分类器。你知道投资者会问及你的云策略,你需要在他们考虑给你钱之前展示一个扎实的演示。你会怎么做?创建模型只是战斗的一半,提供服务是下一个挑战,通常是更大的挑战。事实上,很长一段时间以来,训练模型只需要几周的时间,但是试图将其提供给更多人使用是一个长达数月的战斗,通常涉及后端工程师和 DevOps 团队。 diff --git a/totrans/prac-dl-cld_10.md b/totrans/prac-dl-cld_10.md index 607d54e..21cf63d 100644 --- a/totrans/prac-dl-cld_10.md +++ b/totrans/prac-dl-cld_10.md @@ -1,4 +1,4 @@ -# 第十章. 在浏览器中使用 TensorFlow.js 和 ml5.js 的人工智能 +# 第十章:在浏览器中使用 TensorFlow.js 和 ml5.js 的人工智能 与客座作者 Zaid Alyafeai 合作撰写 diff --git a/totrans/prac-dl-cld_11.md b/totrans/prac-dl-cld_11.md index d4523f2..33ff145 100644 --- a/totrans/prac-dl-cld_11.md +++ b/totrans/prac-dl-cld_11.md @@ -1,4 +1,4 @@ -# 第十一章。在 iOS 上使用 Core ML 进行实时对象分类 +# 第十一章:在 iOS 上使用 Core ML 进行实时对象分类 到目前为止,我们已经看到我们的深度学习模型在桌面、云端和浏览器上运行。尽管这种设置有明显的优势,但并不适用于所有情况。在本章中,我们将探讨在移动设备上使用深度学习模型进行预测。 diff --git a/totrans/prac-dl-cld_12.md b/totrans/prac-dl-cld_12.md index 749024b..3436651 100644 --- a/totrans/prac-dl-cld_12.md +++ b/totrans/prac-dl-cld_12.md @@ -1,4 +1,4 @@ -# 第十二章。在 iOS 上使用 Core ML 和 Create ML 的 Not Hotdog +# 第十二章:在 iOS 上使用 Core ML 和 Create ML 的 Not Hotdog “我是富人,”新晋百万富翁简阳在接受彭博社采访时说([图 12-1](part0014.html#jian_yang_being_interviewed_by_bloomberg))。他做了什么?他创建了 Not Hotdog 应用程序([图 12-2](part0014.html#the_not_hotdog_app_in_action_left_parent)),让世界“变得更美好”。 diff --git a/totrans/prac-dl-cld_13.md b/totrans/prac-dl-cld_13.md index 33ea0fb..9e79845 100644 --- a/totrans/prac-dl-cld_13.md +++ b/totrans/prac-dl-cld_13.md @@ -1,4 +1,4 @@ -# 第十三章。食物的 Shazam:使用 TensorFlow Lite 和 ML Kit 开发 Android 应用程序 +# 第十三章:食物的 Shazam:使用 TensorFlow Lite 和 ML Kit 开发 Android 应用程序 在开发了病毒性的 Not Hotdog 应用程序(我们在第十二章中看到)之后,建阳最初应该构建一个能识别所有食物的分类器。事实上,该应用最初应该被称为 SeeFood——一款可以“看到”食物并立即识别的应用程序(图 13-1)。换句话说,这是“食物的 Shazam”。然而,该应用太成功了,以至于被 Periscope 收购。他的投资者 Erlich Bachman 的最初愿景仍未实现。在本章中,我们的任务是实现这个梦想。 diff --git a/totrans/prac-dl-cld_14.md b/totrans/prac-dl-cld_14.md index 5e51e2b..fe59fe8 100644 --- a/totrans/prac-dl-cld_14.md +++ b/totrans/prac-dl-cld_14.md @@ -1,4 +1,4 @@ -# 第十四章。使用 TensorFlow Object Detection API 构建完美的猫定位器应用 +# 第十四章:使用 TensorFlow Object Detection API 构建完美的猫定位器应用 鲍勃经常受到附近的流浪猫的访问。这些访问导致了不太愉快的结果。你看,鲍勃有一个相当大的花园,他非常用心地照料。然而,这只毛茸茸的小家伙每天晚上都会来到他的花园,并开始咬一堆植物。几个月的辛勤工作在一夜之间被摧毁。显然对这种情况不满意,鲍勃渴望采取一些行动。 diff --git a/totrans/prac-dl-cld_16.md b/totrans/prac-dl-cld_16.md index 30d6029..6ce4ea5 100644 --- a/totrans/prac-dl-cld_16.md +++ b/totrans/prac-dl-cld_16.md @@ -1,4 +1,4 @@ -# 第十五章。成为创客:探索边缘嵌入式 AI +# 第十五章:成为创客:探索边缘嵌入式 AI 由客座作者 Sam Sterckval 撰写 diff --git a/totrans/prac-dl-cld_17.md b/totrans/prac-dl-cld_17.md index dbcc483..0f9fdf8 100644 --- a/totrans/prac-dl-cld_17.md +++ b/totrans/prac-dl-cld_17.md @@ -1,4 +1,4 @@ -# 第十六章。使用 Keras 进行端到端深度学习模拟自动驾驶汽车 +# 第十六章:使用 Keras 进行端到端深度学习模拟自动驾驶汽车 由客座作者 Aditya Sharma 和 Mitchell Spryn 贡献 diff --git a/totrans/prac-dl-cld_18.md b/totrans/prac-dl-cld_18.md index 913a223..d4cb0ac 100644 --- a/totrans/prac-dl-cld_18.md +++ b/totrans/prac-dl-cld_18.md @@ -1,4 +1,4 @@ -# 第十七章。在不到一个小时内构建自动驾驶汽车:使用 AWS DeepRacer 进行强化学习 +# 第十七章:在不到一个小时内构建自动驾驶汽车:使用 AWS DeepRacer 进行强化学习 由客座作者 Sunil Mallya 撰写