9.5 神经语言模型 337
One-hot 编码的优点是形式简单、易于计算,而且这种表示与词典具有很好的对
应关系,因此每个编码都可以进行解释。但是,One-hot 编码把单词都看作是相互正
交的向量。这导致所有单词之间没有任何的相关性。只要是不同的单词,在 One-hot
编码下都是完全不同的东西。比如,大家可能会期望诸如“桌子”和“椅子”之类的
词具有一些相似性,但是 One-hot 编码把它们看作相似度为 0 的两个单词。
2. 分布式表示
神经语言模型中使用的是一种分布式表示。在神经语言模型里,每个单词不再
是完全正交的 0-1 向量,而是在多维实数空间中的一个点,具体表现为一个实数向
量。很多时候,也会把单词的这种分布式表示叫做词嵌入。
单词的分布式表示可以被看作是欧式空间中的一个点,因此单词之间的关系也
可以通过空间的几何性质进行刻画。如图9.46所示,可以在一个 512 维空间上表示不
同的单词。在这种表示下,“桌子”与“椅子”之间是具有一定的联系的。
0.1
−1
2
...
0
1
2
0.2
...
−1
属性
1
属性
2
属性
3
...
属性
512
桌子
椅子
cos(‘桌子’,‘椅子’) = 0.5
图 9.46 单词的分布式表示 (词嵌入)
那么,分布式表示中每个维度的含义是什么?可以把每一维度都理解为一种属
性,比如一个人的身高、体重等。但是,神经网络模型更多的是把每个维度看作是单
词的一种抽象“刻画”,是一种统计意义上的“语义”,而非简单的人工归纳的事物的
一个个属性。使用这种连续空间的表示的好处在于,表示的内容(实数向量)可以进
行计算和学习,因此可以通过模型训练得到更适用于自然语言处理的单词表示结果。
为了方便理解,看一个简单的例子。假如现在有个“预测下一个单词”的任务:
有这样一个句子“屋里/要/摆放/一个/ ”,其中下划线的部分表示需要预测的下
一个单词。如果模型在训练数据中看到过类似于“摆放一个桌子”这样的片段,那
么就可以很自信的预测出“桌子”。另一方面,很容易知道,实际上与“桌子”相近
的单词,如“椅子”,也是可以预测的单词的。但是,“椅子”恰巧没有出现在训练数
据中,这时如果用 One-hot 编码来表示单词,显然无法把“椅子”填到下划线处;而
如果使用单词的分布式表示,很容易就知道“桌子”与“椅子”是相似的,因此预测
“椅子”在一定程度上也是合理的。
实例 9.1 屋里/要/摆放/一个/____ 预测下个词
屋里/要/摆放/一个/桌子 见过
屋里/要/摆放/一个/椅子 没见过,但是仍然是合理预测