GloVe(Global Vectors)先汇总语料中的词共现,再用向量和偏置拟合这些计数的对数。 它与 SGNS 都利用上下文,但学习材料的组织和损失函数不同。(Pennington et al., 2014)
这里的“全局”指对整个语料汇总统计,不是默认把一篇文档中的所有词互相配对。构造共现计数时,仍要规定上下文窗口、方向及距离权重。
从共现计数开始
记 为中心词 与上下文词 的共现量。若使用距离权重,它可以是加权计数。教学上假设“道路—城市”的计数为 4,而另一个词对为 40。
原始计数相差十倍;取自然对数后,目标值从 变为 ,相差 。对数把乘法比例转成加法差异,降低计数量级悬殊的问题。
但计数 40 不表示语义相似度就是计数 4 的十倍:词本身出现得多,也会产生大量共现。模型需要共同拟合多组关系,不能只读一个计数下结论。
模型怎样拟合这些关系
GloVe 的目标可以写作
其中 是两种角色的词向量; 是分别对应中心词与上下文的标量偏置; 决定每个词对在拟合中的权重。模型拟合的是点积加两项偏置,不是要求点积单独等于对数计数。(Pennington et al., 2014)
原论文使用的权重函数形式为
是权重达到上限的计数阈值, 控制曲线。小计数的影响较弱,超过阈值后权重不再继续增长;本文不把论文中的具体参数当作所有语料的通用最优值。目标只处理非零共现,也就不直接计算 。
它与 SGNS、PMI、SVD 有什么不同
| 方法 | 主要拟合对象 | 训练方式 |
|---|---|---|
| GloVe | 非零共现的对数,加上两类偏置 | 加权平方误差 |
| SGNS | 数据词对与噪声词对的来源 | 采样的逻辑损失 |
| PMI/SPPMI 加 SVD | 事先定义的关联矩阵 | 显式低秩近似 |
SGNS 的 PMI 推导解释了采样目标如何关联到共现统计,但没有让这些方法变成同一个算法。GloVe 也不是“直接对原始共现次数做 SVD”。
尤其不要因为 GloVe 权重中可以出现 ,就把它与 SGNS 的 词频噪声分布混为一谈:一个决定平方误差项的权重,另一个决定负样本如何抽取。
使用时仍要面对的限制
GloVe 通常产生静态词向量,同一个词不会随当前句子自动换一套表示。它也不自带 fastText 那样的字符片段组合机制,训练词表外的词需要额外策略。
显式共现需要统计和保存非零词对;大词表或大窗口会影响这部分成本。选择它还是 SGNS,应一起比较语料、内存、训练预算和下游评价,不能只凭“全局”或“预测式”给方法排高低。
返回 词向量与表示学习专题。