提交 205ade40 编写于 作者: A Aston Zhang

prelim draft

上级 9913e844
# 词向量 — word2vec
词向量。
自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。在机器学习中,如何使用向量表示词?
顾名思义,词向量是用来表示词的向量,通常也被认为是词的特征向量。近年来,词向量已逐渐成为自然语言处理的基础知识。
## One-hot向量的局限
我们在[循环神经网络](../chapter_recurrent-neural-networks/rnn-scratch.md)中介绍过one-hot向量来表示词。假设词典中不同词的数量为$N$,每个词可以和从0到$N-1$的连续整数一一对应。假设一个词的相应整数表示为$i$,为了得到该词的one-hot向量表示,我们创建一个全0的长为$N$的向量,并将其第$i$位设成1。
然而,使用one-hot词向量并不是一个好选择。一个主要的原因是,one-hot词向量无法表达不同词之间的相似度。例如,任何一对词的one-hot向量的余弦相似度都为0。
## word2vec
2013年,Google团队发表了[word2vec](https://code.google.com/archive/p/word2vec/)工具。word2vec工具主要包含两个模型:跳字模型(skip-gram)和连续词袋模型(continuous bag of words,简称CBOW),以及两种高效训练的方法:负采样(negative sampling)和层序softmax(hierarchical softmax)。值得一提的是,word2vec词向量可以较好地表达不同词之间的相似和类比关系。
word2vec自提出后被广泛应用在自然语言处理任务中。它的模型和训练方法也启发了很多后续的词向量模型。本节将重点介绍word2vec的模型和训练方法。
## 跳字模型
## 连续词袋模型
## 负采样
## 层序softmax
## 结论
......
......@@ -181,9 +181,9 @@ for data, label in data_iter_consecutive(my_seq, batch_size=2, num_steps=3):
由于各个采样在原始序列上的位置是毗邻的时序长度为`num_steps`的连续数据点,因此,使用相邻批量采样训练模型时,读取每个时序批量前,我们需要将该批量最开始的隐含状态设为上个批量最终输出的隐含状态。在同一个epoch中,隐含状态只需要在该epoch开始的时候初始化。
## Onehot编码
## One-hot向量
注意到每个字符现在是用一个整数来表示,而输入进网络我们需要一个定长的向量。一个常用的办法是使用onehot来将其表示成向量。也就是说,如果一个字符的整数值是$i$, 那么我们创建一个全0的长为`vocab_size`的向量,并将其第$i$位设成1。该向量就是对原字符的onehot编码
注意到每个字符现在是用一个整数来表示,而输入进网络我们需要一个定长的向量。一个常用的办法是使用one-hot来将其表示成向量。也就是说,如果一个字符的整数值是$i$, 那么我们创建一个全0的长为`vocab_size`的向量,并将其第$i$位设成1。该向量就是对原字符的one-hot向量
```{.python .input n=10}
nd.one_hot(nd.array([0, 2]), vocab_size)
......@@ -203,7 +203,7 @@ print('input[0] shape: ', inputs[0].shape)
## 初始化模型参数
对于序列中任意一个时间戳,一个字符的输入是维度为`vocab_size`的onehot编码向量,对应输出是预测下一个时间戳为词典中任意字符的概率,因而该输出是维度为`vocab_size`的向量。
对于序列中任意一个时间戳,一个字符的输入是维度为`vocab_size`的one-hot向量,对应输出是预测下一个时间戳为词典中任意字符的概率,因而该输出是维度为`vocab_size`的向量。
当序列中某一个时间戳的输入为一个样本数为`batch_size`(对应模型定义中的$n$)的批量,每个时间戳上的输入和输出皆为尺寸`batch_size * vocab_size`(对应模型定义中的$n \times x$)的矩阵。假设每个样本对应的隐含状态的长度为`hidden_dim`(对应模型定义中隐含层长度$h$),根据矩阵乘法定义,我们可以推断出模型隐含层和输出层中各个参数的尺寸。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册