Skip to content

Commit dae3fda

Browse files
authored
Merge pull request #803 from d2l-ai/master
v2.0.0-alpha1 release
2 parents 3640548 + 52ff6ee commit dae3fda

File tree

106 files changed

+13957
-3024
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+13957
-3024
lines changed

Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ stage("Build and Publish") {
6464
sh label:"Release", script:"""set -ex
6565
conda activate ${ENV_NAME}
6666
d2lbook build pkg
67-
d2lbook deploy html pdf pkg colab sagemaker slides --s3 s3://zh-v2.d2l.ai
67+
d2lbook deploy html pdf pkg colab sagemaker --s3 s3://zh-v2.d2l.ai
6868
"""
6969

7070
} else {

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Build Status](http://ci.d2l.ai/job/d2l-zh/job/master/badge/icon)](http://ci.d2l.ai/job/d2l-zh/job/master/)
44

5-
[第一版:zh.D2L.ai](https://zh.d2l.ai/) | [第二版预览版:zh-v2.D2L.ai](https://zh-v2.d2l.ai) | 安装和使用书中源代码:[第一版](https://zh.d2l.ai/chapter_prerequisite/install.html) [第二版](https://zh-v2.d2l.ai/chapter_installation/index.html) | 版本号: v2.0.0-alpha0
5+
[第一版:zh.D2L.ai](https://zh.d2l.ai/) | [第二版预览版:zh-v2.D2L.ai](https://zh-v2.d2l.ai) | 安装和使用书中源代码:[第一版](https://zh.d2l.ai/chapter_prerequisite/install.html) [第二版](https://zh-v2.d2l.ai/chapter_installation/index.html) | 当前版本: v2.0.0-alpha0
66

77
<h5 align="center"><i>理解深度学习的最佳方法是学以致用。</i></h5>
88

TERMINOLOGY.md

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,26 @@
1414

1515
编码器,encoder
1616

17+
标记,token
18+
19+
标记化,tokenize
20+
1721
标签,label
1822

1923
步幅,stride
2024

2125
参数,parameter
2226

27+
长短期记忆网络,long short-term memory (LSTM)
28+
2329
超参数,hyper-parameter
2430

2531
层序softmax,hierarchical softmax
2632

2733
成本,cost
2834

35+
词汇表,vocabulary
36+
2937
词嵌入,word embedding
3038

3139
词向量,word vector
@@ -54,6 +62,8 @@
5462

5563
二元分类,binary classification
5664

65+
二元语法,bigram
66+
5767
二次采样,subsample
5868

5969
发散,diverge
@@ -120,6 +130,8 @@
120130

121131
困惑度,perplexity
122132

133+
拉普拉斯平滑,Laplace smoothing
134+
123135
连结,concatenate
124136

125137
类,class
@@ -132,6 +144,8 @@
132144

133145
流水线,pipeline
134146

147+
门控循环单元,gated recurrent units (GRU)
148+
135149
模型参数,model parameter
136150

137151
模型复杂度,model complexity
@@ -148,6 +162,8 @@
148162

149163
平均池化层,average pooling layer
150164

165+
齐普夫定律,Zipf's law
166+
151167
欠拟合,underfitting
152168

153169
情感分析,sentiment analysis
@@ -156,6 +172,8 @@
156172

157173
权重,weight
158174

175+
三元语法,trigram
176+
159177
上采样,upsample
160178

161179
实例,instance
@@ -170,8 +188,12 @@
170188

171189
数据样本,data instance
172190

191+
顺序分区,sequential partitioning
192+
173193
softmax回归,softmax regression
174194

195+
随机采样,random sampling
196+
175197
损失函数,loss function
176198

177199
双向循环神经网络,bidirectional recurrent neural network
@@ -186,19 +208,23 @@ softmax回归,softmax regression
186208

187209
梯度裁剪,gradient clipping
188210

211+
梯度消失,vanishing gradients
212+
189213
填充,padding
190214

191215
跳字模型,skip-gram model
192216

193217
调参,tune hyper-parameter
194218

219+
停用词,stop words
220+
195221
通道,channel
196222

197223
凸优化,convex optimization
198224

199225
图像,image
200226

201-
未知词符号,unknown token
227+
未知词标记,unknown token
202228

203229
无偏估计,unbiased estimate
204230

@@ -218,18 +244,22 @@ softmax回归,softmax regression
218244

219245
训练误差,training error
220246

221-
循环神经网络,recurrent neural network
247+
循环神经网络,recurrent neural network (RNN)
222248

223249
样本,example
224250

225251
一维梯度下降,gradient descent in one-dimensional space
226252

253+
一元语法,unigram
254+
227255
隐藏变量,hidden variable
228256

229257
隐藏层,hidden layer
230258

231259
优化器,optimizer
232260

261+
语料库,corpus
262+
233263
运算符,operator
234264

235265
真实值,ground truth

chapter_attention-mechanisms/attention-cues.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')
9191

9292
在接下来的章节中,我们经常调用此函数来显示注意力权重。
9393

94-
## 摘要
94+
## 小结
9595

9696
* 人类的注意力是有限、宝贵和稀缺的资源。
9797
* 受试者使用非自主和自主提示有选择地专注注意力。前者基于显著程度,后者取决于任务。

chapter_attention-mechanisms/attention-scoring-functions.md

Lines changed: 59 additions & 65 deletions
Large diffs are not rendered by default.

chapter_attention-mechanisms/bahdanau-attention.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
# Bahdanau 关注
1+
# Bahdanau 注意力
22
:label:`sec_seq2seq_attention`
33

4-
我们在 :numref:`sec_seq2seq` 中研究了机器翻译问题,在那里我们设计了一个基于两个 RNN 的编码器解码器架构,用于顺序到序列的学习。具体来说,RNN 编码器将可变长度序列转换为固定形状的上下文变量,然后 RNN 解码器根据生成的令牌和上下文变量按令牌生成输出(目标)序列令牌。但是,即使并非所有输入(源)令牌都对解码某个标记都有用,但在每个解码步骤中仍使用编码整个输入序列的 *same* 上下文变量。
4+
我们在 :numref:`sec_seq2seq` 中研究了机器翻译问题,在那里我们设计了一个基于两个循环神经网络的编码器-解码器架构,用于顺序到序列的学习。具体来说,循环神经网络编码器将可变长度序列转换为固定形状的上下文变量,然后循环神经网络解码器根据生成的标记和上下文变量按标记生成输出(目标)序列标记。但是,即使并非所有输入(源)标记都对解码某个标记都有用,但在每个解码步骤中仍使用编码整个输入序列的**相同**上下文变量。
55

6-
在为给定文本序列生成手写的一个单独但相关的挑战中,格雷夫斯设计了一种可区分的注意力模型,将文本字符与更长的笔迹对齐,其中对齐方式仅向一个方向移动 :cite:`Graves.2013`。受学习对齐想法的启发,Bahdanau 等人提出了一个没有严格的单向对齐限制 :cite:`Bahdanau.Cho.Bengio.2014` 的可区分注意力模型。在预测令牌时,如果不是所有输入令牌都相关,模型将仅对齐(或参与)输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现的。
6+
在为给定文本序列生成手写的一个单独但相关的挑战中,格雷夫斯设计了一种可区分的注意力模型,将文本字符与更长的笔迹对齐,其中对齐方式仅向一个方向移动 :cite:`Graves.2013`。受学习对齐想法的启发,Bahdanau 等人提出了一个没有严格的单向对齐限制 :cite:`Bahdanau.Cho.Bengio.2014` 的可区分注意力模型。在预测标记时,如果不是所有输入标记都相关,模型将仅对齐(或参与)输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现的。
77

88
## 模型
99

10-
在下面描述 Bahdanau 对 RNN 编码器的关注时,我们将遵循 :numref:`sec_seq2seq` 中的相同符号。新的基于注意的模型与 :numref:`sec_seq2seq` 中的模型相同,只不过 :eqref:`eq_seq2seq_s_t` 中的上下文变量 $\mathbf{c}$ 在任何解码时间步骤 $t'$ 都会被 $\mathbf{c}_{t'}$ 替换。假设输入序列中有 $T$ 个令牌,解码时间步长 $t'$ 的上下文变量是注意力集中的输出:
10+
在下面描述 Bahdanau 注意力对循环神经网络编码器的关注时,我们将遵循 :numref:`sec_seq2seq` 中的相同符号。新的基于注意的模型与 :numref:`sec_seq2seq` 中的模型相同,只不过 :eqref:`eq_seq2seq_s_t` 中的上下文变量 $\mathbf{c}$ 在任何解码时间步骤 $t'$ 都会被 $\mathbf{c}_{t'}$ 替换。假设输入序列中有 $T$ 个标记,解码时间步长 $t'$ 的上下文变量是注意力集中的输出:
1111

1212
$$\mathbf{c}_{t'} = \sum_{t=1}^T \alpha(\mathbf{s}_{t' - 1}, \mathbf{h}_t) \mathbf{h}_t,$$
1313

