diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 59fb91d35b4481b1a8bb4ad8ef990bbf8af9dbbb..998c4d93b697a2aa1a43f6520efd2f43572f06ba 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -11,7 +11,7 @@
-
+
@@ -23,12 +23,24 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -44,6 +56,11 @@
+
+
+ 根据链式法则,雅可比向量积应
+
+
@@ -53,11 +70,12 @@
+
-
+
@@ -68,6 +86,7 @@
+
@@ -93,15 +112,10 @@
-
-
-
-
-
@@ -165,10 +179,10 @@
-
+
-
+
@@ -196,6 +210,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -346,16 +380,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -418,16 +442,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -438,5 +452,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/1.0/Word Embeddings_Encoding Lexical Semantics.md b/docs/1.0/Word Embeddings_Encoding Lexical Semantics.md
index 475dc65402e59c53488a7ff50ba40bdc93ac39a1..05ec0835b132ba564e8641b146f5642f6315dcbd 100644
--- a/docs/1.0/Word Embeddings_Encoding Lexical Semantics.md
+++ b/docs/1.0/Word Embeddings_Encoding Lexical Semantics.md
@@ -1,12 +1,14 @@
# 词嵌入:编码形式的词汇语义
-词嵌入是一种由真实数字组成的稠密向量,每个向量都代表了单词表里的一个单词. 在自然语言处理中,总会遇到这样的情况:特征全是单词! 但是,如何在电脑上表述一个单词呢?你在电脑上存储的单词的ascii码,但是它仅仅代表单词怎么拼写,没有说明单词的内在含义(你也许能够从词缀中了解它的词性,或者从大小写中得到一些属性,但仅此而已). 更重要的是,你能把这些ascii码字符组合成什么含义?? 当V代表词汇表、输入数据是|V|维的情况下,我们往往想从神经网络中得到数据密集的结果,但是结果只有很少的几个维度(例如,预测的数据只有几个标签时)。我们如何从大的数据维度空间中得到稍小一点的维度空间?
+> 译者:[巩子惠](https://github.com/sight007)
-放弃使用ascii码字符的形式表示单词,换用one-hot encoding会怎么样了?好吧,W这个单词就能这样表示:
+词嵌入是一种由真实数字组成的稠密向量,每个向量都代表了单词表里的一个单词。 在自然语言处理中,总会遇到这样的情况:特征全是单词!但是,如何在电脑上表述一个单词呢?你在电脑上存储的单词的`ascii`码,但是它仅仅代表单词怎么拼写,没有说明单词的内在含义(你也许能够从词缀中了解它的词性,或者从大小写中得到一些属性,但仅此而已)。 更重要的是,你能把这些`ascii`码字符组合成什么含义?当![](./img/WordEmbeddings-5206560a306a2e085a437fd258eb57ce.gif)代表词汇表、输入数据是![](./img/WordEmbeddings-74fcb594bdd93c0f956682ae1ea013e6.gif)维的情况下,我们往往想从神经网络中得到数据密集的结果,但是结果只有很少的几个维度(例如,预测的数据只有几个标签时)。我们如何从大的数据维度空间中得到稍小一点的维度空间?
-cf775cf1814914c00f5bf7ada7de4369.gif
+放弃使用`ascii`码字符的形式表示单词,换用`one-hot encoding`会怎么样了?好吧,![](./img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif)这个单词就能这样表示:
-其中,1就是表示w的独有位置,其他位置全是0。其他的词都类似,在另外不一样的位置有一个1代表它,其他位置也都是0。
+![](./img/WordEmbeddings-cf775cf1814914c00f5bf7ada7de4369.gif)
+
+其中,1 表示![](./img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif)的独有位置,其他位置全是0。其他的词都类似,在另外不一样的位置有一个1代表它,其他位置也都是0。
这种表达除了占用巨大的空间外,还有个很大的缺陷。 它只是简单的把词看做一个单独个体,认为它们之间毫无联系。 我们真正想要的是能够表达单词之间一些相似的含义。为什么要这样做呢?来看下面的例子:
假如我们正在搭建一个语言模型,训练数据有下面一些句子:
@@ -32,29 +34,21 @@ cf775cf1814914c00f5bf7ada7de4369.gif
如果每个属性都表示一个维度,那我们也许可以用一个向量表示一个单词,就像这样:
-```py
-\[ q_\text{mathematician} = \left[ \overbrace{2.3}^\text{can run}, \overbrace{9.4}^\text{likes coffee}, \overbrace{-5.5}^\text{majored in Physics}, \dots \right]\]
-```
+![](img/WordEmbeddings-62ca51f900bf27324a2be4e6b8609f4b.gif)
-```py
-\[ q_\text{physicist} = \left[ \overbrace{2.5}^\text{can run}, \overbrace{9.1}^\text{likes coffee}, \overbrace{6.4}^\text{majored in Physics}, \dots \right]\]
-```
+![](./img/WordEmbeddings-a0be0498fd8216177330deffbfcb6ea2.gif)
那么,我们就这可以通过下面的方法得到这些单词之间的相似性:
-```py
-\[\text{Similarity}(\text{physicist}, \text{mathematician}) = q_\text{physicist} \cdot q_\text{mathematician}\]
-```
+![](./img/WordEmbeddings-8b4e6bfa073defa91d3f23cdec8f1f0e.gif)
尽管通常情况下需要进行长度归一化:
-```py
-\[ \text{Similarity}(\text{physicist}, \text{mathematician}) = \frac{q_\text{physicist} \cdot q_\text{mathematician}} {\| q_\text{\physicist} \| \| q_\text{mathematician} \|} = \cos (\phi)\]
-```
+![](a./img/WordEmbeddings-8b4e6bfa073defa91d3f23cdec8f1f0e.gif)
-Φ是两个向量的夹角。 这就意味着,完全相似的单词相似度为1。完全不相似的单词相似度为-1。
+![](./img/WordEmbeddings-1ed346930917426bc46d41e22cc525ec.gif)是两个向量的夹角。 这就意味着,完全相似的单词相似度为1。完全不相似的单词相似度为-1。
-你可以把本章开头介绍的one-hot稀疏向量看做是我们新定义向量的一种特殊形式,那里的单词相似度为0, 现在我们给每个单词一些独特的语义属性。 这些向量数据密集,也就是说它们数字通常都非零。
+你可以把本章开头介绍的`one-hot`稀疏向量看做是我们新定义向量的一种特殊形式,那里的单词相似度为0, 现在我们给每个单词一些独特的语义属性。 这些向量数据密集,也就是说它们数字通常都非零。
但是新的这些向量存在一个严重的问题: 你可以想到数千种不同的语义属性,它们可能都与决定相似性有关,而且,到底如何设置不同属性的值呢?深度学习的中心思想是用神经网络来学习特征的表示,而不是程序员去设计它们。 所以为什么不把词嵌入只当做模型参数,而是通过训练来更新呢? 这就才是我们要确切做的事。我们将用神经网络做一些潜在语义属性,但是原则上,学习才是关键。 注意,词嵌入可能无法解释。就是说,尽管使用我们上面手动制作的向量,能够发现数学家和物理学家都喜欢喝咖啡的相似性, 如果我们允许神经网络来学习词嵌入,那么就会发现数学家和物理学家在第二维度有个较大的值,它所代表的含义很不清晰。 它们在一些潜在语义上是相似的,但是对我们来说无法解释。
@@ -62,11 +56,11 @@ cf775cf1814914c00f5bf7ada7de4369.gif
## Pytorch中的词嵌入
-在我们举例或练习之前,这里有一份关于如何在Pytorch和常见的深度学习中使用词嵌入的简要介绍。 与制作one-hot向量时对每个单词定义一个特殊的索引类似,当我们使用词向量时也需要为每个单词定义一个索引。这些索引将是查询表的关键点。意思就是,词嵌入被被存储在一个|V|*D的向量中,其中D是词嵌入的维度。词被被分配的索引i,表示在向量的第i行存储它的嵌入。在所有的代码中,从单词到索引的映射是一个叫'word_to_ix'的字典。
+在我们举例或练习之前,这里有一份关于如何在`Pytorch`和常见的深度学习中使用词嵌入的简要介绍。 与制作`one-hot`向量时对每个单词定义一个特殊的索引类似,当我们使用词向量时也需要为每个单词定义一个索引。这些索引将是查询表的关键点。意思就是,词嵌入被被存储在一个![](./img/WordEmbeddings-2b13c62ff7b8f4c26887bf369a4e44c8.gif)的向量中,其中![](./img/WordEmbeddings-f623e75af30e62bbd73d6df5b50bb7b5.gif)是词嵌入的维度。词被被分配的索引`i`,表示在向量的第`i`行存储它的嵌入。在所有的代码中,从单词到索引的映射是一个叫`word_to_ix`的字典。
-能使用词嵌入的模块是torch.nn.Embedding,这里面有两个参数:词汇表的大小和词嵌入的维度。
+能使用词嵌入的模块是`torch.nn.Embedding`,这里面有两个参数:词汇表的大小和词嵌入的维度。
-索引这张表时,你必须使用torch.LongTensor(因为索引是整数,不是浮点数)。
+索引这张表时,你必须使用`torch.LongTensor`(因为索引是整数,不是浮点数)。
```py
# 作者: Robert Guthrie
@@ -99,12 +93,11 @@ tensor([[ 0.6614, 0.2669, 0.0617, 0.6213, -0.4519]],
## 例子: N-Gram语言模型
-回想一下,在n-gram语言模型中,给定一个单词序列向量w,我们要计算的是
-```py
-\[P(w_i | w_{i-1}, w_{i-2}, \dots, w_{i-n+1} )\]
-```
+回想一下,在`n-gram`语言模型中,给定一个单词序列向量![](./img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif),我们要计算的是
-wi是单词序列的第i个单词。
+![](./img/WordEmbeddings-3c3d846fb2913b4605e8d59bc5a14e6c.gif)
+
+![](./img/WordEmbeddings-aa38f107289d4d73d516190581397349.gif)是单词序列的第`i`个单词。
在本例中,我们将在训练样例上计算损失函数,并且用反向传播算法更新参数。
```py
CONTEXT_SIZE = 2
@@ -192,20 +185,18 @@ print(losses) # 用训练数据每次迭代,损失函数都会下降。
## 练习:计算连续词袋模型的词向量
-连续词袋模型(CBOW)在NLP深度学习中使用很频繁。它是一个模型,尝试通过目标词前后几个单词的文本,来预测目标词。这有别于语言模型,因为CBOW不是序列的,也不必是概率性的。 CBOW常用于快速地训练词向量,得到的嵌入用来初始化一些复杂模型的嵌入。通常情况下,这被称为预训练嵌入。 它几乎总能帮忙把模型性能提升几个百分点。
+连续词袋模型(`CBOW`)在`NLP`深度学习中使用很频繁。它是一个模型,尝试通过目标词前后几个单词的文本,来预测目标词。这有别于语言模型,因为`CBOW`不是序列的,也不必是概率性的。 `CBOW`常用于快速地训练词向量,得到的嵌入用来初始化一些复杂模型的嵌入。通常情况下,这被称为`预训练嵌入`。 它几乎总能帮忙把模型性能提升几个百分点。
-CBOW模型如下所示: 给定一个单词Wi,N代表两边的滑窗距,如Wi-1, .... ,Wi-N 和 Wi+1, ..... Wi+N,并将所有的上下文词统称为C,CBOW试图最小化
+`CBOW`模型如下所示: 给定一个单词![](./img/WordEmbeddings-aa38f107289d4d73d516190581397349.gif) ,![](./img/WordEmbeddings-8d9c307cb7f3c4a32822a51922d1ceaa.gif)代表两边的滑窗距,如![](./img/WordEmbeddings-3f53ca9954dfc8730d4f58c937097118.gif)和![](./img/WordEmbeddings-3ff042e26bf4d74a5488884f76800e6c.gif),并将所有的上下文词统称为![](./img/WordEmbeddings-0d61f8370cad1d412f80b84d143e1257.gif) ,`CBOW`试图最小化
-```py
-\[-\log p(w_i | C) = -\log \text{Softmax}(A(\sum_{w \in C} q_w) + b)\]
-```
+![](./img/WordEmbeddings-56cc30cd24196bea5f078cb9b1f1d0dc.gif)
-其中q_w是单词W的嵌入。
+其中![](./img/WordEmbeddings-4856f4335c4b3d6613590c6d264e3541.gif)是单词![](./img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif)的嵌入。
-在Pytorch中,通过填充下面的类来实现这个模型,有两条需要注意:
+在`Pytorch`中,通过填充下面的类来实现这个模型,有两条需要注意:
* 考虑下你需要定义哪些参数。
-* 确保你知道每步操作后的结构,如果想重构,请使用.view()
+* 确保你知道每步操作后的结构,如果想重构,请使用`.view()`
```py
CONTEXT_SIZE = 2 # 左右各两个词
diff --git a/docs/1.0/img/WordEmbeddings-0d61f8370cad1d412f80b84d143e1257.gif b/docs/1.0/img/WordEmbeddings-0d61f8370cad1d412f80b84d143e1257.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4b5ffe596011e0f313548d832edb157ae57eb27a
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-0d61f8370cad1d412f80b84d143e1257.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-1ed346930917426bc46d41e22cc525ec.gif b/docs/1.0/img/WordEmbeddings-1ed346930917426bc46d41e22cc525ec.gif
new file mode 100644
index 0000000000000000000000000000000000000000..909611705ede5e2309b9a411d8c9f22893fa3919
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-1ed346930917426bc46d41e22cc525ec.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-2b13c62ff7b8f4c26887bf369a4e44c8.gif b/docs/1.0/img/WordEmbeddings-2b13c62ff7b8f4c26887bf369a4e44c8.gif
new file mode 100644
index 0000000000000000000000000000000000000000..96af6340453bacc138140d3aec2cd45790805404
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-2b13c62ff7b8f4c26887bf369a4e44c8.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-3c3d846fb2913b4605e8d59bc5a14e6c.gif b/docs/1.0/img/WordEmbeddings-3c3d846fb2913b4605e8d59bc5a14e6c.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5b58c467e0c8d183fb39273a83669094ce4bf0c7
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-3c3d846fb2913b4605e8d59bc5a14e6c.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-3f53ca9954dfc8730d4f58c937097118.gif b/docs/1.0/img/WordEmbeddings-3f53ca9954dfc8730d4f58c937097118.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420db9acdeaaa12670fd6b014ce632cae1a1d6bc
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-3f53ca9954dfc8730d4f58c937097118.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-3ff042e26bf4d74a5488884f76800e6c.gif b/docs/1.0/img/WordEmbeddings-3ff042e26bf4d74a5488884f76800e6c.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f3c91bcf203f124ad16d59a99f40e070fa588b49
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-3ff042e26bf4d74a5488884f76800e6c.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-4856f4335c4b3d6613590c6d264e3541.gif b/docs/1.0/img/WordEmbeddings-4856f4335c4b3d6613590c6d264e3541.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0d668f1de55b0cd9307178220014269d91dc9df9
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-4856f4335c4b3d6613590c6d264e3541.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-5206560a306a2e085a437fd258eb57ce.gif b/docs/1.0/img/WordEmbeddings-5206560a306a2e085a437fd258eb57ce.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f53085db02cdbe3db6a85a731115c6308ecb498b
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-5206560a306a2e085a437fd258eb57ce.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-56cc30cd24196bea5f078cb9b1f1d0dc.gif b/docs/1.0/img/WordEmbeddings-56cc30cd24196bea5f078cb9b1f1d0dc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..72ff3b67b05ab23bf0cb05f287679c24f546ff52
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-56cc30cd24196bea5f078cb9b1f1d0dc.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-62ca51f900bf27324a2be4e6b8609f4b.gif b/docs/1.0/img/WordEmbeddings-62ca51f900bf27324a2be4e6b8609f4b.gif
new file mode 100644
index 0000000000000000000000000000000000000000..68c7267f371b95b1cda34f21f8ba61caef62acac
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-62ca51f900bf27324a2be4e6b8609f4b.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-74fcb594bdd93c0f956682ae1ea013e6.gif b/docs/1.0/img/WordEmbeddings-74fcb594bdd93c0f956682ae1ea013e6.gif
new file mode 100644
index 0000000000000000000000000000000000000000..612bf26e8df31e714bc30b7029edc4d6b3e10560
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-74fcb594bdd93c0f956682ae1ea013e6.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-8b4e6bfa073defa91d3f23cdec8f1f0e.gif b/docs/1.0/img/WordEmbeddings-8b4e6bfa073defa91d3f23cdec8f1f0e.gif
new file mode 100644
index 0000000000000000000000000000000000000000..58b5390b2450343914cfa41cdb4935da750c81ac
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-8b4e6bfa073defa91d3f23cdec8f1f0e.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-8d9c307cb7f3c4a32822a51922d1ceaa.gif b/docs/1.0/img/WordEmbeddings-8d9c307cb7f3c4a32822a51922d1ceaa.gif
new file mode 100644
index 0000000000000000000000000000000000000000..900275c2edd12b4c2bbf39da3493cd45eeeae885
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-8d9c307cb7f3c4a32822a51922d1ceaa.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-a0be0498fd8216177330deffbfcb6ea2.gif b/docs/1.0/img/WordEmbeddings-a0be0498fd8216177330deffbfcb6ea2.gif
new file mode 100644
index 0000000000000000000000000000000000000000..70f5fba201de51cf1497cd0a3eb53e8a8e226bcf
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-a0be0498fd8216177330deffbfcb6ea2.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-aa38f107289d4d73d516190581397349.gif b/docs/1.0/img/WordEmbeddings-aa38f107289d4d73d516190581397349.gif
new file mode 100644
index 0000000000000000000000000000000000000000..545f83b7eccb802c2f0c9e29a8217a783a24ab1c
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-aa38f107289d4d73d516190581397349.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-cf775cf1814914c00f5bf7ada7de4369.gif b/docs/1.0/img/WordEmbeddings-cf775cf1814914c00f5bf7ada7de4369.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ab8206e72c6d3c1c66a2b3f31a76c7c66150ba8e
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-cf775cf1814914c00f5bf7ada7de4369.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif b/docs/1.0/img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif
new file mode 100644
index 0000000000000000000000000000000000000000..160e397556d9e00cd7bdd0c3d0521660a4b08ed7
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-f1290186a5d0b1ceab27f4e77c0c5d68.gif differ
diff --git a/docs/1.0/img/WordEmbeddings-f623e75af30e62bbd73d6df5b50bb7b5.gif b/docs/1.0/img/WordEmbeddings-f623e75af30e62bbd73d6df5b50bb7b5.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d8937d82f44cdb35a5b423f90f6096df0677ef5
Binary files /dev/null and b/docs/1.0/img/WordEmbeddings-f623e75af30e62bbd73d6df5b50bb7b5.gif differ