
从 Skip-gram 的局部预测出发,读懂负采样、子采样和短语 token 如何把词的共现关系变成可计算的向量结构,并学会把训练速度、类比准确率与方法边界放在一起判断。
Negative Sampling,又把训练单位扩展到短语。1word2vec 这个名字,会错过它真正做的三次取舍。w₁, w₂, ..., w_T,以 w_t 为中心、窗口半径为 c,Skip-gram 要最大化:(1/T) Σ_t Σ_{-c≤j≤c, j≠0} log p(w_{t+j} | w_t)w_t 要分别预测 w_{t-2}、w_{t-1}、w_{t+1} 和 w_{t+2}。一个中心词因此产生多个训练约束,而不是只产生一个标签。2
w(t) 经过 projection 后,分别预测 w(t-2)、w(t-1)、w(t+1) 和 w(t+2)。图中展示的是训练目标的数据流,不是模型在推理时生成一句话。3v_w,也有一个输出向量 v'_w。给定中心词 w_I 和目标上下文词 w_O,标准 softmax 用两个向量的点积计算分数,再对整个词表归一化:p(w_O | w_I) = exp(v'_{w_O}ᵀ v_{w_I}) / Σ_{w=1}^W exp(v'_wᵀ v_{w_I})vec(Madrid) - vec(Spain) + vec(France) 找到接近 vec(Paris) 的向量,说明某些关系可以表现为向量空间中的方向。4W 个输出节点降到大约 log₂(W) 个节点。5Negative Sampling 采取的是另一种近似。它不再试图给整个词表分配一组严格归一化的概率,而是把一个真实上下文词和 k 个随机抽来的噪声词放在一起做二分类:真实词的点积要高,噪声词的点积要低。log σ(v'_{w_O}ᵀ v_{w_I}) + Σ_{i=1}^k E_{w_i∼P_n(w)}[log σ(-v'_{w_i}ᵀ v_{w_I})]log σ(v'_{w_O}ᵀ v_{w_I}) 奖励真实中心词—上下文词对。两个向量点积越大,第一项越接近 0,损失越小。log σ(-v'_{w_i}ᵀ v_{w_I}) 惩罚噪声词得到过高分。噪声词的点积越小,负号后的值越大,第二项越容易优化。k 决定每个正例要配多少个负例。论文在小数据集上观察到 k=5—20 有用,在大数据集上则可以小到 2—5。这不是免费的精度:k 越大,每个训练样本的计算也越多。6U(w) 提升到 3/4 次幂:P_n(w) = U(w)^{3/4} / Zk 有关的规模。the、in、a 这样的高频词会出现数亿次。它们当然有语法作用,但对很多词对来说,France 和 the 的共现信息远不如 France 和 Paris 有区分度。若把每次出现都保留下来,高频词会消耗大量训练时间,并反复提供低信息约束。7f(w_i) 和阈值 t 定义丢弃概率:P(w_i) = 1 - √(t / f(w_i))t 设在 10⁻⁵ 左右。这个操作同时改变两件事:训练样本减少,训练速度提高;高频词被删掉后,稀有词在有效窗口里遇到的上下文也发生变化,向量质量可能随之提高。vec(Berlin) - vec(Germany) + vec(France),再用余弦距离寻找最近的词。这个任务测的是向量关系能否支持一类固定的几何操作,不是对所有语言理解能力的总测验。810⁻⁵ 子采样。9| 方法 | 子采样 | 训练时间(分钟) | 句法准确率 | 语义准确率 | 总准确率 |
|---|---|---|---|---|---|
| NEG-5 | 无 | 38 | 63% | 54% | 59% 9 |
| HS-Huffman | 无 | 41 | 53% | 40% | 47% 9 |
| NEG-5 | 10⁻⁵ | 14 | 61% | 58% | 60% 9 |
| NEG-15 | 10⁻⁵ | 36 | 61% | 61% | 61% 9 |
| HS-Huffman | 10⁻⁵ | 21 | 52% | 59% | 55% 9 |
NEG-15 和 HS-Huffman 的相对表现会随数据处理方式变化。使用子采样后,NEG-15 的总准确率是 61%,HS-Huffman 是 55%;但这不是所有任务和数据规模下的普遍排序。论文自己也指出,训练算法和超参数需要按任务选择。k=15 比 k=5 多付出的计算;只报 14 分钟又看不出它的总准确率只比没有子采样的 NEG-5 高 1 个百分点。论文的贡献在于把大规模训练的速度、数据处理和表示效果放进同一组实验里比较。8Boston 和 Globe、Air 和 Canada 的向量分别学好,并不能保证模型自动得到整个短语的含义。4New York Times 和 Toronto Maple Leafs 会作为整体进入训练;普通的 this is 则保持不变。短语检测分数为:score(w_i, w_j) = [count(w_i w_j) - δ] / [count(w_i) × count(w_j)]δ 是折扣项,用来避免大量低频词偶然组成短语。经过 2—4 轮扫描,模型可以先找到二元短语,再把更长的短语组合出来。10vec(Russia) + vec(river) 接近 vec(Volga River)。为什么加法可能有效?论文给出的解释是,词向量在训练中记录了上下文分布;输出层的点积与概率的对数相关,因此两个向量相加,近似对应把两组上下文约束叠加起来。只有同时得到两边高分的词,才更容易在组合后留下来。14Negative Sampling 则用少量噪声二分类换取更低的单样本成本。ar5iv.labs.arxiv.org
ar5iv.labs.arxiv.org
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.