什么是Skip‑gram

Skip‑gram 模型概述

Skip‑gram 是 Word2Vec 系列模型之一,用于学习词语的分布式向量词向量)。它的核心思想是:通过预测上下文词来学习中心词的向量表示。与另一种 Word2Vec 结构 CBOWContinuous Bag‑of‑Words)相反,Skip‑gram 以单个词为输入,预测其周围的多个上下文词。


1. 基本原理

  1. 输入‑输出形式
    • 输入:句子中的一个目标词(center word)。
    • 输出:该词在固定窗口大小 (如 2、5)内的上下文词集合 。
  2. 目标函数
    对每个目标词 ,模型最大化它与上下文词的共现概率
  3. 概率建模
    采用 softmax 计算条件概率。

2. 训练技巧

2.1 负采样Negative Sampling

直接计算完整的 softmax 代价极高(需要遍历整个词表)。负采样通过 只对正样本和少量负样本 进行梯度更新,极大提升效率。目标函数改写为二分类交叉熵

2.2 层次 Softmax(Hierarchical Softmax)

另一种加速方式是构建 霍夫曼树(Huffman tree),把词表组织成二叉树,利用树的路径长度来近似 softmax。常用于词表极大时。

2.3 子采样(Sub‑sampling)

高频词(如“的”“是”)对模型贡献小且容易导致噪声。通过概率方式 随机丢弃 高频词,提升训练效率并改善词向量质量。


3. 模型结构

组件 说明
输入层 one‑hot 向量(维度 = 词表大小)
投影层 权重矩阵  将 one‑hot 映射到低维稠密向量(词向量)
输出层 另一个权重矩阵  用于计算上下文词的得分(或负采样的二分类)
损失函数 负采样的二元交叉熵或层次 softmax 的对数似然

4. 关键特性与优势

  1. 捕捉语义相似性
    词向量空间中,语义相近的词会聚在一起,例如 “king – man + woman ≈ queen”。
  2. 高效训练
    负采样和子采样让模型在大规模语料(数十亿词)上也能在数小时内完成训练。
  3. 可迁移性
    训练得到的词向量可直接用于文本分类、情感分析机器翻译等下游任务。
  4. 对稀疏词的鲁棒性
    通过共享投影矩阵,稀有词也能得到有意义的向量(尤其在大语料下)。

5. 常见变体与扩展

变体 主要改进点
Skip‑gram with Negative Sampling (SGNS) 采用负采样,是最常用的实现方式。
Continuous Bag‑of‑Words (CBOW) 与 Skip‑gram 相反,使用上下文预测中心词,训练更快但对稀有词表现稍差。
FastText 在 Skip‑gram 基础上加入 字符 n‑gram,能够更好处理未登录词(OOV)。
GloVe 基于全局共现矩阵的矩阵分解方法,兼具统计信息与局部上下文。

6. 实际使用步骤(概览)

  1. 准备语料:清洗、分词、去除停用词(可选)。
  2. 构建词表:设定最小词频阈值,生成词到索引的映射。
  3. 设置超参数
    • 向量维度(如 100、200、300)
    • 窗口大小 (常 5)
    • 负样本数 (常 5~15)
    • 学习率、迭代次数(epoch)
  4. 训练模型:使用开源实现(如 Gensim、TensorFlowPyTorch)进行迭代更新。
  5. 保存词向量:得到每个词的稠密向量,可用于后续任务。

7. 适用场景示例

  • 文本相似度计算:通过余弦相似度比较句子或文档。
  • 词义消歧:利用向量聚类区分多义词的不同含义。
  • 情感分析:将词向量作为特征输入到分类模型。
  • 信息检索:基于向量空间检索相似文档。

小结

Skip‑gram 是一种通过 预测上下文词 来学习词向量的模型,凭借负采样等技巧实现了在大规模语料上的高效训练。它能够把词语映射到低维稠密空间,使得语义相似的词在向量上距离更近,广泛用于自然语言处理的各种下游任务。

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!