Skip-Gram
前一篇,我们学习了什么是 CBOW,今天来看 Skip-Gram,它是 word2vec 的另一种训练思路。
Skip-Gram 和 CBOW 的思路是相反的,CBOW 是由上下文得到中心词,而 Skip-Gram 是由中心词预测上下文。
所以 Skip-Gram 的模型输入是一个中心词的词向量,输出是中心词的上下文向量。不过它并不是对 CBOW 模型的简单的颠倒,而是用一个中心词来预测窗口内除它以外的每个词,虽然从上面两个的对比图看来,Skip-Gram 的输入是一个词,输出是多个词,但其实在代码中构造训练数据时,输出也是一个词:
它的学习过程就像我们在讲 CBOW 的前向传播时输入是一个单词的那个流程一样,接下来我们看看 Skip-Gram 的前向计算和反向传播是怎样的,大家在看这部分推导时可以对比 CBOW 的内容。
前向计算
和 CBOW 中一样,模型两个核心矩阵 W 和 W‘,维度如下:
W 是 embedding 矩阵,维度是:
vocab_size * embe