词嵌入科普:word2vec成功的秘密成分
你是否听说过“word2vec”?它是一种广泛应用于自然语言处理领域的工具,用来学习单词的向量表示(即词嵌入)。那么,为什么word2vec如此成功呢?答案其实隐藏在一些特定的架构选择中。如果把这些选择应用到传统的分布语义方法上,也会让它们的表现与流行的词嵌入方法不相上下。
这篇文章将探讨word2vec成功背后的关键因素,并解释这些因素如何与更传统的模型建立联系。
GloVe简介
GloVe是一种流行的词嵌入模型,它的目标是明确地通过向量差来编码单词的意义——这在某种程度上可以看作是word2vec的一种偶然副产物。具体来说,GloVe作者证明了两个单词共现概率的比值包含信息,而不是它们的共现概率本身。因此,他们提出了一种加权最小二乘目标函数J,直接最小化两个单词向量点积与它们共现次数对数之间的差异:
[
J = \sum_{i,j=1}^V f(X_{ij})(w_i^T \tilde{w}_j + b_i + \tilde{b}j - \log X{ij})^2
]
其中:
- ( w_i ) 和 ( b_i ) 分别是单词i的向量和偏置;
- ( \tilde{w}_j ) 和 ( b_j ) 分别是上下文单词j的向量和偏置;
- ( X_{ij} ) 是单词i在单词j上下文中出现的次数;
- ( f ) 是一个权重函数,用于降低稀有和频繁共现的权重。
由于共现计数可以直接存储在单词-上下文共现矩阵中,因此GloVe使用这样的矩阵作为输入,而非整个语料库。
词嵌入与分布语义模型
尽管表面上看,分布语义模型(DSMs)和词嵌入模型使用不同的算法来学习单词表示——前者基于计数,后者基于预测——但从根本上看,这两类模型都依赖于相同的数据基础统计量,即单词间的共现计数。
因此,问题就变成了:为什么在几乎相同的信息下,词嵌入模型的表现仍优于传统DSM?
模型比较
根据Levy等人(2015)的研究,我们可以通过比较以下四种模型来识别神经词嵌入模型成功的关键因素,并展示如何将这些因素转移到传统方法中:
- 正点互信息(PPMI)
PPMI是一种常用度量,用于衡量两词之间的关联强度。计算公式为:
[
PPMI(w, c) = \max(\log \frac{P(w, c)}{P(w)P(c)}, 0)
]
其中,( P(w, c) ) 是两词共同出现的概率,( P(w) ) 和 ( P(c) ) 是它们各自出现的概率。 - 奇异值分解(SVD)
SVD是一种常用的降维方法,在潜在语义分析(LSA)中被引入NLP领域。SVD将单词-上下文共现矩阵分解为三个矩阵 ( U \cdot \Sigma \times V^T ),并通常保留最大的 ( d ) 个特征值以生成单词和上下文的表示。 - Skip-gram with Negative Sampling(SGNS)
即word2vec模型。详细内容可以参考我的之前博客。 - 全局向量(GloVe)
在前一节中已有详细介绍。
超参数
接下来,我们将分析以下几个超参数对模型表现的影响:
预处理
- 动态上下文窗口
DSMs通常使用固定大小且未加权的上下文窗口,而SGNS和GloVe则赋予距离较近的单词更多权重,因为越接近的单词通常对词义更重要。 - 采样频率较高的词
SGNS会随机移除频率高于某阈值 ( t ) 的高频词,概率为 ( p = 1 - \sqrt{\frac{t}{f}} )。 - 删除低频词
这一步在预处理阶段进行,可以扩大实际使用的上下文窗口。
关联度量
- 偏移PMI
提高负样本数量 ( k ) 可以提高参数估计精度。word2vec隐式因子化的PMI矩