对word2vec不了解的可以先看看这篇Word2vec入门
网上很多word2vec的前向传播和反向传播给出的推导都不是很好理解,而且对于不太同种的实现方式也没有具体说明,所以一直想把这部分的坑填上,对于skip的模型解释的也很模糊,本文以一个单词输入为引子,主要推导这部分的正向传播和反向传播,然后介绍skip-model和CBOW。
ONE-WORD-MODEL
在说word2vec模型之前,先谈一谈ONE-WORD-MODEL,这个模型使用率其实很低,先说这个是为了更好的理解word2vec的推导过程。这个模型是输入一个单词,然后输出词库中和它最接近的单词。
为了方便解释,我们约定V代表着单词库中单词的数量,N代表隐藏层数量也就是一个单词embedding_size,代表用几个离散值来表示这个单词。简化为V=4,N=5,见下图:
这个模型一共有三个层,输入层,隐藏层,输出层,两个权重分别W1,W2,在这里W2其实就是W1的转置,输入为一个one-hot形式,比如(1,0,0,0)输出也是一个one-hot形式,表示和输入最接近的词。
在开始介绍模型计算之前,先要想明白一件事情,这是一个监督学习网络,也就是我们有正确label的真实值记为Y_true