原论文:(Distributed Representations of Sentences and Documents)
概要
许多机器学习算法需要的输入的形式为定长的特征向量(fixed-length features)。当处理文本时,最常见的特征向量是词袋模型(bag-of-words)。虽然词袋模型的使用非常广泛,但是它有两个主要的缺点:它丢失了词语的顺序并且忽视了整句话的语义。比如:"powerful", "strong" 和 "Paris" 是同样遥远的(equal distant)。在这篇论文中,我们假设Paragraph Vector,一个不被监管的算法,从一个如句子、段落、文件当中的变长文本信息(varible-length pieces of texts),学习了定长特征表示(fixed-length feature representations)。我们的算法通过被训练好的,可以预测文件中单词的稠密向量(dense vector),来表示每一个文件。它的这种结构给我们的算法一种可以克服bag-of-words models的缺点的可能性。以实验为依据的结果表明Paragraph Vectors 胜过bag-of-words models及其他的文本表示技术。
介绍
文本分类和聚类在许多应用中发挥着重要的作用,比如文件检索、网络搜索、信息过滤。这些应用的核心都是机器学习算法比如逻辑回归(logistic regression)或K均值聚类算法(Kmeans)。这些算法通常要求文本输入的形式为定长向量(fixed-length vector)。或许由于简单,高效且令人惊讶的准确性,处理文本时最普遍的定长向量表示方法(fixed-length vector representation) 是BOW或者bag-of-n-games。
但是BOW方法会使词语的顺序丢失造成虽然句子不同,但是使用了相同的词语,就会拥有相同的表示。尽管bag-of-n-grams能够在短篇幅的文本中考虑到单词的顺序,但它还是会遭受到数据稀疏(data sparsity)和高维度(high dimensionality)的困扰。两者都在词语的语义或从形式上来说——词语之间的距离关注甚微。
在这篇论文中,我们提出Paragraph Vector,一种为几段文字能够学习连续分布向量表示(continuous distributed vector representations)的不受监管的结构(unsupervised framework)。文本内容可以是变长的,从句子到文件都可的。Paragraph Vector这个名字是为了强调这个方法能被应用到变长的文本(variable-length pieces of texts),从短语到句子到大文件都能够被应用。
在这个模型中,向量表示(the vector representation)被训练来能够有用地预测一个段落中的单词。更确切地说,我们把一些从段落中得到的单词向量(word vectors)联系起来组成段落向量(paragraph vector)并且对接下来的内容中给出的单词进行预测。单词向量(word vectors)和段落向量(paragraph vectors)都被随机梯度下降(stochastic gradient descent)和反向传播(backpropagation)的方法所训练。虽然paragraph vectors在所有段落中是独一无二的,但是word vectors却是被共享的。当进行预测时,通过固定word vectors和训练新的paragraph vectors来推断paragraph vectors,直到收敛。
这个技术就是被通过使用神经网络(neural networks)学习词语的向量表示(learning vector representations of words)所启发。在他们的构想中每一个单词都用文本中的串联或平均(concatenated or averaged)其他word vectors来表示。例如在神经网络语言模型中使用多个先前单词向量的串联来形成神经网络的输入,并尝试预测下一个单词。结果是,在训练模型之后,讲单词向量映射到向量空间之中,从而使语义相似的词具有相似的向量表示形式(如,"strong"接近"powerful")。
根据这些成功的技术,研究人员尝试将模型扩展到超越超越单词等级的进而达到短语等级或者句子等级的表示方式。例如,一个简单的方法是使用文档中所有单词的加权平均(weighted average)。一个更复杂的方法是将word vectors通过一个句子的语法分析树(parse tree of sentence)给出的顺序组合单词向量,使用矩阵向量运算。这两个方法都有弱点。第一个方法,使用word vectors的加权平均会像BOW方法一样失去单词的顺序。第二个方法,使用语法分析树(parse tree)来组合word vectors,已经被表明只对句子有效(因为它依赖于语法)。
Paragraph Vector在构造表示变长的段落是非常有用的。不像之前的一些方法,它对于任何长度的文本来说都是一般且适用的。它并不要求基于单词权重功能的特定于任务的调整或是依赖于语法树。在接下来的内容中会展示基于几个基准数据集(benchmark datasets)的实验,来表明Paragraph Vector的优势。比如,在情感分析(sentiment analysis)任务中,我们达到了最高水平的结果,比更复杂的方法要好,在错误率方面降低了超过16%。在一个文本分类的任务中,我们的方法完全的打败了BOW模型,相对改进了30%左右。
算法
先来谈一谈过去的学习单词向量的方法,这些方法是PV methods的灵感来源。
1. 学习单词的向量表示方式
Figure.1是一个非常有名的word vectors,它的任务是通过文本中给出的其他单词预测出下一个单词。

在此框架中每个单词都映射到唯一的一个向量,由矩阵W中的一列表示。该列通过单词在词汇表中位置中的位置进行索引。向量的连接或总和然后用作预测句子中下一个单词的特征。
更正式地说,给定训练词w1 ,w2,w3...,,wT的序列,word vector model的目标是使平均对数概率最大化。

这个预测任务被一个代表性的多类分类器,例如softmax完成,如下:

对于每一个新的输出结果,每个yi都是未归一化对数的概率,比复杂的方法要好,其计算方式为:

