Word2Vec中的Skip-gram模型原理与优化
字数 1534 2025-11-06 12:41:12

Word2Vec中的Skip-gram模型原理与优化

题目描述
Skip-gram是Word2Vec的一种核心模型,用于学习词向量(Word Embeddings)。其目标是通过中心词预测上下文词,从而在向量空间中捕捉词汇的语义和语法关系。例如,给定中心词“人工智能”,模型应能预测出“技术”、“深度学习”等上下文词。Skip-gram需解决的关键问题包括:如何定义预测任务、设计损失函数,以及通过负采样(Negative Sampling)等优化方法降低计算复杂度。

逐步讲解

  1. 模型基本思想

    • 输入与输出:Skip-gram以中心词(如“猫”)的one-hot编码作为输入,通过神经网络预测其上下文窗口内(如前后2个词)的所有词。
    • 核心假设:语义相似的词会出现在相似的上下文环境中。模型通过训练使相似词的向量在空间中的距离更近。
    • 示例:句子“猫趴在沙发上睡觉”,窗口大小为2时,中心词“趴在”的上下文为{猫, 沙发上, 睡觉}。
  2. 模型结构分解

    • 输入层:一个维度为V的one-hot向量(V是词表大小)。例如,词表为[“猫”, “趴”, “在”, “沙发”, “睡觉”]时,“在”的one-hot向量为[0,0,1,0,0]。
    • 隐藏层:无激活函数的全连接层,权重矩阵W₁(维度V×d,d是词向量维度)。输入词与W₁相乘后直接得到其d维词向量。
    • 输出层:另一个权重矩阵W₂(维度d×V),将隐藏层输出转换为V维分数,再通过Softmax计算每个词作为上下文词的概率。
    • 数学表达
      • 中心词c的向量:v_c = W₁^T · one_hot(c)
      • 上下文词o的分数:score_o = v_c^T · W₂[:, o]
      • 概率:P(o|c) = exp(score_o) / ∑_{w=1}^V exp(score_w)
  3. 损失函数与训练挑战

    • 损失函数:使用负对数似然损失。对于中心词c和上下文词o,损失为:
      J = -log P(o|c)
    • 计算瓶颈:Softmax的分母需遍历整个词表(∑exp(score_w)),当V很大时(如百万级),计算成本极高。
  4. 优化方法:负采样(Negative Sampling)

    • 思想:将多分类问题转化为二分类。对于每个真实上下文词(正样本),随机采样K个非上下文词(负样本),训练模型区分正负样本。
    • 新损失函数
      J = -log σ(v_o^T v_c) - ∑{k=1}^K log σ(-v{n_k}^T v_c)
      其中σ是Sigmoid函数,v_o是正样本词向量,v_{n_k}是负样本词向量。
    • 负样本采样策略:根据词频的3/4次方采样,避免高频词主导训练。例如,“的”被采样的概率高于“人工智能”。
    • 优势:将计算复杂度从O(V)降至O(K+1),K通常取5-20。
  5. 训练流程示例

    • 输入中心词“趴在”,真实上下文词为“猫”。
    • 正样本:(“趴在”, “猫”) → 标签1。
    • 负样本:随机采样K=2个词(如“吃饭”、“运行”)→ 标签0。
    • 模型分别计算三个样本的Sigmoid概率,通过梯度下降更新v_c、v_o和负样本词的向量。
  6. 关键技巧与扩展

    • 高频词下采样:对“的”、“是”等高频词,以一定概率丢弃,平衡常见词和罕见词的训练次数。
    • 向量结果:训练完成后,W₁的每一行即为对应词的词向量,语义相似的词(如“猫”和“狗”)向量余弦相似度较高。

总结
Skip-gram通过局部上下文预测任务学习词向量,负采样等技术解决了大规模词表下的计算效率问题,成为词嵌入领域的经典方法。其核心在于用简单二分类近似复杂Softmax,同时保留词汇的分布式语义信息。

Word2Vec中的Skip-gram模型原理与优化 题目描述 Skip-gram是Word2Vec的一种核心模型,用于学习词向量(Word Embeddings)。其目标是通过中心词预测上下文词,从而在向量空间中捕捉词汇的语义和语法关系。例如,给定中心词“人工智能”,模型应能预测出“技术”、“深度学习”等上下文词。Skip-gram需解决的关键问题包括:如何定义预测任务、设计损失函数,以及通过负采样(Negative Sampling)等优化方法降低计算复杂度。 逐步讲解 模型基本思想 输入与输出 :Skip-gram以中心词(如“猫”)的one-hot编码作为输入,通过神经网络预测其上下文窗口内(如前后2个词)的所有词。 核心假设 :语义相似的词会出现在相似的上下文环境中。模型通过训练使相似词的向量在空间中的距离更近。 示例 :句子“猫趴在沙发上睡觉”,窗口大小为2时,中心词“趴在”的上下文为{猫, 沙发上, 睡觉}。 模型结构分解 输入层 :一个维度为V的one-hot向量(V是词表大小)。例如,词表为[ “猫”, “趴”, “在”, “沙发”, “睡觉”]时,“在”的one-hot向量为[ 0,0,1,0,0 ]。 隐藏层 :无激活函数的全连接层,权重矩阵W₁(维度V×d,d是词向量维度)。输入词与W₁相乘后直接得到其d维词向量。 输出层 :另一个权重矩阵W₂(维度d×V),将隐藏层输出转换为V维分数,再通过Softmax计算每个词作为上下文词的概率。 数学表达 : 中心词c的向量: v_ c = W₁^T · one_ hot(c) 上下文词o的分数: score_ o = v_ c^T · W₂[ :, o] 概率: P(o|c) = exp(score_ o) / ∑_ {w=1}^V exp(score_ w) 损失函数与训练挑战 损失函数 :使用负对数似然损失。对于中心词c和上下文词o,损失为: J = -log P(o|c) 计算瓶颈 :Softmax的分母需遍历整个词表(∑exp(score_ w)),当V很大时(如百万级),计算成本极高。 优化方法:负采样(Negative Sampling) 思想 :将多分类问题转化为二分类。对于每个真实上下文词(正样本),随机采样K个非上下文词(负样本),训练模型区分正负样本。 新损失函数 : J = -log σ(v_ o^T v_ c) - ∑ {k=1}^K log σ(-v {n_ k}^T v_ c) 其中σ是Sigmoid函数,v_ o是正样本词向量,v_ {n_ k}是负样本词向量。 负样本采样策略 :根据词频的3/4次方采样,避免高频词主导训练。例如,“的”被采样的概率高于“人工智能”。 优势 :将计算复杂度从O(V)降至O(K+1),K通常取5-20。 训练流程示例 输入中心词“趴在”,真实上下文词为“猫”。 正样本:(“趴在”, “猫”) → 标签1。 负样本:随机采样K=2个词(如“吃饭”、“运行”)→ 标签0。 模型分别计算三个样本的Sigmoid概率,通过梯度下降更新v_ c、v_ o和负样本词的向量。 关键技巧与扩展 高频词下采样 :对“的”、“是”等高频词,以一定概率丢弃,平衡常见词和罕见词的训练次数。 向量结果 :训练完成后,W₁的每一行即为对应词的词向量,语义相似的词(如“猫”和“狗”)向量余弦相似度较高。 总结 Skip-gram通过局部上下文预测任务学习词向量,负采样等技术解决了大规模词表下的计算效率问题,成为词嵌入领域的经典方法。其核心在于用简单二分类近似复杂Softmax,同时保留词汇的分布式语义信息。