1414
其中,时间步骤 $t' - 1$ 时的解码器隐藏状态 $\mathbf{s}_{t' - 1}$ 是查询,编码器隐藏状态 $\mathbf{h}_t$ 既是键,也是值,注意权重 $\alpha$ 是使用 :eqref:`eq_attn-scoring-alpha` 所定义的加法注意力评分函数计算的。
1515

16-
与 :numref:`fig_seq2seq_details` 中的香草 RNN 编码器解码器架构略有不同,:numref:`fig_s2s_attention_details` 描述了巴赫达瑙关注的同一架构
16+
与 :numref:`fig_seq2seq_details` 中的基础循环神经网络编码器-解码器架构略有不同,:numref:`fig_s2s_attention_details` 描述了 Bahdanau 注意力的架构
1717

1818
![Layers in an RNN encoder-decoder model with Bahdanau attention.](../img/seq2seq-attention-details.svg)
1919
:label:`fig_s2s_attention_details`
@@ -32,9 +32,9 @@ import torch
3232
from torch import nn
3333
```
3434

35-
## 注意定义解码器
35+
## 定义注意力解码器
3636

37-
要在 Bahdanau 关注的情况下实现 RNN 编码器-解码器,我们只需重新定义解码器即可。为了更方便地显示学习的注意力权重,以下 `AttentionDecoder` 类定义了具有注意机制的解码器的基本接口。
37+
要用 Bahdanau 注意力实现循环神经网络编码器-解码器,我们只需重新定义解码器即可。为了更方便地显示学习的注意力权重,以下 `AttentionDecoder` 类定义了具有注意机制的解码器的基本接口。
3838

3939
```{.python .input}
4040
#@tab all
@@ -49,7 +49,7 @@ class AttentionDecoder(d2l.Decoder):
4949
raise NotImplementedError
5050
```
5151

52-
现在让我们在接下来的 `Seq2SeqAttentionDecoder` 课程中以 Bahdanau 关注的情况下实施 RNN 解码器。解码器的状态初始化为 i) 编码器在所有时间步长的最终层隐藏状态(作为关注的键和值);ii) 最后一个时间步长的编码器全层隐藏状态(初始化解码器的隐藏状态);和 iii) 编码器有效长度(排除在注意力池中填充令牌)。在每个解码时间步骤中,解码器上一个时间步的最终层隐藏状态将用作关注的查询。因此,注意力输出和输入嵌入都连接为 RNN 解码器的输入
52+
现在让我们在接下来的 `Seq2SeqAttentionDecoder` 类中以 Bahdanau 注意力实现循环神经网络解码器。初始化解码器的状态 1) 编码器在所有时间步长的最终层隐藏状态(作为注意力的键和值);2) 最后一个时间步长的编码器全层隐藏状态(初始化解码器的隐藏状态);和 3) 编码器有效长度(排除在注意力池中填充标记)。在每个解码时间步骤中,解码器上一个时间步的最终层隐藏状态将用作关注的查询。因此,注意力输出和输入嵌入都连接为循环神经网络解码器的输入
5353

5454
```{.python .input}
5555
class Seq2SeqAttentionDecoder(AttentionDecoder):
@@ -151,7 +151,7 @@ class Seq2SeqAttentionDecoder(AttentionDecoder):
151151
return self._attention_weights
152152
```
153153

154-
在以下内容中,我们使用包含 7 个时间步长的 4 个序列输入的小批量测试已实施的解码器,使用 Bahdanau 的注意力
154+
接下来,我们使用包含 7 个时间步长的 4 个序列输入的小批量测试我们实现的 Bahdanau 注意力解码器
155155

156156
```{.python .input}
157157
encoder = d2l.Seq2SeqEncoder(vocab_size=10, embed_size=8, num_hiddens=16,
@@ -180,9 +180,9 @@ output, state = decoder(X, state)
180180
output.shape, len(state), state[0].shape, len(state[1]), state[1][0].shape
181181
```
182182

183-
## 培训
183+
## 训练
184184

185-
与 :numref:`sec_seq2seq_training` 类似,我们在这里指定超级测量器,实例化一个编码器和解码器,并在 Bahdanau 关注的情况下对这个模型进行机器翻译培训。由于新增的关注机制,这项培训比没有注意力机制的 :numref:`sec_seq2seq_training` 慢得多。
185+
与 :numref:`sec_seq2seq_training` 类似,我们在这里指定超参数,实例化一个 Bahdanau 注意力编码器和解码器,并对这个模型进行机器翻译训练。由于新增的注意力机制,这项训练要比没有注意力机制的 :numref:`sec_seq2seq_training` 慢得多。
186186

187187
```{.python .input}
188188
#@tab all
@@ -199,7 +199,7 @@ net = d2l.EncoderDecoder(encoder, decoder)
199199
d2l.train_seq2seq(net, train_iter, lr, num_epochs, tgt_vocab, device)
200200
```
201201

202-
模型训练完毕后,我们用它将几个英语句子翻译成法语并计算它们的 BLEU 分数。
202+
模型训练后,我们用它将几个英语句子翻译成法语并计算它们的 BLEU 分数。
203203

204204
```{.python .input}
205205
#@tab all
@@ -219,7 +219,7 @@ attention_weights = d2l.reshape(
219219
(1, 1, -1, num_steps))
220220
```
221221

222-
通过将翻译最后一个英语句子时的注意力权重可视化,我们可以看到每个查询都会在键值对上分配不均匀的权重。它显示,在每个解码步骤中,输入序列的不同部分都会有选择地聚合在注意力池中
222+
训练结束后通过可视化注意力权重,我们可以看到,每个查询都会在键值对上分配不同的权重。它显示,在每个解码步骤中,输入序列的不同部分被选择性地聚集在注意力池中
223223

224224
```{.python .input}
225225
# Plus one to include the end-of-sequence token
@@ -236,15 +236,15 @@ d2l.show_heatmaps(
236236
xlabel='Key posistions', ylabel='Query posistions')
237237
```
238238

239-
## 摘要
239+
## 小结
240240

241-
* 在预测令牌时,如果不是所有输入令牌都是相关的,那么具有 Bahdanau 关注的 RNN 编码器会有选择地聚合输入序列的不同部分。这是通过将上下文变量视为加法注意力池的输出来实现的。
242-
* 在 RNN 编码器解码器中,Bahdanau 的注意力将上一个时间步的解码器隐藏状态视为查询,编码器在所有时间步长的隐藏状态同时视为键和值
241+
* 在预测标记时,如果不是所有输入标记都是相关的,那么具有 Bahdanau 注意力的循环神经网络编码器-解码器会有选择地统计输入序列的不同部分。这是通过将上下文变量视为加法注意力池的输出来实现的。
242+
* 在循环神经网络编码器-解码器中,Bahdanau 注意力将上一个时间步的解码器隐藏状态视为查询,在所有时间步长编码器隐藏状态同时视为键和值
243243

244244
## 练习
245245

246246
1. 在实验中用 LSTM 替换 GRU。
247-
1. 修改实验以将加法注意力评分功能替换为缩放的点积。它如何影响培训效率
247+
1. 修改实验以将加法注意力评分功能替换为缩放的点积。它如何影响训练效率
248248

249249
:begin_tab:`mxnet`
250250
[Discussions](https://discuss.d2l.ai/t/347)

chapter_attention-mechanisms/index.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
# 注意机制
1+
# 注意力机制
22
:label:`chap_attention`
33

4-
灵长类动物视觉系统的视神经接受大量的感官输入,远远超过了大脑能够完全处理的程度。幸运的是,并非所有的刺激都是平等的。意识的聚集和集中使灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和掠食动物。只关注一小部分信息的能力具有进化意义,使人类能够生存和成功。
4+
灵长类动物视觉系统的视神经接受大量的感官输入,远远超过了大脑能够完全处理的程度。幸运的是,并非所有的刺激都是平等的。意识的聚集和集中使灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和捕食者。只关注一小部分信息的能力具有进化意义,使人类能够生存和成功。
55

6-
自 19 世纪以来,科学家们一直在研究认知神经科学领域的注意力。在本章中,我们将首先回顾一个热门框架,解释如何在视觉场景中部署注意力。受此框架中的注意线索的启发,我们将设计利用这些关注线索的模型。值得注意的是,1964 年的 Nadaraya-Waston 内核回归是具有 * 注意力机制 * 的机器学习的简单演示。
6+
自 19 世纪以来,科学家们一直在研究认知神经科学领域的注意力。在本章中,我们将首先回顾一个热门框架,解释如何在视觉场景中部署注意力。受此框架中的注意线索的启发,我们将设计利用这些关注线索的模型。值得注意的是,1964 年的 Nadaraya-Waston 内核回归是具有 *注意力机制* 的机器学习的简单演示。
77

8-
接下来,我们将继续介绍在深度学习中注意力模型设计中广泛使用的注意力函数。具体来说,我们将展示如何使用这些函数来设计 *Bahdanau 注意力 *,这是深度学习中的突破性注意力模型,可以双向对齐并且可以区分
8+
接下来,我们将继续介绍在深度学习中注意力模型设计中广泛使用的注意力函数。具体来说,我们将展示如何使用这些函数来设计 *Bahdanau 注意力*,这是深度学习中的突破性注意力模型,可以双向对齐并且可区分
99

10-
最后,配备了最近的
11-
*多头关注 *
12-
和 * 自我关注 * 设计,我们将仅基于注意机制来描述 *Transer* 架构。自 2017 年提出建议以来,变形金刚一直在现代深度学习应用中普遍存在,例如语言、视觉、语音和强化学习领域。
10+
最后,配备了最近的 *多头注意力**自注意力* 设计,我们将仅基于注意机制来描述 *Transformer* 架构。自 2017 年提出建议以来,Transformers 一直在现代深度学习应用中普遍存在,例如语言、视觉、语音和强化学习领域。
1311

1412
```toc
1513
:maxdepth: 2

chapter_attention-mechanisms/multihead-attention.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 多头关注
1+
# 多头注意力
22
:label:`sec_multihead-attention`
33

44
实际上,鉴于查询、键和值集相同,我们可能希望我们的模型将来自同一注意机制不同行为的知识结合起来,例如捕获序列内各种范围的依赖关系(例如,短范围与长距离)。因此,允许我们的注意机制共同使用查询、键和值的不同表示子空间可能是有益的。
@@ -36,7 +36,7 @@ import torch
3636
from torch import nn
3737
```
3838

39-
## 实施
39+
## 实现
4040

4141
在我们的实施过程中,我们为多头关注的每个人选择缩放的点产品注意力。为避免计算成本和参数化成本的显著增长,我们设置了 $p_q = p_k = p_v = p_o / h$。请注意,如果我们将查询、键和值的线性变换的输出数量设置为 $p_q h = p_k h = p_v h = p_o$,则可以并行计算 $h$ 头。在下面的实现中,$p_o$ 是通过参数 `num_hiddens` 指定的。
4242

@@ -207,7 +207,7 @@ Y = d2l.ones((batch_size, num_kvpairs, num_hiddens))
207207
attention(X, Y, Y, valid_lens).shape
208208
```
209209

210-
## 摘要
210+
## 小结
211211

212212
* 多头关注通过查询、键和值的不同表示子空间将同一注意力集中的知识结合起来。
213213
* 要并行计算多头多头注意力,需要适当的张量操作。

0 commit comments

Comments
 (0)