08 GloVe 词向量(GloVe Word Vectors)
08 GloVe 词向量(GloVe Word Vectors)
这一节在讲什么
这一节讲另一种经典词向量算法:GloVe。
它和 Word2Vec 的不同点在于:
它更直接利用“词与词共现次数”这个全局统计信息。
GloVe 的直觉
设:
\[X_{ij}\]表示单词 $i$ 和单词 $j$ 在语料中彼此接近时的共现次数。
如果两个词经常出现在相近位置,说明它们有更强关系。
所以 GloVe 想做的是:
直接让词向量去拟合这些共现统计。
课程里的目标函数
GloVe 的优化目标写成:
\[\min \sum_{i=1}^{V} \sum_{j=1}^{V} f(X_{ij})\left(\theta_i^T e_j + b_i + b'_j - \log X_{ij}\right)^2\]这个式子看起来长,但意思并不复杂。
它在说:
- 用词向量内积 $\theta_i^T e_j$
- 再加一些偏置项
- 去逼近 $\log X_{ij}$
也就是让“向量关系”能解释“共现频率”。
为什么取对数
因为共现次数 $X_{ij}$ 的范围通常非常大。
- 高频词对可能出现很多很多次
- 低频词对可能只出现几次
取:
\[\log X_{ij}\]可以把尺度压缩得更稳定。
为什么还要乘权重函数 $f(X_{ij})$
因为直接使用所有共现计数会有两个问题:
- $X_{ij}=0$ 时,$\log 0$ 没定义
- 高频词如
the、of、is会支配训练
所以 GloVe 加一个权重函数:
\[f(X_{ij})\]它的作用是:
- 对出现 0 次或极少次的词对降低影响
- 对超高频词对也别给过大权重
一个有趣的点:参数是对称的
GloVe 里:
- $\theta_i$
- $e_j$
角色是比较对称的。
因此课程里提到,训练完后常见做法是把两套向量取平均,得到最终词向量:
\[e_w^{(\mathrm{final})} = \frac{e_w + \theta_w}{2}\]课程还强调了一个重要思想
虽然我们一开始会把某些维度想象成:
- Gender
- Royal
- Age
- Food
但真实训练出来的词向量维度往往不具备这么直观的单维解释。
因为只要存在可逆线性变换 $A$,就有:
\[(A\theta_i)^T (A^{-T}e_j) = \theta_i^T e_j\]这意味着:
词向量坐标轴可以旋转、拉伸、混合,但它表达的关系仍然成立。
所以不要强求“第 17 维一定表示性别”。
真正重要的是整体几何结构,而不是某一维的名字。
小白怎么理解 GloVe 和 Word2Vec 的差别
可以粗略理解成:
- Word2Vec 更像通过“预测任务”间接学关系
- GloVe 更像直接拿“共现统计表”来拟合关系
一个偏预测式,一个偏统计式。
这一节最该记住的公式
共现计数
\[X_{ij}\]GloVe 目标函数
\[\min \sum_{i=1}^{V} \sum_{j=1}^{V} f(X_{ij})\left(\theta_i^T e_j + b_i + b'_j - \log X_{ij}\right)^2\]最终向量常见写法
\[e_w^{(\mathrm{final})} = \frac{e_w + \theta_w}{2}\]线性变换不改变内积结构
\[(A\theta_i)^T (A^{-T}e_j) = \theta_i^T e_j\]这一节最该记住的要点
要点 1:GloVe 直接利用全局共现统计
这是它与 Word2Vec 的主要区别。
要点 2:核心目标是让向量关系拟合 $\log X_{ij}$
所以它本质是一个加权最小二乘问题。
要点 3:权重函数 $f(X_{ij})$ 很关键
它处理零计数和高频词压制问题。
要点 4:词向量各维度不一定可直接解释
重要的是整体几何结构,而不是单轴语义。
这一节一句话总结
GloVe 的核心,是直接用词对共现次数构造一个加权回归目标,让词向量的内积结构去拟合词与词在大语料中的统计关系。
本文由作者按照 CC BY 4.0 进行授权