为什么需要词向量
计算机无法直接理解“apple”或“苹果”这样的符号,必须把词转换成数值表示。最直接的表示是 one-hot 向量:词汇表大小为 ,每个词对应一个长度为 的向量,只有该词的位置为 1,其余为 0。
例如词表为 :
one-hot 表示有两个致命缺陷:
- 维度灾难:真实词表可达 到 ,向量极其稀疏且高维;
- 语义鸿沟:任意两个不同词的 one-hot 向量内积都是 0,无法表达“apple”和“banana”都是水果这类相似性。
分布式假设
分布式假设(Distributional Hypothesis)认为:出现在相似上下文中的词,往往具有相似的语义。
“You shall know a word by the company it keeps.” — J.R. Firth, 1957
例如“猫”和“狗”都经常出现在“喂”“宠物”“叫”等上下文里,因此它们的意义相近。基于这个假设,可以从大规模语料中统计词的上下文分布,把分布作为词的表示。
共现矩阵
构建一个 的共现矩阵 ,其中:
- :词 出现在词 上下文窗口中的次数;
- :词 的上下文分布,即共现矩阵的行向量。
上下文窗口可以是对称的,也可以只取左侧或右侧。距离较近的词通常更重要,因此可以对共现次数按距离加权,例如使用距离的倒数:
共现矩阵的维度仍然是 ,而且非常稀疏。直接把它当作词向量,会面临高维、稀疏和噪声问题。
点互信息与 PPMI
共现次数受词频影响很大:高频词和任何词都容易共现。为了衡量“共现是否超出偶然”,可以使用 点互信息(Pointwise Mutual Information, PMI):
其中:
- :词 在共现矩阵中的行和;
- :语料中的总词数。
PMI 为正表示共现比随机预期更频繁,为负表示更少。
PMI 对低频词不稳定,且可能取负值。常用 正点互信息(Positive PMI, PPMI):
PPMI 矩阵通常比原始共现矩阵更能反映语义关系。
用 SVD 降维
共现矩阵或 PPMI 矩阵仍然是 的高维矩阵。奇异值分解(SVD)可以把它分解为:
- :左奇异向量矩阵;
- :对角矩阵,对角线元素为奇异值,按从大到小排列;
- :右奇异向量矩阵。
保留前 个奇异值及对应的奇异向量,得到低秩近似:
其中 。词 的低维表示可以取:
- 的第 行;
- 的第 行,后者会把奇异值的大小纳入表示。
SVD 的数学细节见 奇异值与 SVD。
为什么 SVD 能得到语义表示
SVD 找到的是矩阵中方差最大的 个正交方向。在共现矩阵中,这些方向往往对应潜在的语义维度,例如“动物性”“可食用性”“大小”等。把词投影到这些方向上,就得到了稠密、低维的语义向量。
优缺点
| 方面 | 说明 |
|---|---|
| 优点 | 利用全局统计信息;数学上可解释;训练稳定 |
| 缺点 | 共现矩阵构建和 SVD 的计算成本高;新词加入需要重新分解;难以处理多义词 |
| 与词向量的关系 | Word2Vec、GloVe 可以看作对共现统计的不同建模方式 |
从全局统计到预测模型
基于 SVD 的方法直接对全局共现矩阵做分解;Word2Vec 则用局部上下文预测任务训练词向量,训练效率更高,且能通过负采样扩展到大规模语料。GloVe 又把全局共现统计和加权最小二乘结合起来。三者共同奠定了静态词向量的基础。