分布式词向量模型
1.连续词袋模型
1.1 连续词袋模型的概念
- CBOW模型全称为Continuous Bag-of-Words。CBOW是利用上下文信息来预测中心词。
- 给定一个句子:“Pineapples are spiked and yellow”。
- 中心词:“spiked”;上下文:“Pineapples, are, and, yellow”。
- 中心词所限定的语义就被传递到上下文的词向量中,其他带刺植物的向量表示就会靠近Pineapples。
1.2 连续词袋模模型的原理和计算过程
- 输入层:一个形状为C×V的one-hot张量,其中C代表上线文中词的个数,通常是一个偶数,V表示词表大小,该张量的每一行都是一个上下文词的one-hot向量表示,比如“Pineapples,are, and, yellow”。
- 隐藏层:输入张量和word embedding W进行矩阵乘法,就会得到一个形状为C×N的张量。综合考虑上下文中所有词的信息去预测中心词,因此将上下文中C个词相加得一个1×N的向量,是整个上下文的一个隐含表示。
- 输出层:将隐藏层得到的1×N的向量乘以该N×V的参数张量,得到了一个形状为1×V的向量。最终,1×V的向量代表了使用上下文去预测中心词,再经过softmax函数的归一化,即得到了对中心词的预测概率。
2. Skip-Gram模型
2.1 Skip-Gram的概念和原理
- Skip-Gram模型是利用中心词预测上下文。
- 给定一个句子:“Pineapples are spiked and yellow”。
- 中心词:“spiked”;上下文:“Pineapples, are, and, yellow”。
- 上下文限定的语义被传入中心词的表示中。因此,spiked, prickly等词的向量表示就会逐渐越来越相似。
Skip-Gram的计算过程
- 输入层:接收一个one-hot张量 V ∈ R 1 × v o c a b s i z e V∈R^{1×vocab_size} V∈R1×vocabsize作为网络的输入,里面存储着当前句子中心词的one-hot表示。
- 隐藏层:将张量V乘以一个word embedding张量 W 1 ∈ R v o c a b s i z e × e m b e d s i z e W_1∈R^{vocab_size×embed_size} W1∈Rvocabsize×embedsize,并把结果作为隐藏层的输出,得到一个形状为的张量 R 1 × ∗ v o c a b s i z e ∗ R^{1×*vocab_size*} R1×∗vocabsize∗,里面存储着当前句子中心词的词向量。
- 输出层:将隐藏层的结果乘以另一个wordembedding张量 W 2 ∈ R e m b e d s i z e × v o c a b s i z e W_2∈R ^{embed_size×vocab_size} W2∈Rembedsize×vocabsize,得到一个形状为 R 1 × v o c a b s i z e R^{1×vocab_size} R1×vocabsize的张量。这个张量经过softmax变换后,就得到了使用当前中心词对上下文的预测结果。
3 CBOW&Skip-Gram的训练过程
3.1 CBOW的训练过程
-
在实际操作中,使用一个滑动窗口(一般情况下,长度是奇数),从左到右开始扫描当前句子。
### 3.2 Skip-Gram的训练过程 -
同CBOW模型相同,在实际操作中,同样使用一个滑动窗口(一般情况下,长度是奇数),从左到右开始扫描当前句子
-
CBOW和Skip-Gram的特点
- 一般来说,CBOW比Skip-Gram训练速度快,训练过程更加稳定,原因是CBOW使用上下文平均的方式进行训练,每个训练step会见到更多样本。
- 而在生僻字(出现频率低的字)处理上,Skip-Gram比CBOW效果更好,原因是Skip-Gram不会刻意回避生僻字。