1. 引入
词嵌入,英文为 Word Embedding,这是语言表示的一种方式。它可以让算法理解一些类似的词。
2. 词表示:one-hot
我们可以用one-hot向量来表示词,如下图所示。
这种表示方式,我们需要首先获取一个字典,比如字典中有100000个词。
对每一个词,都得到一个向量,其中该词对应位置上置一,其他位置置零。
比如man这个词位于字典的第5391个位置,则我们为这个单词创建一个100000维度的向量,其中第5391个位置处值为1,其他位置值为0.
这种方法的缺点,是它把每个词孤立了起来。这样会使算法对相关词的泛化能力不强。
比如,如下两句话中,都需要在末尾填入一个单词。
-
I want a glass of orange ____
-
I want a glass of apple ____
这里都应该填入juice。但是,即使你的算法已经学到了第一个句子,但它并不知道orange和apple比较类似,所以第一个句子的经验难以被学到。用one-hot向量来表示,问题在于,orange和apple之间的内积为0,所以算法很难从orange juice中学到apple后面也应该跟着juice。
3. 词表示:Word Embedding
上例中,用one-hot向量表示orange和apple,会使得orange和apple之间的内积为0,所以用one-hot无法表示两个相似的词。用Word Embedding表示法,就能使相似词之间的向量也相似。
我们用下面这个例子来方便大家理解Word Embedding。
这是一个理想化的Word Embedding表示,表格中每一列的数据表示某一个单词的Word Embedding向量。可以看到,Queen和King的向量值很接近,说明这两个词有相关性。
在这种表示中,我们要知道:
-
第一列表示特征,比如Gender,Royal,Age等,这里有300个特征;
-
后面每一列表示一个单词的word embedding;
-
其中值为1表示单词与特征非常接近,比如King与Royal的相似性值为0.93;值为0表示相关性很低。
-
Apple 的Word Embedding向量 为 [0,-0.01,0.03,0.95, …], Orange 的Word Embedding向量 为[0.01,0.00,-0.02,0.97, …],可以看到他们的向量都非常相似。
这种表示方法的优点,是对于2中提到的两句话例子,算法训练时知道orange后面需要填写juice,则很大概率上apple后面也是相同的词。
用Word Embedding来表示词,会让算法的泛化能力更好。虽然真正的Word Embedding表示,无法做到本例中能知道各个向量值具体表示什么特征,我们通过这个例子,也只是说明Word Embedding这种高维的表示,比on-hot要好。
4. 参考
- Andrew NG,序列模型