NLP-文本表征(2011-2022)
目录
- 1、句法增强方式
- 1.1 Unfolding RAE (2011)
- 1.2 RNTN (2013)
- 1.3 Tree-LSTM (2015)
- 2、词袋建模方法
- 2.1 PV (2014)
- 2.2 SIF (2016)
- 2.3 SDAE (2016)
- 2.4 Sent2Vec (2017)
- 2.5 p-mean (2018)
- 3、语用连贯方式
- 3.1 Skip-Thought (2015)
- 3.2 FastSent (2016)
- 3.3 Quick-Thoughts (2018)
- 4、语义对比方式
- 4.1 InferSent (2017)
- 4.2 InferLite (2018)
- 4.4 PSAN (2018)
- 4.5 DisSent (2019)
- 4.6 Sentence-BERT (2019)
- 5、混合多任务方式
- 5.1 DiscSent (2017)
- 5.2 GenSen (2018)
- 5.3 USE (2018)
- 6、预训练模型
- 6.1 ELMo (2018)
- 6.2 BERT (2019)
- 6.3 RoBERTa (2019)
- 6.4 ALBERT (2019)
- 7、向量标准化方式
- 7.1 BERT-flow (2020)
- 7.2 BERT-Whitening (2021)
- 8、对比学习方式
- 8.1 ConSERT (2021)
- 8.2 SimCSE (2021)
- 8.3 PromptBERT (2021)
- 8.4 Sentence-T5 (2021)
- 8.5 SCD (2022)
- 8.6 DiffCSE (2022)
1、句法增强方式
这类方法主要是利用句法知识增强句子表征能力,对于输入的句子,通过外部工具获取句子的成分句法解析树或依存句法解析树,基于树结构神经网络模型,对句子进行建模。
1.1 Unfolding RAE (2011)
提出一种去折叠递归自编码unfolding RAE的句子建模方法,通过学习句法知识和上下文语义信息增强句子表征能力。具体地,基于递归神经网络模型的编码器-解码器结构,对于每个句子,通过外部解析工具获取句子的句法树信息,以此对句子进行树结构建模,每个节点由子节点连结表示,代表词、短语、句子级别的表征。训练过程,和标准的RAE不同,解码器会对整个树节点进行递归重建,模型的优化目标是减少输入节点和重建节点之间的欧几里距离。另外,论文提出一种新的动态池化层用于输出句子表征。论文方法在MSRP数据集上实现SOTA。
1.2 RNTN (2013)
提出一种递归神经张量网络模型RNTN,基于句法树对句子进行建模,和传统递归神经网络不同的是,论文采用一种基于张量的向量组合函数,用于节点表征向量的计算,其中,根节点向量作为句子表征。RNTN具有参数量少的优点,同时能够有效地捕获上下文中出现的否定语义,在细粒度情感分析数据集SST的表现超过了其他方法。
1.3 Tree-LSTM (2015)
提出一种支持树结构的模型Tree-LSTM,利用句法信息构建结构树,和标准LSTM模型不同的是,Tree-LSTM模型的门向量和记忆单元向量依赖于子节点信息,每个子节点都会有单独的遗忘门。Tree-LSTM有两种:Child-Sum Tree-LSTM模型和N-ary Tree-LSTM模型,前者模型每个部分的计算基于子节点变量求和,适合利用依存句法树,这类模型又称Dependency Tree-LSTM;后者模型考虑子节点数量和顺序,适合利用成分句法树,这类模型又称Consistency Tree-LSTM。Dependency Tree-LSTM在语义相关性任务表现超过其他方法,Consistency Tree-LSTM在细粒度情感分析任务表现超过其他方法。
2、词袋建模方法
这类方法主要是基于文本序列中的词或n-gram,通过设计建模机制来构建句子表征。最简便的方法有:基于词向量的平均加权、TF-IDF加权。
2.1 PV (2014)
提出两种训练句向量的方法:PV-DM和PV-DBOW,前者通过把句向量和一定窗口大小内采样的词序列平均加权或拼接,以此来预测下一个词,考虑词的顺序,后者通过句向量预测一定窗口大小内采样的词序列里的词。在推理阶段,除了句向量参数,其他模型参数固定,通过梯度递减算法学习新句子的表征。模型学习的句向量,输入逻辑回归模型或神经网络模型用于分类任务,通过计算向量距离的方法用于信息检索任务。实验表明,PV-DM能够胜任很多任务,联合PV-DBOW还能继续提升性能。
2.2 SIF (2016)
提出一种Smooth Inverse Frequency(SIF)的词向量权重计算方法,通过对词向量加权平均,然后进行PCA/SVD转化,最终得到句子表征。其中,词向量的权重计算方法是基于超参数a和词频p(w)计算得到。SIF会比直接平均加权或TF-IDF加权等方法表现更好。
2.3 SDAE (2016)
提出序列去噪自编码SDAE的方法用学习句子表征。训练过程,对原句子先删除部分词再交换部分bigram词位置,采用基于LSTM的encoder-decoder模型,解码预测原来的句子序列。SDAE在释义识别任务表现比SkipThought更好
2.4 Sent2Vec (2017)
提出一种简单的无监督模型Sent2Vec,基于句子序列的词向量平均池化表示句子向量。其中,词向量包含了unigram和n-gram表征。论文采用类似C-BOW的无监督学习方法,通过上下文预测缺失的单词,以此训练词向量及其组合。在不少无监督任务上,Sent2Vec表现得比SkipThought等模型更好。
2.5 p-mean (2018)
提出一种词向量幂平均拼接的句子表征方法p-mean。对于输入的句子,采用多种不同的词向量,基于多组不同的幂p,分别进行幂平均计算,再拼接成句向量。不同的幂平均计算能够捕获不同类型的词向量空间信息,词向量的表征能力受制于训练语料和建模方法,不同的词向量融合在表征过程能够提供互补的信息。论文建议,关于幂p的设置,其绝对值不超过10,奇数优于偶数,负数不如整数。
3、语用连贯方式
这类方法主要从语用学的连贯性出发,通过预测句子上下文的方式训练句子表征模型。
3.1 Skip-Thought (2015)
提出Skip-Thought,无监督学习句子向量,采用基于GRU的seq2seq模型结构,类似Skip-gram的训练方式,随机采样连续的三个句子S_i-1、S_i和S_i+1,对句子S_i进行编码,预测前一个句子S_i-1和后一个句子S_i+1。对于编码器部分,论文尝试了单向uni-skip、双向bi-skip和组合combine-skip三种编码方式,其中,combine-skip效果最好;对于解码器部分,有两个解码器,分别负责前一个句子和后一个句子的解码。
3.2 FastSent (2016)
提出Skip-Thought的迭代版本FastSent,目标是计算更快,和Skip-Thought不同的是,FastSent使用BOW表征,基于一个句子,预测其上下句中的单词,但这种不考虑词序的做法,在一些监督任务上表现比考虑词序的方法差些。除了预测句子的上下句,论文还提出在FastSent的基础上增加自编码方法AE,用于预测句子中缺失的单词。FastSent在无监督任务表现比Skip-Thought好。
3.3 Quick-Thoughts (2018)
提出Quick-Thought,与Skip-Thought和FastSent等前人研究不同的是,Quick-Thought采用文本分类范式预测上下句,以此来训练句子向量,即句子和其他候选句子用编码器编码,用分类器判断是否上下句。该方法训练得到的句子向量表现比Skip-Thought更好,同时模型训练速度有所提升。
4、语义对比方式
这类方法主要是通过判断两段文本的语义差异性来训练模型,通常会用NLI数据集,或利用一些话语标识符构建监督语料,来进行监督学习。
4.1 InferSent (2017)
提出有监督方法InferSent,基于NLI数据集训练句子向量模型。数据集每个句子对由premise和hypothesis组成,模型对句子进行表征,联合句子向量以及向量的绝对差和点乘,通过全连接层,使用3-way softmax预测标签,以此训练模型。论文还在LSTM模型、GRU模型、自注意力模型和多层CNN模型验证InferSent的通用性和有效性。
4.2 InferLite (2018)
提出InferSent的轻量版本InferLite。模型由4部分构成:Encoder、Controller、Fusion和Reduction。Encoder和Controller都是多层卷积,其输入是多种类型的词向量,不同的是Encoder分开编码,而Controller将所有词向量合并再编码。Fusion负责将Encoder和Controller的输出混合编码,再经过MaxPooling得到句子向量。InferLite在多个下游任务的表现接近InferSent,但加快了推理速度,同时实验证明,局部上下文信息对提升文本表征能力有效。此外,融合多种不同词向量,虽然能提升模型在NLI任务的表现,但不能带给下游任务性能的提升。
4.4 PSAN (2018)
提出一种基于短语级别自注意力机制的模型PSAN学习句子表征。对于输入的句子,首先使用句法解析工具将其解析成树结构,以此构建多层级短语;对于第一层的短语,模型对其进行自注意力机制编码,短语内的每个词学习局部上下文信息;然后,基于门记忆更新机制,逐层学习长距离上下文信息;最后,将整个句子当作短语,经过自注意力机制计算得到向量表征。基于NLI数据集,模型采用孪生网络架构,训练表征模型。相比句子级别的自注意力机制编码,该方法能减少内存消耗。
4.5 DisSent (2019)
提出DisSent,通过预测话语标识符的方法训练句子向量模型。论文使用依存句法解析工具识别文档中的话语标识符,譬如but、because等,将文档分成前后关联的句子对,基于Bi-LSTM模型对句子对进行编码,联合句子向量以及向量的平均值 、差值 和点乘 ,通过全连接层,预测话语标识符。论文还用该方法微调BERT模型,在PDTB任务上实现SOTA。将InferSent中的有监督训练方法转化为无监督训练方法。
4.6 Sentence-BERT (2019)
提出Sentence-BERT。原生的BERT/RoBERTa在预训练阶段,更多关注上下文对序列中词的影响,缺少一种机制引导模型对单个句子更好地表征,使得在文本匹配场景,表征式效果远不如交互式。论文提出一种基于孪生网络训练的方式,利用NLI数据集,对BERT/RoBERTa模型再次进行监督学习。训练之后的模型,对于输入的句子,得到序列的表征,通过池化处理得到句子向量。论文提出的这种方法能够有效地提升BERT/RoBERTa模型在文本相似度计算任务的表现,在STSb等数据集上的表现超过了其他句子表征模型。
5、混合多任务方式
这类方法主要采用语用连贯或语义对比的一些方法,通过多任务的方式训练模型。
5.1 DiscSent (2017)
提出一种无监督句子表征学习方法DisSent,混合三种分类任务共用句子编码器:ORDER任务,将相连的两个句子随机交换位置,由模型判断两个句子是否被交换;NEXT任务,基于三个连续句子,从五个候选句子中识别出下一句;CONJUNCTION任务,将包括9类连词的文本去掉连词分成两个句子,由模型判断两个句子之间的连词类别。
5.2 GenSen (2018)
提出一种one-to-many多任务学习框架GenSen,用于训练句子向量模型。使用GRU作为共享编码器,外接不同的下游任务,包括预测上下句、机器翻译、成分句法解析和自然语言推理任务。训练过程,随机选择其中任务及其样本训练模型。相比Skip-thought,实验表明联合多任务学习能够提升模型的迁移性能。
5.3 USE (2018)
提出一种多任务学习句子表征的方法USE。使用transformer和DAN两种模型用于共享编码器,基于多种下游任务训练模型,包括预测下句、对话匹配和自然语言推理等任务。基于transformer的模型(USE-T),使用注意力机制捕获词的上下文信息,同时考虑词序位置信息;基于DAN的模型(USE-D),简单将词向量通过DNN编码。实验表明,USE-T在多项下游任务表现比USE-D更好,但计算量和内存消耗量会相比USE-D更高。
6、预训练模型
这类方法主要是基于大规模语料进行自监督训练语言模型,文本序列的词向量通过编码层学习上下文信息,捕获语义和句法特征。
6.1 ELMo (2018)
提出一种词表征融合上下文信息的方法ELMo,基于多层Bi-LSTM构建深度双向语言模型,利用大规模文本语料训练模型,序列的词表征,经过多层Bi-LSTM,捕获上下文中的语义和句法信息,同时也能针对多义词根据上下文信息区分表征。
6.2 BERT (2019)
提出基于Transformer的双向上下文编码预训练模型BERT,采用“预训练-微调”范式,能够利用大量无标签语料无监督学习文本表征模型,将文本表征能力迁移给下游任务。预训练阶段,采用掩码语言模型MLM和下句预测任务NSP。不同于去噪自编码方式,MLM主要是通过对文本序列随机掩码,由模型学习预测被掩码的词,Transformer采用自注意力机制,能够更好辅助模型对上下文信息建模。NSP则是基于语用连贯性,由模型判断两个句子是否上下句关系。BERT模型在众多NLP任务表现超过前人研究,为NLP的研究打开了新的方向。
6.3 RoBERTa (2019)
提出BERT的升级版本RoBERTa,通过改进训练策略提升模型在下游任务的表现能力。RoBERTa舍弃了NSP任务,只保留MLM任务,采用动态掩码策略,拼接多个句子保证序列长度接近512;此外,研究表明,增加训练数据、批次大小和训练步数能够有效提升模型性能。
6.4 ALBERT (2019)
提出BERT的轻量版本ALBERT,采用了两种技术来减少模型参数:词向量参数因式分解、跨层参数共享,在保证模型性能不会太大损失的前提下,能够有效减少模型参数,提升参数效能。此外,ALBERT采用句子顺序预测SOP替代NLP任务。
7、向量标准化方式
这类方法主要是通过向量空间标准化的方式解决BERT类预训练模型用于句子向量时表现的各向异性和语义不平滑问题,提升BERT类句子向量用于计算文本相似度的性能。
7.1 BERT-flow (2020)
提出一种BERT向量空间标准化的方法BERT-flow。原生BERT向量空间具有各向异性,向量分布不均匀,高频词密集,靠近原点,低频词稀疏,偏离原点。BERT-flow在BERT的基础上增加标准化流式可逆转换,将BERT向量空间转化为光滑且各向同性的标准高斯分布,通过继续预训练学习flow模型。该研究建议将BERT的第一层和最后一层输出经过平均池化得到句子向量,训练时,BERT模型参数固定,flow模型随着训练优化更新。
7.2 BERT-Whitening (2021)
提出一种简单直接的白化机制来标准化BERT向量,即BERT-Whitening,在多项下游任务达到跟BERT-flow差不多的效果。基于目标数据集,获取所有句子向量,计算均值和协方差,由协方差矩阵经过SVD分解得到W,均值和W作为白化模块的参数,用于对BERT向量标准化处理。
8、对比学习方式
这类方法主要是基于对比学习的思路,提出构建正负样本对的方法,对BERT类模型再次训练学习,提升模型在文本匹配任务上的性能。
8.1 ConSERT (2021)
提出对比学习框架ConSERT,通过自监督学习句子表征模型。BERT作为共享编码器,最后一层输出经过平均池化作为句子向量,4种数据增强策略构建正负样本用于对比学习:让相似的样本距离更近、不相似的样本距离更远。4种数据增强策略包括:Dropout、基于梯度构建对抗样本、随机裁剪词或特征、打乱词序等,这些策略对模型性能提升的帮助依次递增。原生BERT用于句子表征时具有坍塌现象,即句子向量倾向于分布在较小的空间区域内,使得大多数句子对具有很高的相似分数,即便是语义无关的句子对。实验证明,ConSERT能够有效地改善这种问题。
8.2 SimCSE (2021)
提出简单的对比学习框架SimCSE,有两种训练方式:无监督方式,通过Dropout机制,获取相同句子的两种不同表征作为正样本对,与同批次的其他句子构成负样本对;监督方式,利用NLI数据集,蕴含关系的句子对作为正样本对,矛盾关系的句子对作为负样本对,以此进行对比训练。通过alignment和uniformity两个指标,研究表明SimCSE能够有效减弱BERT语义向量分布的各向异性,提升模型在STS任务的句子表征性能。论文对比了不同数据增强策略的效果,实验表明Dropout机制比裁切、删词、同义词替换、掩码处理等方法效果好。此外,研究建议,BERT基础加MLP模块训练,以[CLS]向量作为句子表征。
8.3 PromptBERT (2021)
提出一种结合提示学习和对比学习的方法PromptBERT,来提升BERT作为句子表征的能力。研究通过分析句子语义相似度和各向异性的实验,发现影响句子语义相似匹配任务性能的关键因素不是各向异性,而是静态词向量偏差和低效的BERT编码层。为了避免词向量偏差的影响,论文提出两种基于提示学习的表征方式和三种提示模板搜索方法。基于提示学习的表征方式,其一是直接以掩码符[MASK]来表征句子,其二是以掩码符[MASK]最相关的top-k个词向量加权表征句子。提示模板搜索方法,其一是人工构建模板,其二是基于T5生成模板,其三是OptiPrompt,学习连续模板。
8.4 Sentence-T5 (2021)
提出Sentence-T5,利用CommQA和NLI数据集,采用双塔结构,以对比学习的方法训练句子向量模型。论文分析了三种基于T5的句子向量表征方法,即:ST5编码器输出第一个token的表征、ST5编码器输出的平均池化结果、ST5解码器输出的token表征,实验表明,ST5编码器输出的平均池化结果作为句子向量,效果最佳。训练过程,ST5采用两阶段训练方法,首先,基于大量样本的CommQA数据集训练模型,关联的问答对作为正样本;然后再利用NLI数据集微调模型,蕴含关系的句对作为正样本,矛盾关系的句对作为负样本。
8.5 SCD (2022)
提出一种联合自对比学习和特征去相关的方法SCD。该研究以BERT/RoBERTa为编码器,再接一层MLP,采用高低两种dropout比率,来构建对比样本。句子经过编码器得到两种特征,作为负样本,即自对比学习发散;特征经过MLP层输出,构建相关矩阵,同一句子的不同输出构成正样本,同时,研究也考虑句子与其他句子表征构成负样本,此为特征去相关。在语义相似度任务上,相比SimCSE,SCD并没有优势,但在其他多个下游任务的表现可圈可点。
8.6 DiffCSE (2022)
提出一种无监督对比学习框架DiffCSE。其研究思路来自CV领域,即:对输入样本,基于不敏感转换可以构建对比损失,基于敏感转换可以构建预测损失,这种方法有助提升模型的表征能力。DiffCSE在SimCSE的基础上,即基于Dropout机制构建对比学习,另外增加条件差分预测模型,对经过掩码处理的句子,使用另一个MLM模型还原被掩码的token,由判别器判断生成序列与原始序列的差异性。对句子进行掩码还原、随机插入或删除字词,都属于对样本的敏感转换,实验表明,掩码还原相比其他方法效果更好。