GloVe - Global Vectors for Word Representation

GloVe

概览

GloVe是基于词与词的共现信息训练出的词向量,除去预处理阶段的计数开销,真正训练用来训练词向量的部分其实也十分简单。但该文解释的十分独特,从一个解决问题者的角度抽丝剥茧直至得出最终的目标函数;并且其还从另一个角度解释了word2vec的模型,提供了一个理解的新思路。但这些解释有些强行,或者可能我没有理解其后的数学原理:只理解到作者是这样做的,但并不明白为什么要这样做,会不会有更好的做法。但另一方面,作者的这种解释模型的思路和能力是值得学习的。

GloVe

GloVe是基于词之间的共现信息训练的模型。我们用$$X$$来标记这个词语之间的共现矩阵,其元素$$X_{ij}$$代表词语$$i$$与词语$$j$$的共现频次,则$$X_i=\sum_k X_{ik}$$是词$i$在所有上下文中出现的频次。$$P_{ij}=P(j\vert i) = \frac{X_{ij}}{X_i}$$则代表了上下文中出现词语$$i$$后词$$j$$出现的概率。

Co-occurrence probabilities.

之后作者发现使用概率之间的比值会比直接使用概率更能区分相关词和无关词。(但这可能是结果导向)

$$
F(w_i, w_j, \hat{w}k) = \frac{P{ik}}{P_{jk}}
$$

换言之,作者需要确定一个合适的函数$$F$$来拟合语料中的统计信息。
下面作者一步步细化目标函数$$F$$:
$$
F(w_i, w_j, \hat{w}_k) \rightarrow F(w_i - w_j, \hat{w}_k)
$$
上式的细化,个人理解为只是种选择。
$$
F(w_i - w_j, \hat{w}_k) \rightarrow F((w_i-w_j)^T \hat{w}k)
$$
上述过程的细化是由于$$\frac{P
{ik}}{P_{jk}}$$只是个标量,选用点乘方式来保证结果可比较。
$$
F((w_i-w_j)^T \hat{w}_k) \rightarrow \frac{F(w^T_i \hat{w}_k)}{w^T_j \hat{w}k}
$$
这一步细化的理由是因为统计信息中$$X
{ij} = X_{ji}$$,即$$X = X^T$$。作者因而限制上下文$$w$$与$$\hat{w}$$可以互相交换,进而要求$$(\mathbb{R}, +)$$与$$(\mathbb{R}_{>0}, \times)$$同构得出上式(缺乏数学知识,无法理解)。作者进一步求解得出$$F=\exp$$.
$$
\frac{F(w^T_i \hat{w}_k)}{w^T_j \hat{w}k} = \frac{P{ik}}{P_{jk}}
$$
上式的得出是通过与第一个公式联立得出下式:
$$
F(w^T_i \hat{w}k) = P{ik} = \frac{X_{ik}}{X_i}
$$
进一步,利用结论$$F=\exp$$可以得出下式:
$$
w_i^T \hat{w}k = \log{P{ik}} = \log{X_{ik}} - \log{X_i}
$$
注意上式如果忽略到$$\log{X_i}$$的话,左右两边都满足对称性,即左边可以交换$$w$$与$$\hat{w}$$,右边可以交换$$X_{ik}$$与$$X_{ki}$$,基于该观察得出:
$$
w_i^T \hat{w}_k + b_i + \hat{b}k = \log{X{ik}}
$$

至此得出了最终的优化目标:
$$
J = \sum_{i,j=1}^V f(X_{ij}) (w_i^T \hat{w}_j + b_i + \hat{b}j - \log{X{ij}})^2
$$
这里值得注意的有目标函数只针对有关联的词语$$i,j=1$$才计算,同时考虑到罕见词被观测数量较少,可能会引入噪音,引入调节系数$$f(X_{ij})$$(具体形式参见原文)。

Relationship to Other Models

这部分作者尝试从共现矩阵的信息解释基于窗口的词向量方法,特别是模型Skip-gram。
Skip-gram的对于某个给定的中心词$$i$$要预测词$$j$$的概率,形式化的说:
$$
Q_{ij} = \frac{
\exp{w_i^T\hat{w}j}
}{
\sum
{k=1}^V \exp{w_i^T \hat{w}k}
}
$$
则上式隐含其全局的目标函数为
$$
J = -\sum
{i\in\text{corpus}, j\in\text{context}(i)} \log{Q_{ij}}
$$
上式等价于
$$
J = -\sum_{i=1}^V\sum_{j=1}^V X_{ij} \log{Q_{ij}}
$$
等价于
$$
J = -\sum_{i=1}^V X_i \sum_{j=1}^V P_{ij} \log{Q_{ij}} = \sum_{i=1}^V X_i H(P_i, Q_i)
$$
其中,$$H(P_i, Q_i)$$是指分布$$P_i$$和$$Q_i$$的交叉熵。即Skip-gram实质上是希望词向量之间的某些关系可以拟合真实语料中的分布。而交叉熵这一衡量指标只是众多指标中的一者,特别是其度量符合长尾现象的语言学现象表现并不好,且计算开销大。因此可以用简单的均方差来担任这一角色:
$$
\hat{J} = \sum_{i,j} X_i (\hat{P}{ij} - \hat{Q}{ij})^2
$$
其中,$$\hat{P}{ij} = X{ij}$$和$$\hat{Q}_{ij} = \exp{w_i^T \hat{w}j}$$,但现实中这些数值往往很大,我们采用数学上等价的对数形式:
$$
\hat{J}
\begin{align}
= & \sum
{i,j} X_i (\log{\hat{P}{ij}} - \log{\hat{Q}{ij}})^2\
= & \sum_{i,j} X_i (w^T_i \hat{w}j - \log{X{ij}})^2
\end{align}
$$
而权重$$X_i$$并不能保证对于上式是最优的,实践中word2vec的第二篇论文中提到”subsampling”技术确实可以提高不常见词的词向量质量。形式化的说,就是可以将优化目标解释为:
$$
\hat{J} = \sum_{i,j} f(X_{ij}) (w^T_i \hat{w}j - \log{X{ij}})^2
$$
至此,可见与前面提出的GloVe形式一致。

参考资料

GloVe: Global Vectors for Word Representation

0%