Distributed Representations of Sentences and Documents 该论文提出了一种训练段落向量的方法。
(一) 提出动机
已经有比较优秀的模型可以很好的生成词向量,但是对于生成句子或者段落的向量,目前还没有比较好将单词向量变为句子向量的方法,常见的方法以及缺点如下:
- bag of words: 缺乏顺序性和语义性
- average word vectors:缺乏单词顺序性
- tfidf-weighting word vectors:缺乏单词顺序性
- LDA(待研究)
所以需要一种有效的方法来生成段落或者句子向量。
(二)核心思想
对于wod2vec模型,示意图如下
通过上下文来预测缺失值‘on’,在给定上下文后,通过更新参数使得出现缺失值的可能性最大,要最大化的函数如下,其中表示单词
最终通过softmax的形式将输出转化为多分类问题:
模型的输出可以写成:
其中都是softmax函数的参数,为词向量矩阵,表示把上下文单词融合到一起的方法,可以是拼接也可以是求平均。
训练段落向量思想跟word2vec训练词向量的思想其实差不多,首先构建一个共享的段落向量lookup矩阵,该矩阵中的维度m*n,m是段落个数,n是段落向量的维度。核心就是通过误差反向传播和梯度下降来更新该矩阵中的参数,方式类似于word2vec,即利用词向量和段落向量去预测上下文,来产生误差和梯度。
(三)模型训练
doc2vec模型中需要训练得到的主要有词向量和段落向量,需要训练个参数(不包括softmax参数),
- :词汇表数目
- :段落数目
- :词向量维度
- :段落向量维度
训练方式主要有如下两种
(1)PV-DM(Distributed Memory Model of Paragraph Vectors)
如上图所示上,该方法类似word2vec中的CBOW,通过上下文预测缺失值,通过上下文的词向量以及当前段落向量通过某种方式融合到一起,在经过softmax层,得到词汇表中单词的预测结果,再通过label计算loss反向传播更新梯度。最终既可以得到词向量又可以得到段落向量。
(2)PV-DBOW(Distributed Bag of Words version of Paragraph Vector)
PV-DBOW类似于word2vec中的n-gram模型,用当前段落的词预测上下文中的词,注意下图中最上面的部分是分类器(用softmax加交叉熵产生损失函数)而不是单词对应的向量(我之前还在想这些词一直作为label,词向量一直不动啊)
(四)模型预测
对于一个新的段落,在固定单词向量和softmax参数和时,对当前向量进行初始化,然后利上述两种方法更新段落向量即可。
在论文中,作者推荐将PV-DM和PV-DBOW产生的向量进行拼接得到最后使用的段落向量。