NLP论文 -《Distributed Representations of Sentences and Documents》-句子和文档的分布式表示学习(二)
Distributed Representations of Sentences and Documents(句子和文档的分布式表示学习)
- 作者:Quoc Le and Tomas Mikolov
- 单位:Google
- 发布会议及时间:ICML 2014
1、上节回顾
- 句向量表示概念
句向量表示就是将一句话表示成一个向量,向量带有这句话的语义信息。当学到一个较好的句向量表示,可以将这个句向量表示用到很多地方,比如说文本分类、机器翻译、信息检索等。 - 句向量表示相关技术
词袋模型、bag-of-words等,基于词向量的加权平均法等。 - 前期知识储备
- 课程规划
2、论文整体框架
2.1 摘要
- 句向量表示的概念和意义:将句子表示为固定长度的向量
- 以往的句向量表示模型以及它的缺点:没有学到语义信息
- 本文提出的模型和该模型的优点:无监督方法,能将具有变长的一句话表示为固定长度的向量;
- 所提出模型的效果;
2.2 介绍
2.3 句子分布式表示模型
2.4 实验
2.5 相关工作
2.6 结论
3、传统/经典算法模型
3.1 Bag-of-words
算法:
- 构建一个词表,词表中每个元素都是一个词;
- 对于一句话s,统计词表中每个词在s中出现的次数;
- 根据词词表大小的向量中每个词在s中出现的次数,构造一个向量。
对于句子"The dog is running on the grass",组成词表,词表中有6个词,统计句子中在词表中出现的每个词的次数,得到这句话的词向量表示形式。
对于Bag-of-n-grams,词表中的元素可以为词,也可以为n-gram短语。
Bag-of-words模型缺点:
- 因为是词袋模型,所以丢失了词之前的位置信息;
- 句向量只是单纯地利用了统计信息,而没有得到语义信息,或者只得到很少的语义信息。
Bag-of-n-grams模型缺点:
- 因为使用了n-gram,所以保留了位置信息,但是n-gram不会太大,最多是4-gram,所以只保留很少的位置信息。
- N-gram同样没有学习到语义信息。
3.2 加权平均法
算法:
- 构建词表,词表中每个元素都是词;
- 使用词向量学习方法(skip-gram等)学习每个词的词向量表示;
- 对句子s中的每个词()对应的词向量()加权平均,结果为句子s的分布式表示:
缺点:对所有的词向量进行平均,丢失了词之前的顺序信息以及词与词之间的关系信息。
3.3 深度学习模型
算法:
- 构建词表,词表中每个元素都是词;
- 使用词向量表示方法(skip-gram等)学习每个词的词向量表示;
- 将句子s中的每个向量作为输入送到深度神经网络模型(CNN or RNN),然后通过监督学习,学习每个句子的分布式表示。
缺点:只能使用标注数据训练每个句子的句向量,这样训练得到的向量都是任务导向的,不具有通用性。
3.4 基于语言模型的词向量训练
语言模型:语言模型可以给出每个句子是句子的概率:而每个词的概率定义成n-gram形式,即每个词出现只与前n-1个词有关:评价语言模型好坏的指标困惑度(perplexity):
算法:
- 对于每个词随机初始化一个词向量;
- 取得一句话连续的n-1个词,将这n-1个词对应的词向量连接(concatenate)在一起形成网络e;
- 将e作为输入,送入到一个单隐层神经网络,隐层的**函数为tanh,输出层的神经元个数为词表大小;
优点:就像原文中提到的,即训练出一组词向量,又得到一个语言模型。其次是不需要标注数据,可以使用很大的数据集。
论文:《A Neural Probabilistic Language Model》
观看上图,统计词表,词表中每个词初始化一个向量,取一句话连续的n-1个词,将这n-1个词对应的词向量连接在一起,比如每个词向量为100维,将三个词向量连接在一起得到一个300维的词向量。将该向量传入一个**函数为tanh的全连接神经网络,再连接一个softmax的输出层。softmax对输出进行分类,词表中有多少个词,就会有多少个分类结果。最后得到了第t个词在前t-1个词条件下的概率,这是一个无监督模型,通过梯度下降训练整个端对端模型。
4、论文提出改进后的模型
4.1 分布式句向量训练模型
算法:
- 类似于前面提到的基于语言模型的词向量训练模型,这里的句向量训练模型也是利用前几个词预测后一个词;
- 不同的是,这里将每句话映射成一个句向量,联合预测后一个词出现的概率。
这样就学习到每个词的词向量和每句话的句向量。
训练阶段:
通过训练集构建词表,并随机初始化词向量矩阵w和训练集的句向量矩阵D。设置n-gram,文中为窗口大小,然后利用句向量训练模型训练矩阵模型的所有参数,包括词向量矩阵和句向量矩阵;
最后将学习到的句向量用于分类器预测句子的类别概率;
测试阶段:
固定词向量矩阵W和模型的其它参数,重新构建句向量矩阵D并随机初始化,然后利用梯度下降训练矩阵D,从而得到测试集每个句子的句向量。
将学习到的测试集的句向量用于训练句向量训练好的模型进行类别预测。
4.2 无序句向量训练模型
文本还提出了一种Bag-of-words,即忽略词序信息的模型。
算法:
每个句子通过随机初始化句向量矩阵映射成一个句向量,然后通过句向量每次随机预测句子中的一个词。
然后将学习到的句向量送到已经训练好的分类器,预测句子的概率。
本文分别使用提出的两种模型训练得到两个句向量,然后将两个句向量合并(concatenate),得到最终的句向量表示。
5、实验和结果
数据集
SST:斯坦福提供的情感分析数据集(0-1之间的情感值),其中训练数据8544条,测试数据2210条,验证数据1101条,其中还包括将所有数据转化为短句共239232条;
IMDB:IMDB的评论数据,其中训练集25000条,12500条正例,12500条负例。测试集25000条,12500条正例,12500条负例。还有50000条未标注数据。
评价方法:SST数据集可以根据情感值分为5类,采用的分类器是Logistic回归,也可以分为两类,评价指标就是预测情感类别的错误率,越低越好。IMDB数据集是一个二分类任务,采用的分类器是单隐层神经网络,评价指标为预测情感类别的错误率,同样越低越好。
实验结果
如下图所示,第二列为二分类结果,第三列为五分类结果,实验结果显示本文提出的句向量方法优于朴素贝叶斯,SVM,词向量平均法以及神经网络方法,在二分类和五分类任务都取得了state-of-the-art的结果。
IMDB的实验结果,句向量模型的结果也取得了state-of-the-art的结果。
6、讨论和总结——讨论论文中存在的问题,总结本阶段所学内容
6.1 论文存在问题
问题1:论文提出的方法是目前主流的句向量表示方法?
论文提出的方法并不是目前主流的句向量表示方法,目前的主流方法是基于神经网络的句向量学习方法,使用预训练的词向量以及神经网络可以得到非常好的句向量表示。
该论文提出的方法在测试过程还需要训练,大大降低了效率
使用基于神经网络的句向量学习方法,当前流行的ELMO,BERT。
是否有其它句向量训练方法
后人提出基于seq2seq模型的句向量训练方法。
6.2 论文主要创新点
- 提出了一种新的无监督的句向量训练方法;
- 可以直接用于下游任务;
- 在论文发表的时候取得了SOFA结果。
6.3 总结
- 背景:词袋模型和深度学习模型的介绍以及它们的缺点;
- 模型:提出了一种有顺序信息的句向量训练模型和一种基于词袋模型的句向量训练模型;
- 实验结果:在两个文本分类数据集SST和IMDB中达到了SOAT的结果。
6.4 参考论文
- Bengio et al.2015. A Neural Probabilistic Language model.