SGNS 是 Skip-Gram with Negative Sampling,即带负采样的跳字模型。它从语料中提取中心词与上下文词,再学习区分这些词对与噪声分布生成的词对。训练完成后,词向量可以作为其他任务的输入或初始化,这就是这里所说的预训练。它是 Mikolov 等人在 2013 年提出的 word2vec 方法组合之一。(Mikolov et al., 2013)

从一句话得到训练词对

看一条已经分词的教学短句。

城市 / 道路 / 连接 / 社区

以“道路”为中心,左右窗口各取一个词,会得到正词对“道路—城市”和“道路—连接”。它们的标签表示在所定义的窗口中观察到了共现,不表示两个词是同义词。

对“道路—城市”这个正词对,可以再抽取“咖啡”和“街区”作为两个噪声上下文,组成负词对。负样本由采样机制决定,不保证语义无关,也不保证从未与中心词共现。 “街区”与“道路”很相关,但仍可能被抽中。实际实现可能过滤部分碰撞,这不等于获得了语义真值。

样本标签自动来自语料窗口与噪声采样,因此不需要人工给每个词对标注语义关系。

模型保存什么

设词表有 个词,向量维度为 。SGNS 通常学习两张 的表。

  • 保存中心词向量,词 对应向量 。
  • 保存上下文向量,词 对应向量 。

同一个词以不同角色出现时,可以查询两张表中的不同参数。词对分数为点积 ;训练结束后通常取中心词表作为词表示,也可以评估其他组合,但应明确所用约定。(Levy & Goldberg, 2014; Mikolov et al., 2013)

Sigmoid 函数 把分数变为 0 到 1 之间的判别输出。这里判别的是训练词对的数据或噪声来源,不是完整词表上的 ,也不是“语义正确”的概率。

一个正词对加两个负词对,怎样计算损失

沿用上面的三个词对。下表中的分数由教学设定给出,没有实际训练模型。

词对采样标签点积分数对正确采样标签分配的概率负对数损失
道路—城市数据,120.127
道路—咖啡噪声,0−10.313
道路—街区噪声,0−20.127

负词对使用 作为噪声标签的概率。三个损失相加约为 0.567;如果三个分数都为 0,总损失为 。所有对数均取自然对数。

这个比较说明模型更符合当前采样标签,不说明它已经更准确地完成了某个下游分类任务。损失与任务指标的关系可接着读 NLL 与交叉熵。

从算例写出训练目标

对一个正词对 ,抽取 个噪声上下文 ,最小化

这里 独立地按噪声分布 抽取,抽样可重复; 是每个正词对的负样本数。全语料目标对所有实际产生的正词对累加,并反复重采样负词。上式是采样损失;把负项替换为对 的期望,就得到常见的期望目标。(Mikolov et al., 2013)

点积分数的一阶导数也能说明更新方向。若采样标签为 ,二分类损失对分数的导数是 。单独看这一项,梯度下降会提高正词对的分数、降低负词对的分数;参数被大量词对共享,实际某个点积不会保证每一步都单调变化。

实际训练先提取窗口词对并采样噪声,再查询两张向量表、计算损失,用随机梯度下降(SGD)等优化方法更新涉及的参数行。不断处理新的词对并重复遍历语料,便完成预训练;它不需要每次都更新词表中的所有向量。

为什么计算量能减少

朴素完整 Softmax 每个正词对需要处理约 个输出分数;维度为 时,其相关计算量为 。SGNS 只计算当前正词对和 个负词对,相关更新约为 。这比较的是单个正词对,不是整个训练的时间或内存。

两张词表的存储仍约为 。分词、提取窗口、抽样、访存和训练轮数也会影响实际耗时。SGNS 的代价降低伴随目标改变,不能将它说成“同一个 Softmax 概率的无损快速算法”。层次 Softmax、NCE 和 InfoNCE 的区别见 负采样与相关目标。

采样和预处理决定学到什么

常见噪声分布对词频作平滑。

是用于构造采样器的词频。分母把权重归一化为概率; 次幂相对直接按词频抽样,降低了高频词的相对优势。原论文采用这一选择,但它不是负采样的数学定义。

选择改变的训练信息
分词与词表哪些对象有独立参数,短语和罕见词怎样表示
窗口与距离权重什么算上下文,近邻与较远共现的贡献
高频词下采样哪些语料共现被保留;与抽取负词是两个步骤
与 哪些对照出现得多,数据与噪声的相对权重
维度与训练轮数表示容量与优化预算,不保证越大越好

原文曾报告小训练集使用 5–20 个负样本、大训练集可使用 2–5 个的经验。这是特定实验条件下的经验范围,不能直接作为所有任务的最优值。(Mikolov et al., 2013)

怎样使用预训练结果

训练先产生词向量,后续任务再决定怎样利用。例如把文本中的词向量汇总后交给分类器,或者用它初始化下游模型的输入表。可以冻结向量,也可以用任务训练集继续更新;应分别评价这两种设置。

评估前需要分清预训练语料、调参数据与最终测试数据,报告未登录词比例、语料领域、窗口、维度、噪声分布和负样本数。比较相似方法时,保持数据、预算与评价口径可比,而不是只看一张漂亮的二维图。

它学到的相似性有什么边界

SGNS 直接约束中心词与上下文向量的点积。相似上下文可能使词表示接近,但不能据此保证每个语义相近的词都互为近邻;反义词也可能共享上下文。

它通常为每个词学习静态表示。“吃苹果”和“苹果发布产品”中的“苹果”不会因为当前句子不同就自动换一个基础词向量。数据稀疏、领域变化和词表外的新词也需要单独处理;fastText提供了共享字符片段参数的一条路线。

至于“SGNS 等价于 PMI 矩阵分解”,应保留噪声分布、理想自由点积与低秩约束等条件。完整推导和反例见 PMI、SVD 与 SGNS。

返回 词向量与表示学习专题。需要比较其他机制时,继续读 GloVe 或 图随机游走嵌入。

参考文献

Levy, O., & Goldberg, Y. (2014). Neural Word Embedding as Implicit Matrix Factorization. Advances in Neural Information Processing Systems, 27. https://papers.neurips.cc/paper_files/paper/2014/hash/b78666971ceae55a8e87efb7cbfd9ad4-Abstract.html
Mikolov, T., Sutskever, I., Chen, K., Corrado, G., & Dean, J. (2013). Distributed Representations of Words and Phrases and their Compositionality. Advances in Neural Information Processing Systems, 26. https://papers.neurips.cc/paper_files/paper/2013/hash/9aa42b31882ec039965f3c4923ce901b-Abstract.html