在谈到 Embedding 不得不谈到 Word Embedding
单词的表达
One Hot Representation
类似于图像分类任务中的 One Hot 编码,我们可以对于单词施行 One Hot Representation.
有 1000 个词汇量。排在第一个位置的代表英语中的冠词 “a”,那么这个 “a” 是用 [1,0,0,0,0,…],只有第一个位置是 1,其余位置都是 0 的 1000 维度的向量表示,如下图中的第一列所示。

也就是说,
One Hot 编码的每个单词就是一个维度,每个单词之间是 independent 的
Distributed Representation
但是上面的编码方式很稀疏,丧失了单词之间的联系,有没有一种编码方式能够隐式的嵌入单词之间的关系?
考虑这样的表格:
| | 0 | 1 |
|---|
| 0 | gender | female | male |
| 1 | age | child | adult |
这个表格中的 gender,age 可以视为 “ 特征 “,而 0,1,… 则是该特征的特征值
我们手动寻求这四个单词之间的关系 f,然后可以使用在两个特征上的值去表示四个单词
⎩⎨⎧female↦[0,0]child↦[1,0]⋯
但是就如图像处理中的各种 kernel 一样(如,Sobel,Canny,…),我们在 CNN 中采用了卷积核用来自动 ” 提取特征 “;是不是我们可以在这里采用同样的思路。
Word Embedding
Word Embedding 就是要从数据中自动学习到输入空间到 Distributed representation 空间的映射 f
那一个非常粗暴的方式是什么呢,我直接学一个矩阵,假设输入词汇量 N,想要提取出 M 个特征,那我学一个 N×M 的转换矩阵就好。
a1a2⋯an−1an×w1.1wmw1.2wm⋯⋮⋮⋮⋯w1.n−1wm.n−1w1.nwm.n