CopyNet、SeqGAN、BERTSUM…你都掌握了吗?一文总结文本摘要必备经典模型(三)

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: CopyNet、SeqGAN、BERTSUM…你都掌握了吗?一文总结文本摘要必备经典模型

1.5 NEUSUM

NEUSUM属于基于Seq2Seq的抽取式方法。句子评分和句子选择是抽取式文本摘要系统的两个主要步骤,以往的抽取式摘要,句子评分和选择是独立的两个部分。NEUSUM则训练一个新的端到端神经网络框架,将评分以及选择联合在一起同时将他们的信息关联起来取得了较好的成绩。它首先用分层编码器读取文本中的句子,以获得句子的表征。然后,通过逐一提取句子来建立输出摘要。与之前的方法不同,NEUSUM将选择策略整合到评分模型中,直接预测之前选择的句子的相对重要性。这样的好处是:a)句子评分可以意识到以前选择的句子;b)可以简化句子选择,因为评分函数被学习为ROUGE分数增益。


图6 NEUSUM模型概述。在前两步提取S_5和S_1。在第一步,给模型输入一个零向量0,代表空的部分输出摘要。在第二和第三步,将先前选定的句子S_5和S_1的表征,即s_5和s_1,送入提取器RNN。在第二步,该模型只对前4个句子进行评分,因为第5个句子已经包含在部分输出摘要中


NEUSUM模型架构如图6所示。首先将原始文本通过一个层次的Encoder(句子级和文档级)。将输入的文本D的每个句子S_j输入一个双向GRU网络(初始状态设为0),得到句子的向量表征。将sentence level编码后的表征作为输入传入另一个双向GRU网络,得到双向的隐状态,将隐状态合并后得到每个句子的文本级表征s_i。

考虑到最后抽取的句子Sˆt-1,句子抽取器通过对剩余的文本句子打分来决定下一个句子Sˆt。为了在考虑到文本句子的重要性和部分输出摘要的情况下对其进行评分,该模型应该有两个关键能力:1)记住以前选择的句子的信息;2)根据以前选择的句子和剩余句子的重要性对剩余的文本句子进行评分。因此,采用另一个GRU作为递归单元来记忆部分输出摘要,并使用多层感知器(MLP)来对文本句子进行评分。具体的,GRU将上文中最后提取的句子的文本级表征s_i作为输入,产生其当前的隐状态h_t。句子评分器是一个两层的MLP,需要两个输入向量,即当前的隐状态h_t和句子表征向量s_i,以计算句子S_i的得分δ(S_i):



在抽取第一句话时,用一个带有tanh激活函数的线性层初始化GRU的隐状态h_0:

有了所有句子在时间t的得分,我们选择具有最大增益得分的句子:



当前 SOTA!平台收录 NEUSUM 1 个模型实现资源。


模型 SOTA!平台模型详情页
NEUSUM 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/6ffe7d4b-c16f-4058-991b-3fb7c785c45b

1.6  BERTSUM


应用于抽取式文本摘要生成的传统深度学习方法(上述1.1-1.5介绍到的模型)一般采用LSTM或GRU模型进行重要句子的判断与选择,而本文采用预训练语言模型BERT进行抽取式摘要。BERTSUM首次将BERT用于摘要抽取中,充分利用了BERT预训练产生的先验知识。


图7 原始BERT模型(左)和BERTSUM(右)的结构


BERTSUM的结构是比较简单的,基本就是将BERT引入到文本摘要任务中,模型主要由句子编码层和摘要判断层组成,其中,句子编码层通过BERT模型获取文本中每个句子的句向量编码,摘要判断层通过三种不同的结构进行选择判断,为每个句子进行打分,最终选取最优的top-n个句子作为文本摘要。如图7所示,上面的序列是输入文本,然后是每个token的三种嵌入的总和。求和后的向量被用作几个双向转化器层的输入嵌入,为每个token生成上下文向量。BERTSUM通过插入多个[CLS]符号来学习句子表征,并使用区间分割嵌入(用红色和绿色说明)来区分多个句子,从而扩展了BERT。

句子编码层。由于BERT模型MLM预训练机制,使得其输出向量为每个token的向量;即使分隔符可以区分输入的不同句子,但是仅有两个标签(句子A或句子B),与抽取式摘要需要分隔多个句子大不相同;因此对BERT模型的输入进行了修改:1)将文本中的每个句子前后均插入[CLS]和[SEP],并将每个句子前的[CLS]token经由模型后的输出向量,作为该句子的句向量表征。2)采用Segment Embeddings区分文本中的多个句子,将奇数句子和偶数句子的Segment Embeddings分别设置为EA和EB。

摘要判断层。从句子编码层获取文本中每个句子的句向量后,构建了3中摘要判断层,以通过获取每个句子在文本级特征下的重要性。对于每个句子sen_i,计算出最终的预测分数Y^i,模型的损失是Y^i相对于gold标签Yi的二元交叉熵。具体到预测分数阶段,可以有如下几种选择:

1. Simple Classifier:仅在BERT输出上添加一个线性全连接层,并使用一个sigmoid函数获得预测分数,如下:


