之前文章介绍了skip-gram的原理,这篇文章给出模型的实现细节以及pytorch和tensorflow的实现。
假如用余弦相似度来计算两个词的one-hot编码得到0,即不能编码词之间的相似性,所以有了word2vec的方法,包括skip-gram和CBOW。
接前文,假如我们拥有10000个单词的词汇表,想嵌入300维的词向量,那么我们的输入-隐层权重矩阵和隐层-输出层的权重矩阵都会有 10000 x 300 = 300万个权重,在如此庞大的神经网络中进行梯度下降是相当慢的。更糟糕的是,你需要大量的训练数据来调整这些权重并且避免过拟合。百万数量级的权重矩阵和亿万数量级的训练样本意味着训练这个模型将会是个灾难。1 所以在具体实践上有一些计算技巧。
,即最大化以下概率
用softmax来计算
其中
在skip-gram实际算法中使用多种策略来减少模型的资源使用(内存)以及提高词向量表征质量2
其中t为设定的阈值,
其中
Word2vec skip-gram pytorch4
Word2vec skip-gram tensorflow5