【论文阅读】Distributed Representation of Sentence and Document

Abstract

传统的单词模型(bag-of-words)在实际应用中有一些缺点:

  1. They lose the ordering of the words,丢失了单词的顺序。
  2. They ignore semantics of the words,忽略了单词的语义。

因此本文提出了一种新的模型(Paragraph Vector),解决了上述的一些问题,带来了更好的效果。

Introduction

目前在很多的Text classification和clustering的应用中,使用最多的是bag-of-word模型,因为其表示起来简单,并且在实际应用中也表现了不错的准确度和有效性。

所谓bag-of-word模型,就是对一个单词进行独热编码,如果词典中总共有10000个词,某个词在词典中的索引比如是345,那么该单词的表示成一个10000维的向量,该向量第345位是1,其余均是0。

bag-of-word模型的表示方式注定了其会丢失单词与单词之间的联系,它不能反应两个词在语义上的联系,所以可能会出现两个词在语义上相近或相远,但是在模型中却有着一样的距离的现象。

本文提出的Paragraph Vector(PV) framework,可以实现从可变长度的句子或段落中学习出该句子或段落的特征。

所学出来的PV有许多用处,可以在给定上下文和一些词序列的情况下,预测出下一个词是什么。

本文的PV思想是受词向量(word representation)的工作启发得到的,在词向量学习的过程中。在词向量的学习的工作中,each word is represented by a vector which is concatenated or averaged with other word vector in a context。

本文在Word Vector(WV)的基础上,将词扩展到句子以及段落,形成了PV,而从WV到PV一般有两种途径:

  1. Using a weighted average of all the words in the documents.这是一种相对简单的方式,将WV加权平均得到PV,但是这样容易失去单词在上下文中的顺序。
  2. Combining the word vector in an order given by a parse tree of a sentence,这种方式相对复杂,我的理解是将句子中的单词按频率构建成一棵树的形式保存。

PV可以对变长输入序列进行特征提取。后面的结果会证明用PV进行句子或段落的特征提取是可以达到很好的效果的。

Algorithm

Learning Vector Representation of Words

这部分介绍了传统的形成词向量的方法。它要完成的工作是在给定上下文的某些单词后,预测出下一个单词。

框架的原理就不翻译了,直接放上原文:

In this framework, every word is mapped to a unique vector, represented by a column in a matrix W . The column is indexed by position of the word in the vocabulary. The concatenation or sum of the vectors is then used as features for prediction of the next word in a sentence.

【论文阅读】Distributed Representation of Sentence and Document

大致思想就是将单词映射成向量,然后通过结合或者取平均的方法,将得出的结果送入一个softmax分类器,用于预测下一个单词。在实际操作中,最后一个softmax算出的是词典中的每个词的概率,当词典数量特别大的时候运算成本很高,因此一般使用一个分级的softmax,构建一颗二叉哈弗曼树,每个叶子节点为词典中的单词,每个内部节点为一个二分类的分类器,通过多次进行二分类,得出每个单词的概率。

该框架的训练方法用的是SGD(stochastic gradient decent),使用BP(backpropagation)进行梯度计算,更新模型参数。训练结束后,所得到的模型达到的效果就是能体现两个词的语义距离,如果两个词的语义相近,那么两个词向量的距离就近,反之亦然。

词向量在自然语言处理方面的应用范围很广。

Paragraph Vector:A Distributed memory model

这部分介绍了本文提到的PV framework的细节。作者借用了词向量的生成方法,类比得到PV的生成方法。

PV框架的一些细节,不好翻译,放上原文:

In our Paragraph Vector framework (see Figure 2), every paragraph is mapped to a unique vector, represented by a column in matrix D and every word is also mapped to a unique vector, represented by a column in matrix W . The paragraph vector and word vectors are averaged or concatenated to predict the next word in a context. In the experiments, we use concatenation as the method to combine the vectors.

【论文阅读】Distributed Representation of Sentence and Document

PV与WV的区别其实很明显,PV比WV多用了一个矩阵D,这个D可以看做是对上下文的一种记忆单元,这个模型被叫做PV-DM。

需要注意的是在不同的上下文中,W矩阵是共享的,D根据处理的上下文不同而不同,它在段落之间是不可以共享的,换句话说,在什么上下文中预测,就使用该上下文的D。

该框架的训练方法与WV相同,都是使用SGD进行训练,BP获得梯度更新模型参数。

在预测阶段,PV需要先进行一个步骤,对于一个新的段落,需要先产生矩阵D。

该框架的参数总共有N*p+M*q,N表示在语料中有多少个段落,M表示词汇量。

训练完成后,PV的作用包括以下几个方面:We can feed these features directly to conventional machine learning techniques such as logistic regression, support vector machines or K-means.

总结起来,该算法2个重要的步骤:通过非监督学习得到W,通过inference得到D。

PV的优势在于:

  1. 同WV相同,能够表示两个词的语义特征,即语义相近向量距离也近。
  2. 能体现单词的顺序(take into consideration of the word order),使PV能更好的表示上下文的特征。
  3. 不需要大量的标注。

Paragraph Vector without word ordering: Distributed bag of words

就像WV中提供的CBOW和Skip-gram两种模型,PV也提供了另一种相对的模型,这部分的任务是直接让模型预测单词序列。具体过程是在每次训练迭代过程中,通过PV直接输出单词。In reality, what this means is that at each iteration of stochastic gradient descent, we sample a text window, then sample a random word from the text window and form a classification task given the Paragraph Vector. 此模型相比于上一个模型需要的参数更少,仅仅只需要存储softmax部分的参数。

【论文阅读】Distributed Representation of Sentence and Document

实验结果证明,对于每个PV,如果使用两个模型中学到的向量的结合,效果会比单一的使用某种模型得到的向量效果要好。

Experiments

这部分介绍了作者将文中提到的两种模型用于实际数据集进行情感分析和信息检索得到的效果。

在Stanford sentiment treebank dataset上的实验结果:该数据集包含了一系列带有标签的句子,标签分为两类,一类是只有{Positive,Negative},另一类则包含5个标签{Very Positive,Positive,Neutral,Negative,Very Negative},使用两个模型的学出来的向量结合可以分别在两类任务中达到12.2%,51.3%的错误率。

在IMDB dataset上的实验结果:某些方法仅仅能在在句子的范围内起效果,当扩展到段落或文档的时候,效果就会大打折扣,本文提到的提出的PV可以很好地解决这样的问题,因为其不需要解析句子的工作。IMDB是一个电影影评的数据集,label同样分为两类{Positive,Negative},PV在这个数据集上达到的效果为7.24%的错误率,这已经比列出来的所有方法效果都要好了。

在信息检索上的实验结果:所谓信息检索工作,就是在给定的大量数据中找出与query最相关的几条记录,在训练过程中使用的是一种三元组的方法,对于一个训练样本,提供一条与之相似的样本,再随机选择一个样本(尽量是与之不同的词query出来的样本),然后使用PV分别计算与另外两个样本的距离,所期望达到的效果是相似的query结果PV的距离更近,不想似的则更远。同样本文提出的方法在列举的几种模型中取得的效果也是最好的,错误率为3.82%。