最近读了《word2vec Parameter Learning Explained》,是一片很好的讲解word2vec的论文。帮助我更加直观的理解了词向量的生成以及层次softmax和负采样的思想,对以下问题有了更深刻的认识:
- word2vec为什么可以将将语义信息编码进词向量中,比如语义相近的词对应词向量在高维空间中更加接近
- CBOW和Skip-Gram的区别和共同点
- 为什么要引入层次softmax和负采样以及它们能够优化训练的原因
1 Continuous Bag-of-Word Model
1.1 One-word context
CBOW的思想是给定上下文去预测中心词,先假设最上下文只有一个词的情况。
x是输入词wI对应的onehot向量,WVXN是一个VxN的矩阵,W'NxV是一个NxV的矩阵,V为词表的大小,N是词向量的维度,其中W的每个行向量就是word2vec要去学习的词向量。
由于x是onehot的向量,h实际上就是wI对应的词向量
$$ \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right] $$
$$ \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right] $$