Skip to content

Commit 65b74f6

Browse files
Mu Liastonzhang
Mu Li
authored andcommitted
more
1 parent c089108 commit 65b74f6

File tree

5 files changed

+711
-0
lines changed

5 files changed

+711
-0
lines changed

chapter_preface/index.md

+169
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
# 序言
2+
3+
就在几年前,大型公司和初创公司没有一批深度学习科学家开发智能产品和服务。当我们中最年轻的人(作者)进入这个领域时,机器学习并没有在日报上获得头条新闻。我们的父母不知道什么是机器学习,更不用说为什么我们更喜欢它而不是医学或法律职业。机器学习是一门具有前瞻性的学术学科,其中包括一系列狭窄的实际应用程序。这些应用程序,例如语音识别和计算机视觉,需要太多的领域知识,以至于它们往往被视为完全独立的领域,机器学习只是一个小组成部分。然后,神经网络,我们在这本书中关注的深度学习模型的先验,被认为是过时的工具。
4+
5+
在过去的五年里,深度学习让世界感到惊讶,推动了计算机视觉、自然语言处理、自动语音识别、强化学习和统计建模等不同领域的快速发展。随着这些进步,我们现在可以打造出比以往任何时候都更具自主性的汽车(并且比某些公司更少的自主性),自动起草最平凡的电子邮件的智能回复系统,帮助人们从压迫性的大型收件箱中挖掘出来,以及软件代理人在棋盘游戏中主宰着世界上最好的人类,如 Go,这一壮举曾经被认为是几十年之遥。这些工具已经对工业和社会产生了越来越广泛的影响,改变了电影的制作方式,诊断疾病,并在从天体物理学到生物学的基础科学中扮演着越来越大的角色。
6+
7+
## 关于本书
8+
9+
这本书代表了我们努力使深度学习易于接近,教你 * 概念 ** 上下文 * 和 * 代码 *
10+
11+
### 一种结合代码、数学和 HTML 的媒介
12+
13+
为了使任何计算技术发挥全面影响,它必须得到充分理解、有充分记录,并得到成熟、维护良好的工具的支持。应当清楚地提炼关键的想法,最大限度地减少新从业人员所需的入职时间,让新从业人员了解最新情况。成熟的库应该自动执行常见任务,示例代码应该使从业人员能够轻松修改、应用和扩展常见应用程序以满足他们的需求。以动态 Web 应用程序为样本。尽管像亚马逊这样的许多公司在 1990 年代开发了成功的数据库驱动的 Web 应用程序,但在过去十年中,这项技术在帮助创意企业家方面的潜力得到了更大程度的实现,部分原因是开发了强大的、有文件记录的框架.
14+
15+
测试深度学习的潜力带来了独特的挑战,因为任何一个应用程序都汇集了不同的学科。应用深度学习需要同时了解 (一) 以特定方式解决问题的动机;(二) 特定模型方法的数学;(三) 将模型与数据拟合的优化算法;(四) 以及有效培训模型所需的工程,浏览数字计算的缺陷,并充分利用可用硬件。教授制定问题所需的批判性思维技巧、解决问题的数学技巧以及实施这些解决方案的软件工具都是艰巨的挑战。我们在这本书中的目标是提供一个统一的资源,以帮助潜在的从业者加快速度。
16+
17+
在我们开始这本书项目的时候,没有资源可以同时更新 (i);(ii) 以极大的技术深度涵盖现代机器学习的全面范围;(iii) 交错展示一本引人入胜的教科书的质量,使用干净的可运行代码,人们希望在实践教程中找到。我们发现了很多代码示例,用于如何使用给定的深度学习框架(例如,如何在 TensorFlow 中使用矩阵进行基本数字计算)或实现特定技术(例如 LenNet,AlexNet,ResNet 等的代码片段)分布在各种博客文章和 GitHub 存储库中。但是,这些示例通常侧重于
18+
*如何 * 实施给定的方法,
19+
但忽视了 * 为什么 * 某些算法决策的讨论。虽然一些互动资源偶尔出现,以解决某个特定主题,例如在网站 [Distill](http://distill.pub) 上发布的引人入胜的博客文章或个人博客,但它们只涉及深度学习中的选定主题,而且往往缺乏相关代码。另一方面,虽然出现了一些教科书,最值得注意的是 :cite:`Goodfellow.Bengio.Courville.2016`,它对深度学习背后的概念进行了全面的调查,但这些资源并没有将描述与代码中的概念的实现结合起来,有时让读者对如何实现这些概念毫不知道。此外,太多的资源隐藏在商业课程提供者的支付墙后面。
20+
21+
我们着手创造一种资源,以便 (i) 每个人都可以免费使用;(ii) 提供足够的技术深度,为实际成为应用机器学习科学家的道路提供一个起点;(iii) 包括可运行的代码,向读者展示如何解决实践中的问题;(iv) 允许以获得我们和整个社区的快速更新;以及 (v) 辅以 [forum](http://discuss.d2l.ai),用于互动讨论技术细节和回答问题。
22+
23+
这些目标往往发生冲突。方程式、定理和引用最好在 LaTeX 中管理和布局。代码在 Python 中最好地描述。网页是原生的 HTML 和 JavaScript。此外,我们希望这些内容既可以作为可执行代码、实体书籍、可下载的 PDF,也可以作为网站在互联网上访问。目前没有工具,也没有完全适合这些需求的工作流程,所以我们必须组装自己的工作流程。我们在 :numref:`sec_how_to_contribute` 中详细描述了我们的方法。我们解决了 GitHub 来共享源代码并允许编辑,用于混合代码的木星笔记本,方程式和文本,狮身人面像作为渲染引擎来生成多个输出,以及论坛的话语。虽然我们的制度尚不完善,但这些选择在相互竞争的关切之间提供了良好的妥协。我们相信,这可能是第一本使用这样一个集成的工作流程出版的书。
24+
25+
### 通过做学习
26+
27+
许多教科书教授一系列主题,每一个都详尽无遗。样本,克里斯·毕夏普出色的教科书 :cite:`Bishop.2006`,教授每个主题如此彻底,到达关于线性回归的章节需要大量的工作。虽然专家喜欢这本书正是因为它的彻底性,对于初学者来说,这个属性限制了它作为一个介绍性文本的有用性。
28+
29+
在这本书中,我们将教授大多数概念 * 只是及时 *。换句话说,你将学习概念的时刻,它们是为了实现一些实际目的而需要的。虽然我们在一开始就需要一些时间来教授基础预赛,比如线性代数和概率,但我们希望您在担心更深奥的概率分布之前尝试训练第一个模型的满意度。
30+
31+
除了在基本数学背景下提供崩溃课程的一些初步笔记本电脑外,随后的每一章都介绍了合理数量的新概念,并提供了使用真实数据集的单独的工作示例。这是一个组织方面的挑战。某些型号可能在逻辑上分组到一个笔记本中。一些想法可能最好通过连续执行几个模型来教授。另一方面,遵守 *1 工作样本,1 笔记本 * 的政策有一个很大的优势:这使您可以通过利用我们的代码来启动自己的研究项目。只需复制笔记本并开始修改它。
32+
33+
我们将根据需要将可运行的代码与背景材料交替。一般来说,在完全解释之前,我们经常会在提供工具方面出错(我们将在稍后解释背景)。实例,在完全解释为什么它有用或为什么它有效之前,我们可能会使用 * 随机梯度降序 *。这有助于为从业者提供必要的弹药来快速解决问题,而牺牲读者要相信我们作出策展决定。
34+
35+
这本书将从头开始教授深度学习概念。有时,我们希望深入研究有关模型的细节,这些模型通常会通过深度学习框架的高级抽象隐藏在用户身上。这尤其是在基本教程中出现,我们希望您了解给定图层或优化器中发生的一切。在这些情况下,我们经常提供两个版本的样本:一个版本我们从头开始实现所有内容,仅依赖 NumPy 接口和自动区分,另一个更实用的例子,我们使用 Gluon 编写简洁的代码。一旦我们教你一些组件是如何工作的,我们可以在后续教程中使用 Gluon 版本。
36+
37+
### 内容和结构
38+
39+
这本书可以大致分为三个部分,这些部分是由不同的颜色在 :numref:`fig_book_org`
40+
41+
![Book structure](../img/book-org.svg)
42+
:label:`fig_book_org`
43+
44+
* 第一部分包括基础知识和预赛。
45+
:numref:`chap_introduction` 提供了深度学习的介绍。然后,在 :numref:`chap_preliminaries` 中,我们可以快速了解深度学习所需的先决条件,例如如何存储和操作数据,以及如何根据线性代数、微积分和概率等基本概念应用各种数值运算。:numref:`chap_linear` 和 :numref:`chap_perceptrons` 涵盖了最多的深度学习的基本概念和技术, 例如线性回归, 多层感知和正则化.
46+
47+
* 接下来的五章重点介绍现代深度学习技巧。
48+
:numref:`chap_computation` 描述了深度学习计算的各种关键组成部分,并为我们随后实施更复杂的模型奠定了基础。接下来,在 :numref:`chap_cnn` 和 :numref:`chap_modern_cnn` 中,我们介绍了卷积神经网络(CNN),这些功能强大的工具构成了大多数现代计算机视觉系统的骨干。随后,在 :numref:`chap_rnn` 和 :numref:`chap_modern_rnn` 中,我们引入了循环神经网络 (RNN),这些模型利用数据中的时间或顺序结构,通常用于自然语言处理和时间序列预测。在 :numref:`chap_attention` 中,我们引入了一类新的模型,它们采用了一种称为注意机制的技术,并且它们最近开始在自然语言处理中取代 RNs。这些部分将帮助您了解大多数现代深度学习应用背后的基本工具。
49+
50+
* 第三部分讨论可扩展性、效率和应用程序。
51+
首先,在 :numref:`chap_optimization` 中,我们讨论了用于训练深度学习模型的几种常见优化算法。下一章 :numref:`chap_performance` 探讨了影响深度学习代码计算性能的几个关键因素。在 :numref:`chap_cv` 中,我们展示了深度学习在计算机视觉中的主要应用。在 :numref:`chap_nlp_pretrain` 和 :numref:`chap_nlp_app` 中,我们演示了如何预先训练语言表示模型并将其应用于自然语言处理任务。
52+
53+
### 代码
54+
:label:`sec_code`
55+
56+
本书的大多数部分都特征可执行代码,因为我们相信交互式学习体验在深度学习中的重要性。目前,某些直觉只能通过试验和误差来形成,以小方式调整代码并观察结果。理想情况下,优雅的数学理论可能会告诉我们如何调整我们的代码以达到预期的结果。不幸的是,目前,这种优雅的理论没有我们。尽管我们尽了最大努力,但仍然缺乏对各种技术的正式解释,因为这些模型的数学特征可能非常困难,也因为对这些主题进行认真的调查最近才发展到高潮。我们希望,随着深度学习理论的发展,这本书的未来版本将能够在目前版本无法提供见解。
57+
58+
有时,为了避免不必要的重复,我们将经常导入和引用的函数、类等封装在本书 `d2l` 包中。对于要保存在软件包中的任何块,如函数、类或多个导入,我们将标记为 `# @save `。我们在 :numref:`sec_d2l` 中提供了这些函数和类的详细概述。`d2l` 软件包重量轻,只需要以下软件包和模块作为依赖项:
59+
60+
```{.python .input n=1}
61+
#@tab all
62+
#@save
63+
import collections
64+
from collections import defaultdict
65+
from IPython import display
66+
import math
67+
from matplotlib import pyplot as plt
68+
import os
69+
import pandas as pd
70+
import random
71+
import re
72+
import shutil
73+
import sys
74+
import tarfile
75+
import time
76+
import requests
77+
import zipfile
78+
import hashlib
79+
d2l = sys.modules[__name__]
80+
```
81+
82+
:begin_tab:`mxnet`
83+
本书中的大部分代码都基于 Apache MxNet。MxNet 是深度学习的开源框架,是 AWS(Amazon Web 服务)以及许多学院和公司的首选选择。本书中的所有代码都通过了最新 MxNet 版本的测试。然而,由于深度学习的快速发展,一些代码
84+
*在未来版本的 MxNet 中可能无法正常工作。
85+
但是,我们计划保持在线版本最新。如果您遇到任何此类问题,请咨询 :ref:`chap_installation` 以更新您的代码和运行时环境。
86+
87+
以下是我们如何从 MxNet 导入模块。
88+
:end_tab:
89+
90+
:begin_tab:`pytorch`
91+
这本书中的大部分代码都基于 PyTorch。PyTorch 是深度学习的开源框架,在研究界非常流行。本书中的所有代码都通过了最新的 PyTorch 下的测试。然而,由于深度学习的快速发展,一些代码
92+
*在未来版本的 PyTorch 中可能无法正常工作。
93+
但是,我们计划保持在线版本最新。如果您遇到任何此类问题,请咨询 :ref:`chap_installation` 以更新您的代码和运行时环境。
94+
95+
以下是我们如何从 PyTorch 导入模块。
96+
:end_tab:
97+
98+
:begin_tab:`tensorflow`
99+
本书中的大部分代码都基于 TensorFlow。TensorFlow 是深度学习的开源框架,在研究界和工业界都非常受欢迎。本书中的所有代码都在最新的 TensorFlow 下通过了测试。然而,由于深度学习的快速发展,一些代码
100+
*在未来版本的 TensorFlow 中可能无法正常工作。
101+
但是,我们计划保持在线版本最新。如果您遇到任何此类问题,请咨询 :ref:`chap_installation` 以更新您的代码和运行时环境。
102+
103+
以下是我们如何从 TensorFlow 导入模块。
104+
:end_tab:
105+
106+
```{.python .input n=1}
107+
#@save
108+
from mxnet import autograd, context, gluon, image, init, np, npx
109+
from mxnet.gluon import nn, rnn
110+
```
111+
112+
```{.python .input n=1}
113+
#@tab pytorch
114+
#@save
115+
import numpy as np
116+
import torch
117+
import torchvision
118+
from torch import nn
119+
from torch.nn import functional as F
120+
from torch.utils import data
121+
from torchvision import transforms
122+
```
123+
124+
```{.python .input n=1}
125+
#@tab tensorflow
126+
#@save
127+
import numpy as np
128+
import tensorflow as tf
129+
```
130+
131+
### 目标受众
132+
133+
这本书适用于学生(本科或研究生)、工程师和研究人员,他们寻求深度学习的实用技巧的坚实掌握。因为我们从头开始解释每一个概念,所以不需要以前的深度学习或机器学习背景。充分解释深度学习的方法需要一些数学和编程,但我们只会假设你有一些基础知识,包括(非常基本的)线性代数,微积分,概率和 Python 编程。此外,在附录中,我们提供了关于本书所涵盖的大部分数学的进修。大多数情况下,我们将优先考虑直觉和想法,而不是数学的严谨性。有许多非常棒的书籍,可以导致感兴趣的读者进一步.实例,贝拉博洛巴斯 :cite:`Bollobas.1999` 的线性分析非常深入地涵盖了线性代数和函数分析。所有统计数据 :cite:`Wasserman.2013` 是一个非常棒的统计数据指南。如果你之前没有使用过 Python,你可能想要细看这个 [Python tutorial](http://learnpython.org/)
134+
135+
### 论坛
136+
137+
与本书相关,我们推出了一个讨论论坛,位于 [discuss.d2l.ai](https://discuss.d2l.ai/)。当您对书籍的任何部分有疑问时,您可以在每章结尾处找到关联的讨论页面链接。
138+
139+
## 表示感谢
140+
141+
我们感谢数百名英文和中文草稿的贡献者。他们帮助改进了内容,并提供了宝贵的反馈。具体而言,我们感谢这份英文草稿的每一位撰稿人,让每个人都更好。他们的 GitHub ID 或名称是 (在没有特定的顺序): alxnorden, avinashingit, bowen0701, rettkoonce, Chaitanya Prakash Bapat, 加维德菲奥科, edgaroman, gkutiel, 约翰米特罗, 梁浦, 拉胡尔阿加瓦尔, 穆罕默德阿里, 斯图, 斯图卢, 斯图卢, 斯图卢, 斯图卢, 斯图卢, 斯图卢, 斯图卢, 斯图卢 (迈克斯图卢) 迈克穆勒, 恩劳施迈尔, 普拉哈斯里瓦斯塔夫,斯费米吉尔, 盛扎, sundeepteki, topecongiro, tpdi, 粉丝, 维沙尔卡普尔, 维什韦什拉维斯利马里, Yayab, 陈玉洪, 叶夫根尼斯米尔诺夫, lgov, 西蒙科尔斯顿-奥利弗, 伊戈尔德兹列耶夫, 哈阮, 普穆恩斯, 安德烈, 森科 vfdev-5, dweet, 穆罕默德·马赫迪·拉希米, 阿卜谢克·古普塔, uwsd, DOMKM, 丽莎奥克利, 博文李, 阿鲁什阿胡贾, 普拉桑特佛达里, 布里安迪, Mani2106, MTN, lkevinzc, 考吉林, 拉克希亚, 菲耶特吕尔, 苏尔比维贾瓦尔格亚, 金穆亨, dennismalmgren, 阿杜尔森, 阿杜尔森, 安吉拉尔青茨, 佩德罗·拉罗伊, lgov, ati-ozgur, 吴俊, 马蒂亚斯·布鲁姆, 林源, Gegunow, 乔什·加德纳, 马克西米利安伯瑟, 拉基布伊斯兰, 莱昂纳德劳森, 阿比纳夫 Upadhyay, rongruosong, 史蒂夫·塞德迈耶, 鲁斯兰·巴拉托夫, 拉斐尔·施拉特, liusy182, 詹尼斯·帕帕斯, ati-ozgur, dchoi77, 亚当·格森, 福乐, 马克·阿特拉, 林 Jjangga0214, 瑞歇辰, 诺埃洛, 汉森德, 吉尔杜普斯, 德文森特 1337, 白 D3VIL, 彼得·库利茨, 约瑟平尼拉, ahmaurya, karolszk, heytitle, 彼得·戈茨, rigtorp, tiepvupsu, sfilip, mlxd, 卡莱-AB 特塞拉, 桑贾尔·阿迪洛夫, 马特奥费拉拉, hsneto, 卡塔尔齐纳·比西亚尔斯卡, 格雷戈里·布鲁斯劳斯, 格雷戈里·布鲁斯劳斯劳斯, 杜鲁斯卡, 杜, 鲍伊斯, 鲍伊斯坦雷尔, 格雷敦, 明达 0711, sl7423, 黄再东, 王一达, CYS4, 克莱姆, 让卡杜尔, 奥斯丁姆, 特波姆斯, cuongvng, 帕维尔科马罗夫, vzlamal, 无其他系统, J-阿伦-马尼, 扬乔, 埃尔达库尔蒂, 伟大的沙兹机器人, 博士, 格杜查尔姆, 克劳斯, 丹尼尔-米埃琴, 白鼠, 阿巴希纳, 乔纳坦哈兰德尔, 伊斯雷尔, 诺达尔奥克罗什维利, 乌古尔卡普, 康济阳, 史蒂文乔克斯,托马尔·卡夫坦,利韦沃普,内蒂斯特,伊潘迪亚,尼尚塔拉尼,海利格尔。
142+
143+
我们感谢亚马逊网络服务,尤其是斯瓦米·西瓦苏布拉马尼亚、拉朱·古拉巴尼、查理·贝尔和安德鲁·贾西在撰写这本书时给予的慷慨支持。如果没有可用的时间,资源,与同事的讨论,以及不断的鼓励,这本书就不会发生。
144+
145+
## 摘要
146+
147+
* 深度学习已经彻底改变了模式识别,引入了现在支持广泛技术的技术,包括计算机视觉、自然语言处理、自动语音识别。
148+
* 要成功应用深度学习,您必须了解如何解决问题、建模的数学、将模型与数据拟合的算法以及实现这一切的工程技术。
149+
* 这本书提供了一个全面的资源,包括散文、数字、数学和代码,所有这些都在一个地方。
150+
* 要回答与本书相关的问题,请访问我们的论坛 https://discuss.d2l.ai/。
151+
* 所有笔记本电脑都可以在 GitHub 上下载。
152+
153+
## 练习
154+
155+
1. 在这本书的讨论论坛上注册一个帐户 [discuss.d2l.ai](https://discuss.d2l.ai/).
156+
1. 在计算机上安装 Python。
157+
1. 点击论坛部分底部的链接,您将能够寻求帮助和讨论这本书,并通过吸引作者和更广泛的社区来找到问题的答案。
158+
159+
:begin_tab:`mxnet`
160+
[Discussions](https://discuss.d2l.ai/t/18)
161+
:end_tab:
162+
163+
:begin_tab:`pytorch`
164+
[Discussions](https://discuss.d2l.ai/t/20)
165+
:end_tab:
166+
167+
:begin_tab:`tensorflow`
168+
[Discussions](https://discuss.d2l.ai/t/186)
169+
:end_tab:

0 commit comments

Comments
 (0)