Skip‑gram 模型概述
Skip‑gram 是 Word2Vec 系列模型之一,用于学习词语的分布式向量(词向量)。它的核心思想是:通过预测上下文词来学习中心词的向量表示。与另一种 Word2Vec 结构 CBOW(Continuous Bag‑of‑Words)相反,Skip‑gram 以单个词为输入,预测其周围的多个上下文词。
1. 基本原理
- 输入‑输出形式
- 输入:句子中的一个目标词(center word)。
- 输出:该词在固定窗口大小 (如 2、5)内的上下文词集合 。
- 目标函数
对每个目标词 ,模型最大化它与上下文词的共现概率。 - 概率建模
采用 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. 关键特性与优势
- 捕捉语义相似性
词向量空间中,语义相近的词会聚在一起,例如 “king – man + woman ≈ queen”。 - 高效训练
负采样和子采样让模型在大规模语料(数十亿词)上也能在数小时内完成训练。 - 可迁移性
训练得到的词向量可直接用于文本分类、情感分析、机器翻译等下游任务。 - 对稀疏词的鲁棒性
通过共享投影矩阵,稀有词也能得到有意义的向量(尤其在大语料下)。
5. 常见变体与扩展
变体 | 主要改进点 |
---|---|
Skip‑gram with Negative Sampling (SGNS) | 采用负采样,是最常用的实现方式。 |
Continuous Bag‑of‑Words (CBOW) | 与 Skip‑gram 相反,使用上下文预测中心词,训练更快但对稀有词表现稍差。 |
FastText | 在 Skip‑gram 基础上加入 字符 n‑gram,能够更好处理未登录词(OOV)。 |
GloVe | 基于全局共现矩阵的矩阵分解方法,兼具统计信息与局部上下文。 |
6. 实际使用步骤(概览)
- 准备语料:清洗、分词、去除停用词(可选)。
- 构建词表:设定最小词频阈值,生成词到索引的映射。
- 设置超参数:
- 向量维度(如 100、200、300)
- 窗口大小 (常 5)
- 负样本数 (常 5~15)
- 学习率、迭代次数(epoch)
- 训练模型:使用开源实现(如 Gensim、TensorFlow、PyTorch)进行迭代更新。
- 保存词向量:得到每个词的稠密向量,可用于后续任务。
7. 适用场景示例
小结
Skip‑gram 是一种通过 预测上下文词 来学习词向量的模型,凭借负采样等技巧实现了在大规模语料上的高效训练。它能够把词语映射到低维稠密空间,使得语义相似的词在向量上距离更近,广泛用于自然语言处理的各种下游任务。
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!