这里的U,b是softmax函数的参数。h从W中提取的单词向量的串联或平均值构成。
在实践中,对于快速训练,优先选择hierarchical softmax。在我们的工作中,hierarchical softmax的结构是二进制哈夫曼树(binary Huffman tree),其中短代码被分配给常用单词。这是一个很好的加速技巧,因为可以快速访问常用词。二进制哈夫曼代码在层次结构中的使用与(Mikolov等,2013c)相同。
通常使用随机梯度下降训练基于神经网络的词向量,其中通过反向传播(backpropagation)获得梯度。这个类型的模型通常被认为是神经语言模型。可在code.google.com/p/word2vec/获得基于神经网络的用于训练单词向量的算法的特定实现方式。
训练收敛后,具有相似含义的单词将映射到向量空间中的相似位置。比如"powerful"与"strong"更接近而"powerful"和"Paris"则更远。词向量之间的差异也带有意义。例如,单词向量可用于简单的向量代数来回答类比问题:“国王”-“男人”+“女人”=“女王”。也可以学习线性矩阵来在语言之间翻译单词和短语。
这些特性使单词向量对许多自然语言处理任务具有吸引力,例如语言建模、自然语言理解、统计机器翻译、图像理解和关系提取。
2. 段落向量:分布式内存模型
我们对学习段落向量的方式灵感来源于单词向量的学习方式。灵感在于要求单词向量对句子中的下一个单词的预测做出共贡献。因此,虽然单词向量是随机初始化的,但它们仍可以将语义捕获为预测任务的间接结果。我们将以类似的想法在段落向量中使用这个想法。考虑到从段落中采样的许多上下文,还要求段落向量有助于下一个单词的预测任务。
在我们的段落向量框架中(参见Figure.2),每个段落都映射到一个唯一的向量,由矩阵D中的一列表示,每个单词也映射到一个唯一的向量,由矩阵W的一列表示。对段落向量和词向量进行平均或连接,以预测上下文中的下一个词。在实验中,我们使用串联作为组合向量的方法。

更正式地讲,与单词向量框架相比,该模型的唯一变化是在公式1中,其中h由W和D构成。
可以将段落标记视为一个词。它充当记忆记住当前上下文或本段主题中缺少的内容。因此,我们通常将此模型成为段落向量的分布式存储模型(Distributed Memory Model of Paragraph Vectors(PV-DM))。
上下文是固定长度的,并从段落上的滑动窗口中采样。段落向量在同一段生成的所有的上下文之间共享,但不跨段落共享。但是,单词向量矩阵W在各个段之间是共享的。即,所有段落的“有效”向量都相同。
段落向量和词向量被用随机梯度下降的方式训练,并且通过反向传播获得梯度。在随机梯度测量的每个步骤中,可以从随机段落中采样固定长度的上下文,从Figure.2中的网络计算误差梯度,然后使用该梯度更新模型中的参数。
在预测时,需要执行一个推理步骤来计算新段落的段落向量。这也是通过梯度下降获得的。在此步骤中,模型其余部分的参数,单词向量W和softmax,是固定的。
假设语料库中有N个段落,词汇中有M个单词,并且我们想学习段落向量,以使每个段落都映射到p维,每个单词向量都映射到q维,那么模型的总和为N×p+M×q个参数(不包括softmax参数)。即使当N很大时参数的数量可能很大,但训练期间的更新通常很少,因此效率很高。
在训练之后,段落向量可以用作该段落的特征(例如,代替或附加于词袋)。我们能将这些特征直接提供给传统的机器学习技术,例如逻辑回归,支持向量机或K-means。
总而言之,这个算法本身具有两个关键阶段:1)通过训练以得到已经看到的段落上的词向量W,softmax权重U,b和段落向量D;2)“推理阶段”(inference stage)通过在D中增加更多的列并保持在W,U,b不变的情况下在D上下降的梯度来获得新段落的段落向量D。
paragraph vector的好处:PV的一个优点是可以从未标记的数据中学习它们,因此可以很好地用于没有足够标记数据的任务。
PV也忙于BOW模型的一些关键弱点。首先,它们继承了word vector的一个重要性质:words的语义。在这个空间中,"powerfule"比"Paris"更接近"strong"。第二个优点是它们会考虑词语的顺序,至少在一个较短的上下文中以与具有大n的n-gram model相同的方式考虑了单词的顺序。这很重要,因为n-gram model会保留很多段落信息,包括单词顺序。就是说,我们的模型可能比n-gram model更好,因为n-gram model会创建一个非常高维的表示形式,而泛化的效果很差。
3. 不带单词排序的段落向量:分布式单词袋
上面的方法考虑了参数向量与单词向量的串联,以预测文本窗口的下一个单词。另一种方法是忽略输入中的上下文单词,但是强制模型从输出的段落中随机采样的单词来进行预测。实际上,这意味着在随机梯度下降的每次迭代中,我们对文本窗口进行采样,然后对文本窗口中的单词进行随机采样,并根据给定的“段落向量”形成分类任务。这个技术我们展示在Figture.3中,我们称之为Distributed Bag of Words version of Paragraph Vector(PV-DBOW),与上面提出的(PV-DM)相反。

除了概念上简单之外,该模型还需要存储更少的数据。我们只需要存储softmax权重,而不是以前模型中的softmax权重和word vector。
实验
略
笔记
- bag-of-words(BOW)会丢失词语顺序,也会丢失语义。
- bag-of-n-grams:尽管在短篇的内容中能考虑词语的顺序,但是它会遭受数据稀疏和高维度的困扰。
网友评论