转载

The Skip-Gram Model

The Skip-Gram Model

在许多自然语言处理任务,单词一般被表示成它们的TF-IDF值。TF-IDF虽然可以用来

衡量单词对文本的重要程度,但是并没有包含任何的语义信息。Word2Vec代表的是

一类将词转化为向量的神经网络模型, 词向量较好得保存了词的语义信息。实体识别、

文档分类、情感分析等自然语言处理任务,大多都用词向量作为特征,并取得了很

好的效果。下面我们介绍一下典型的Word2Vec模型, The Skip-Gram Model

模型的输入输出

输入是中心词的独热编码, 输出是中心词与附近词的相似度。

V是词表大小,N是嵌入向量长度, W V ? N W_{V*N} 就是我们所需要的所有词的嵌入表示

上面的解释可以你看得一片雾水。下面结合实际讲一讲。

God helps those who help themselves.

假设helps是中心词, windowsize为2(分别从左边、右边选两个词作为附近词),

num_skips为4(从窗口中选取多少个附近词作为输出)则我们可以得到

[helps, God], [helps, those], [helpss, who]这三组sample

前向传播

skip-gram神经网络如下

]

helps独热编码为[0,1,0,0,0,0], 经过前向传播,先与W相乘得到一个N为的向量(其实就是helps的嵌入表示)

再与W’相乘得到一个V维的向量(其实V与词表中各个词的相似度,或者称为共现概率)。假设输入是[helps,God]

我们找到helps与God的共现概率作为输出(其实相乘的时候只需要和W’中God对应的向量相乘即可,不需要与W’全部相乘)。

反向传播

反向传播的关键是定义损失函数,我们目的是要极大化helps与God的共现概率,所以我们定义损失函数为

输出的相反数,即共现概率的相反数,如果训练的时候是批量处理的话,共现概率相加。

参考

理解Word2Vec 之 Skip-Gram 模型 https://zhuanlan.zhihu.com/p/27234078

Word2Vec介绍:直观理解skip-gram模型 https://zhuanlan.zhihu.com/p/29305464

Hierarchical Softmax(层次Softmax) https://zhuanlan.zhihu.com/p/56139075

word2vec刘建平https://www.cnblogs.com/pinard/p/7160330.html

github实现

https://github.com/fanglanting/skip-gram-pytorch.git

https://github.com/Adoni/word2vec_pytorch.git

正文到此结束
本文目录