Udacity——Word2Vec原理笔记二——Skip-Gram模型

大概了解了 Word embedding,我们就要步入Word2Vec的正题了,这里我主要参考了两个地方的资源。首先仍是Udacity Deeplearning的纳米课程,然后就是一个非常不错的英文博客,有兴趣的童鞋可以自行阅读,补充一句,这个博客也是课程中推荐的。

Word2Vec

Word2Vec是一个寻找词汇对应的语义向量的高效方式,这个向量会包含着词汇的语义信息。比如"black","white"这些词会出现在相似的语言环境中,所以所代表的向量也就彼此临近。word2vec主要有两种结构,分别是CBOW和Skip-gram。


Udacity——Word2Vec原理笔记二——Skip-Gram模型_第1张图片
两种 Word2Vec 结构

在这里我们将用skip-gram结构是因为他的表现会相对出色。我们将传递一个词汇到网络中,预测其在文本中周围会出现的词。比如我们输入一个单词"Soviet",那么我们输出"Russia"的可能性就远大于"watermelon"这种无关词汇。我们训练网络的方式是通过传递句子中的单词对,具体的例子如图所示。


Udacity——Word2Vec原理笔记二——Skip-Gram模型_第2张图片
训练数据获取

在这里,我们设定了一个窗,窗的尺寸就是我们关注输入单词周围的范围,比如图中window size = 2,那么我们就关心输入前后共4个单词这样一个范围。我们训练的网络不断学习单词对,来调整网络层参数。比如训练过程中("Soviet", "Russia")出现的频率一定高于("Soviet", "Sasquatch"),所以当训练完成后,输入"Soviet"时,"Russia"输出的概率将远高于"Sasquatch"。

模型

在这里我们仍采用独热编码作为输入向量,隐藏层的神经元不使用激活函数,但是输出神经元使用softmax回归函数。我们最终得到的训练结果是概率分布向量。


Udacity——Word2Vec原理笔记二——Skip-Gram模型_第3张图片
skip-gram原理图

隐藏层

根据Google发布的模型,我们将隐藏层的维度设置为(10000,300);也就是说,这个模型最多识别10000个指定词汇,神经元的个数为300个。


Udacity——Word2Vec原理笔记二——Skip-Gram模型_第4张图片
矩阵 查找表

输出层

这里要简单说下为什么输出层用softmax回归函数,最主要的原因就是其生成的概率分布向量每一个元素一定在0和1之间,并且所有元素的和为1。输出层的维度为(10000,300)这样才能保证我们最终输出的结果向量是10000个词汇的一维概率分布。


Udacity——Word2Vec原理笔记二——Skip-Gram模型_第5张图片
输出层局部解释

总体来说,Skip-Gram模型并不难理解,但隐藏层和输出层的权重的参数量均达到了3百万,如果每训练一个词对要更新两个网络层所有参数,那么训练速度会很慢,同时又由于参数过多,很容易因为没有足够样本引起过拟合现象,所以我们需要新的方法去训练网络。

你可能感兴趣的:(Udacity——Word2Vec原理笔记二——Skip-Gram模型)