Word2Vec

Word2Vec

Word2Vec有两种形式,一种是Skip-gram,另一种是CBOW。

  • Skip-gram:已知中心词 \(w_c\),预测上下文词 \(w_o\)
  • CBOW:已知上下文词 \(C=\{w_{c−m},…,w_{c−1},w_{c+1},…,w_{c+m}\}\),预测中心词 \(w_c\)

1. Softmax 损失函数

公式:

\[L_{word2vec} = -\frac{1}{|B|} \sum_{(w_i, C_i) \in B} \log \frac{\exp(w_i \cdot C_i)}{\sum_{j \in V} \exp(w_i \cdot C_j)} \]

含义

  • 目标:最大化中心词 \(w_i\) 和上下文词 \(C_i\) 的相似性,同时最小化中心词 \(w_i\) 与其他非上下文词的相似性。
  • 问题:每次计算梯度时,都需要遍历整个词汇表 \(V\),计算所有词的概率。这在大规模语料中计算量非常大,效率较低。

2. 负采样(Negative Sampling,NEG)

为了解决 Softmax 的计算问题,Word2Vec 引入了负采样(NEG)方法,通过对部分负样本进行优化,避免计算整个词汇表 \(V\)

公式:

\[L_{word2vec} = \frac{1}{|B|} \sum_{(w_i, C_i) \in B} \left[ \log(1 + \exp(-w_i \cdot C_i)) + \sum_{j \in S_i} \log(1 + \exp(w_i \cdot C_j)) \right] \]

含义

  • 正样本:使用 \(w_i\)\(C_i\)(即真实的上下文词)。
  • 负样本:从词汇表中随机采样一部分非上下文词(集合 \(S_i\))作为负样本。
  • 目的:让中心词 \(w_i\) 和真实上下文 \(C_i\) 的相似性最大化,同时最小化 \(w_i\) 与负样本的相似性。
  • 效率提升:负采样只需要计算一小部分负样本,大幅减少了计算复杂度。
  • \(B\):代表一个Batch,其中一条样本(\(w_i\), \(c_i\))由一个中心词 \(w_i\) 和其上下文 \(C_i\) 组成

优点

  • 显著降低了计算复杂度,特别是当词汇表很大时。
  • 性能通常足够好,尤其是在实际应用中。

条件概率计算

item2vec

posted @ 2024-11-24 08:33  ForHHeart  阅读(49)  评论(0)    收藏  举报