请简述word2vec中CBOW和Skip-Gram两个模型的具体内涵,并给出相应的数学表达式。
时间: 2025-06-24 07:44:08 AIGC 浏览: 27
### Word2Vec中的CBOW和Skip-Gram模型概述
Word2Vec是一种用于生成词向量的技术,其核心目标是将词语映射到连续的低维空间中表示。它主要包括两种不同的神经网络架构:CBOW(Continuous Bag of Words)和Skip-Gram。
---
### CBOW模型的内涵及数学表达式
#### 含义
CBOW模型基于上下文预测目标单词的概率分布。换句话说,给定一组上下文单词 \(C\),该模型试图估计目标单词 \(w_t\) 出现的可能性[^1]。
#### 数学表达式
设输入为窗口内的上下文单词集合 \(\{w_{t-m}, w_{t-(m-1)}, ..., w_{t+(m-1)}, w_{t+m}\} \setminus w_t\) (其中\(m\)为窗口大小),则CBOW的目标函数可以形式化如下:
\[
P(w_t | C) = \frac{\exp(v'_{w_t}^\top \cdot v_C)}{\sum_{w \in V} \exp(v'_w^\top \cdot v_C)}
\]
这里,
- \(v_C = \frac{1}{|C|} \sum_{c \in C} v_c\) 表示上下文中所有单词向量的平均值;
- \(v_w'\) 和 \(v_w\) 分别为目标单词和上下文单词对应的权重向量;
- \(V\) 是词汇表中的所有单词集合。
为了优化这个概率分布,我们最小化负对数似然损失函数:
\[
J_\text{CBOW} = -\log P(w_t | C)
\]
通过梯度下降法不断调整权重矩阵,从而得到最优的词向量表示[^2]。
---
### Skip-Gram模型的内涵及数学表达式
#### 含义
与CBOW相反,Skip-Gram模型尝试根据单个目标单词 \(w_t\) 来预测周围的上下文单词 \(C\)。它的目的是最大化联合概率 \(P(C | w_t)\)[^3]。
#### 数学表达式
对于某个特定的上下文单词 \(w_j \in C\),条件概率被定义为:
\[
P(w_j | w_t) = \frac{\exp(v'_{w_j}^\top \cdot v_{w_t})}{\sum_{w \in V} \exp(v'_w^\top \cdot v_{w_t})}
\]
整体目标是对所有可能的上下文单词求乘积后再取对数,形成最终的损失函数:
\[
J_\text{Skip-Gram} = -\sum_{j=-m, j \neq 0}^{m} \log P(w_{t+j} | w_t)
\]
同样地,使用随机梯度下降算法迭代更新参数直至收敛[^4]。
---
### 实际应用中的简化策略
由于直接计算分母项涉及整个词汇表上的累加操作效率较低,实践中常引入近似技术加速训练过程,比如负采样 (Negative Sampling) 或层次Softmax (Hierarchical Softmax)[^5]。
以下是Python实现的一个简单例子展示如何加载预训练好的GloVe嵌入作为对比参考:
```python
from gensim.models import KeyedVectors
# 加载预先训练的Google News word2vec模型
model_path = 'path/to/GoogleNews-vectors-negative300.bin'
word_vectors = KeyedVectors.load_word2vec_format(model_path, binary=True)
# 查找相似词
similar_words = word_vectors.most_similar('king', topn=5)
print(similar_words)
```
---
###
阅读全文
相关推荐















