word2vec模型(2) - 基本模型

上一篇文章介绍了word2vec模型的背景,本文将介绍模型细节。word2vec有两种结构:skip-gram和CBOW,本文将主要介绍skip-gram。

回顾一下word2vec的要解决的主要问题是,把词典中的词表示成一个词向量(word embedding),这个向量是低维的、稠密的。为了得到这个词向量,word2vec采用一个简单的浅层神经网络来进行训练。回顾skip-gram模型的结构图:


word2vec模型(2) - 基本模型_第1张图片

(1) 训练目标
skip-gram通过中心词来推断临近词的出现概率,所以模型的训练目标是提高预测的准确率。需要记住的是,一旦模型训练完成,有用的只是隐藏层的矩阵(也叫lookup-table),用作概率预测的输出层将不再使用。

(2) 训练集
在训练的语料中,对于每个中心词,设置一个window size(如下图中设置为2),来限定临近词的选择范围。从限定的临近词中,随机选择其中一个作为要预测的词语,于是得到训练词对(中心词, 临近词),分别用于模型的输入、输出。对词进行one-hot编码之后,得到向量(x, y)放入训练集合。

word2vec模型(2) - 基本模型_第2张图片

(3) forward pass过程
word2vec移除了激活层,采用了两次线性变换(U, V)和一次softmax的过程,如下图。
假设x, y表示one-hot输入向量,且x,y中1的索引分别为c, o,则forward pass的过程为:

  • 第一次线性变换: vc = Vx
  • 第二次线性变换: Uvc = (uwT)Tvc = (uwTvc)T
  • 求softmax:


    word2vec模型(2) - 基本模型_第3张图片
  • 求cross-entropy loss
    L = sum{ log p(o|c) }|{(x,y)} + 正则化项

(注: 另一种更简单的理解角度为,每个词对应两个向量: 作为中心词时vc和作为临近词时uo. 而训练的目标是求出每个词的u和v向量)

word2vec模型(2) - 基本模型_第4张图片

(4) backworad pass过程
采用SGD进行参数更新,由链式法则可以进行求导。

  • 对中心词向量vc进行求导:
    word2vec模型(2) - 基本模型_第5张图片
  • 对临近词uo进行求导:
    word2vec模型(2) - 基本模型_第6张图片

这是一个神经网络标准的训练过程,参照一般的向量化和矩阵化表示可以简化公式(有空再补充)。

(5) 训练结果
上述训练得到的vc便是索引为c的词的词向量。V称为lookup-table。
这是skip-gram的基本模型,它依然存在着参数空间巨大的问题,即U和V的大小与词典大小成正比。

下一篇将介绍word2vec的一些优化方案。

参考资料
[1] word2vec第一篇论文: Efficient Estimation of Word Representations in Vector Space
[2] word2vec第二篇论文:Distributed Representations of Words and Phrases and their Compositionality
[3] http://www.cnblogs.com/iloveai/p/cs224d-lecture2-note.html
[4] stanford CS224d 课程讲义:
http://cs224d.stanford.edu/syllabus.html

你可能感兴趣的:(word2vec模型(2) - 基本模型)