华人博士一作:自动生成摘要超越BERT!帝国理工谷歌提出新模型Pegasus

本文主要是介绍华人博士一作:自动生成摘要超越BERT!帝国理工谷歌提出新模型Pegasus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  新智元报道  

来源:venturebeat、arXiv

文本摘要是机器学习算法正在改进的一项任务,微软最近发表的论文“Structured Neural Summarization”证明了这一点。这是个好消息,因为自动文本摘要系统有望减少企业员工阅读信息的时间(一项调查估计人们每天至少花2.6小时阅读信息。)

不甘示弱,谷歌大脑和伦敦帝国理工学院的一个团队最近构建了一个系统——Pre-training with Extracted Gap-sentences for Abstractive Summarization,简称PEGASUS,利用谷歌的Transformer架构,并结合了针对文本摘要生成定制的预训练目标。

论文第一作者张敬卿来自帝国理工学院数据科学院,博士在读;张敬卿本科毕业于清华大学计算机科学与技术系,主要研究兴趣包括深度学习、数据挖掘、时间序列与文本挖掘、多模态问题与生成模型。

研究人员表示,该系统在12个摘要任务中均取得了最先进的结果(SOTA),这些任务涵盖新闻、科学、故事、使用说明、电子邮件、专利和立法法案等,并且在低资源摘要方面表现“惊人”,在只有1000个样本的6个数据集上超过了之前的最好结果

Pegasus模型:基于Transformer,5.68亿参数

正如研究人员指出的那样,文本摘要旨在根据输入文档生成准确而简洁的摘要。生成摘要并不是简单地复制输入里的片段,而是可能产生新的单词或涵盖主要信息,并使输出保持语言流畅。

Transformer是谷歌大脑的研究人员开发的一种神经网络架构。和其他深度神经网络一样,它们包含的功能(神经元)被布置在相互连接的层中,这些层传递输入数据的信号,并缓慢地调整每个连接的突触强度(权重)——这就是所有AI模型提取特征和学习做出预测的方式。但Transformer的独特指出在于,每个输出元素都连接到每个输入元素,并动态地计算它们之间的权重。

该团队设计了一项训练任务,在该任务中,文档中的重要句子被覆盖(masked)起来。AI必须利用网络和新闻文章来填补空白,包括那些包含在研究人员编纂的新语料库(HugeNews)中的文章。

在实验中,研究团队选择了性能最佳的Pegasus模型(有5.68亿参数),分别在从3.5亿个网页爬取的750GB文本的Common Crawl数据集,或从新闻网站收集的15亿篇文章、总计3.8TB的HugeNews数据集上进行训练。

结果证明,Pegasus生成的文本摘要在流畅性和连贯性方面都达到了很高的语言质量,而且它不需要采取额外的对策来减轻不流畅。此外,在只有100篇示例文章的低资源环境中,Pegasus生成的摘要质量可与在20000到200000篇完整的完整数据集上训练的模型相媲美。

总结本研究的贡献:

  • 我们提出了一种新的self-supervised的预训练目标,用于摘要总结、空缺句子生成,以及选择这些句子的学习策略。

  • 我们在广泛的摘要任务上评估了所提出的预训练目标,并选择了最佳的模型设置。我们使用这些设置来训练一个568M参数的PEGASUS模型,该模型在所有12个下游数据集上超过了SOTA,或与SOTA相当。

  • 我们展示了如何在几乎不受监督的情况下,通过微调PEGASUS模型在多个领域实现良好的摘要生成性能,而且仅使用1000个示例就可以在许多任务上超越以前的SOTA结果。

预训练目标GSG

在这项工作中,我们提出了一个新的预训练目标GSG(Gap Sentences Generation),但为了进行比较,我们也评估了BERT的掩码语言模型目标(masked-language model objective)。

Gap Sentences Generation (GSG)

我们假设,使用更接近下游任务的预训练目标,可以获得更好更快的微调性能。考虑到我们打算用于摘要生成,我们提出的预训练目标设计从输入文档生成类似摘要的文本。为了利用大量的文本语料库进行预训练,我们设计了一个序列到序列的自监督目标(self-supervised objective)。

图1: PEGASUS的基本架构是一个标准的Transformer encoder-decode。在这个例子中,GSG和MLM同时作为预训练目标。原始文本有三句话。一个句子被[MASK1]屏蔽,并用作目标生成文本(GSG)。其他两句话仍然保留在输入中,但是一些词被[MASK2] (MLM)随机屏蔽了。

为了更接近摘要,我们选择对文档来说重要/主要的句子。由此产生的目标既具有经验证明的masking的优势,又预期了下游任务的形式。

我们考虑3种主要的策略,用于选择m个空缺句子(gap sentences),而无需从文档中替换,文档记为,由n个句子组成:

Random:均匀地随机选择m个句子

Lead:选择前m个句子。

Principal:根据重要性选择得分最高的句子。根据重要性选择得分最高的句子。

重要性的计算公式是:

在这个公式中,句子是独立评分的(Ind),并选择最好的m。

图2显示了一个包含lead、random和principal三种策略的gap句子选择示例。

图2

掩码语言模型(Masked Language Model,MLM)

参考BERT,我们在输入文本中选择15%的tokens,所选择的tokens:(1)80%的时间被mask token替换[MASK2],或(2)10%的时间被随机token替换,或(3)10%的时间不变。我们应用MLM训练Transformer encoder,作为唯一的预训练目标或与GSG一起作为预训练目标。

图1显示了将GSG和MLM结合应用到同一个例子中的情况。然而,我们发现MLM并没有在大量的预训练步骤中改善下游任务,因此选择不将MLM应用到最终的PEGASUSLARGE模型。

评估结果:12大任务获得最优性能

图4:PEGASUSBASE在C4上预训练的效果。

图5:PEGASUSBASE在C4 (15% GSR, Ind-Orig)上训练词汇量的效果。

表1:与之前的SOTA相比,PEGASUSLARGE和PEGASUSBASE在所有下游数据集上的结果

表2:PEGASUSLARGE与XSum、CNN/DailyMail和Gigaword上其他预训练模型的比较。最佳结果用粗体显示。

表1和表2显示了PEGASUSBASE和PEGASUSLARGE在下游数据集上的性能改进。虽然PEGASUSBASE在许多数据集上都超过了当前的SOTA水平,但PEGASUSLARGE在使用HugeNews的所有下游数据集上都取得了比当前水平更好的结果,尽管C4在WikiHow上的表现更好。

图6:PEGASUSLARGE模型对一则CNN/DailyMail文本生成的摘要,它的ROUGE2-F值相对较低,为16,但在文本质量上相当好,而且事实上也很准确。

* 凡来源非注明“机器学习算法与Python学习原创”的所有作品均为转载稿件,其目的在于促进信息交流,并不代表本公众号赞同其观点或对其内容真实性负责。

推荐阅读

25岁就有娃,上交年度学霸火了!6块腹肌、歌赛冠军、Science一作

【下载】459页《Python深度学习》

视频剪辑什么鬼?Python 带你高效创作短视频

ICCV2019最佳论文SinGAN全面解读,看这一篇就懂了

GitHub标星两万的"Python抢票教程”,我们先帮你跑了一遍

这篇关于华人博士一作:自动生成摘要超越BERT!帝国理工谷歌提出新模型Pegasus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/782070

相关文章

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码