2. Transformer:在BERT输出后增加额外的Transformer层,进一步提取专注于摘要任务的文本级特征,如下:


最后仍然接一个sigmoid函数的全连接层(simple classifier)。

3. LSTM:如果在BERT输出增加额外的LSTM层,则可以进一步提取专注于摘要任务的文本级特征。当然,最后仍然接一个sigmoid函数的全连接层(simple classifier)。


当前 SOTA!平台收录 BERTSUM 15 个模型实现资源。


模型 SOTA!平台模型详情页
BERTSUM 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/e27d5e70-18ab-4576-9299-26bad528c4b4

1.7 BRIO


BRIO最大创新之处是在常见的seq2seq框架下,加一个 evaluation model 评估模型。在文本摘要抽取任务上,对生成的候选序列进行排序,并以对损失的方式将排序过程间接融于到优化目标中,形成一个多任务学习框架,促使模型偏向非固定的目标分布训练方式,缓解曝光偏差的问题。下图显示 seq2seq 架构中使用的传统 MLE 损失与无参考对比损失之间的差异:



图8  BRIO中的MLE损失(L_MLE)和对比性损失(L_Ctr)的比较。MLE假设了一个确定性的分布,在这个分布中,参考摘要得到了所有的probability mass。BRIO假设了一个非决定性的分布,在这个分布中,系统生成的摘要也根据其质量得到probability mass。对比性损失鼓励候选摘要的模型预测概率的顺序与实际的质量指标M相协调,摘要将根据该指标进行评估。我们赋予抽象化模型以双重角色—一个单一的模型可以同时作为生成模型和无参考价值的评价模型

通常使用最大似然估计(Maximum Likelihood Estimation, MLE)损失来训练序列模型。但是BRIO认为我们使用的损失函数将把一个本质上可能有多个正确输出(非确定性)的任务的“正确”输出(确定性)赋值为零。训练和推理过程之间也存在差异,在生成过程中模型是基于自己之前的预测步骤,而不是目标摘要。在推理过程中,当模型开始偏离目标(并变得更加混乱)时,就会造成更严重的偏差。

BRIO引入了一个合并评价指标的想法,这样模型就可以学习如何对摘要进行排序。这是通过使用多样化Beam Search和生成多个候选来完成的。具体,这是一个两阶段的工作:

1)使用一个预先训练的网络(BART)生成候选人;

2)从中选择最好的一个。

对比性损失负责指导模型学习如何对给定文本的多个候选者进行排名。它将在微调过程中用于改进序列级别的协调。论文也说明了仅针对对比性损失的微调模型不能用于生成摘要,因此将上述损失的加权值与交叉熵(xnet)损失相加,以确保token级别的预测准确性。如图8, BRIO被描述为“双重角色”模型,但它其实是一个单一的模型,既可以生成摘要,也可以评估生成的候选者的质量。


当前 SOTA!平台收录 BRIO 共 1 个模型实现资源。


模型 SOTA!平台模型详情页
BRIO 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/7de76bc7-f55c-465c-9a81-ff175a623a6d

前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。


网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。


移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。

相关文章
|
11月前
|
机器学习/深度学习 自然语言处理 算法
【文本摘要(1)】抽取式之textrank(无监督学习):生成200字以内摘要
【文本摘要(1)】抽取式之textrank(无监督学习):生成200字以内摘要
206 0
|
11月前
|
机器学习/深度学习 JSON 自然语言处理
bert中文文本摘要代码(2)
bert中文文本摘要代码(2)
282 0
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
【一起从0开始学习人工智能0x02】字典特征抽取、文本特征抽取、中文文本特征抽取
【一起从0开始学习人工智能0x02】字典特征抽取、文本特征抽取、中文文本特征抽取
77 1
|
11月前
|
存储 自然语言处理 PyTorch
bert中文文本摘要代码(1)
bert中文文本摘要代码(1)
114 0
|
11月前
|
存储 自然语言处理 并行计算
bert中文文本摘要代码(3)
bert中文文本摘要代码(3)
119 0
bert中文文本摘要代码(3)
|
机器学习/深度学习 人工智能 自然语言处理
深度解析NLP文本摘要技术:详解与实战
深度解析NLP文本摘要技术:详解与实战
752 0
|
机器学习/深度学习 人工智能 自然语言处理
深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等
深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等
|
机器学习/深度学习 自然语言处理 算法
CopyNet、SeqGAN、BERTSUM…你都掌握了吗?一文总结文本摘要必备经典模型(二)
CopyNet、SeqGAN、BERTSUM…你都掌握了吗?一文总结文本摘要必备经典模型
246 0
|
机器学习/深度学习 自然语言处理 PyTorch
CopyNet、SeqGAN、BERTSUM…你都掌握了吗?一文总结文本摘要必备经典模型(一)
CopyNet、SeqGAN、BERTSUM…你都掌握了吗?一文总结文本摘要必备经典模型(一)
151 0
|
机器学习/深度学习 并行计算 PyTorch
循环神经网络实战案例——实现文本情感分类
循环神经网络实战案例——实现文本情感分类
154 0
下一篇
无影云桌面