还记得去年登顶 GLUE 的 ERNIE 预训练语言模型吗?近期,ERNIE 功力大增。不过,这次它挑战的是自然语言生成:在摘要生成、问题生成、多轮问答等五个语言生成任务上刷新了最优效果,并应用到了真实业务场景中。同时,相关论文已被人工智能顶级会议 IJCAI 2020 接收。
过去一年,百度提出的 ERNIE 通过持续学习海量数据中的知识在中英文十六个自然语言理解任务上取得领先效果,并在去年 12 月登顶权威评测榜单 GLUE 榜首。ERNIE 在工业界也得到了大规模应用,如搜索引擎、新闻推荐、广告系统、语音交互、智能客服等。2020年5月,研究团队又在自然语言生成任务上实现新的突破。
他们提出了首个基于多流(multi-flow)机制生成完整语义片段的预训练模型 ERNIE-GEN,显著提升了自然语言生成任务效果。借助飞桨的高效分布式训练优势,百度开源了 ERNIE-GEN 的英文预训练模型,并对开源工具进行了动静合一升级,核心代码精简了 59% 。
论文链接:https://arxiv.org/abs/2001.11314
项目地址: https://github.com/PaddlePaddle/ERNIE
自然语言处理主要包含语言理解和语言生成两大类任务。如新闻智能写作、文本自动摘要、智能诗歌创作都属于自然语言处理生成任务。之前的预训练模型主要关注语言理解类任务,在生成任务上还处于一个探索阶段。因此百度的研究人员对生成预训练技术进行了深入的探索和研究。
以 BERT、ERNIE 为代表的语言理解预训练模型只进行了编码器的表征学习。而基于序列到序列 (Seq2Seq) 的语言生成技术不仅依赖编码器获取源文本的语义表示,还需要解码器对目标文本进行序列预测。早期的一些工作,如 MASS 和 UniLM 等模型,将 mask language model 与 Seq2Seq 框架结合,通过预训练阶段联合学习编码器和解码器,在下游生成任务上取得了显著的提升。但这些研究工作,对语言生成中的一些难点问题还未涉及,例如:
·预测粒度:传统的生成模型是进行逐词预测的,而人类通常是以语义完整的短语作为写作构思的单元。例如,当人在写作时,会将「New York」作为一个整体思考,而不是「New」->「York」逐词思考。
·曝光偏差:在预测第 n 个目标词时,训练阶段以 ground-truth 中的前 n-1 个词作为输入,而解码阶段把模型自己生成的前 n-1 个词当作输入。这种有偏的学习方式会在上文生成质量不佳时,导致后续生成的错误累积。
·编码与解码的交互:在自然文本的段落中,往往距离越远的句子关联性越弱。之前的工作在预训练时,在输入的文本中选一个连续片段作为目标文本,其余作为源文本。随着输入文本长度的增加,源文本和目标文本的距离增大、关联性减弱,导致预训练阶段无法充分学习编码器和解码器的交互。
针对以上问题,百度的研究人员提出了首个基于多流机制生成完整语义片段的预训练模型 ERNIE-GEN,显著提升包括摘要生成、问题生成、多轮问答等自然语言生成任务效果。
模型介绍:逐片段生成任务
ERNIE-GEN 在生成预训练中提出了逐片段 (span-by-span) 生成任务的训练目标。片段(span)是 1 到 3 个词组成的 N-Gram。在生成时,模型对每个片段进行整体预测,片段内部词的生成互不依赖。这种训练方式让模型具备短语粒度的生成能力,能够提升生成质量。
为了保证每个片段都是一个语义完整的短语,ERNIE-GEN 在预训练语料中根据 T 检验统计语义紧密的 N-Gram 词表,用该词表将输入文本切分成片段序列。
填充生成机制
传统的自回归生成模型用第 n-1 个词隐层输出的表示来预测第 n 个词,当前词的生成强依赖于上一个词。在训练中第 n-1 个词总是正确的,而解码时如果第 n-1 个词生成错误,会对第 n 个词的生成形成很强的干扰。更严重的是,沿着这条生成路径会快速地产生错误累积。
为了解决这个问题,ERNIE-GEN 在训练和解码时用统一的「[ATTN]」和第 n 个位置编码作为生成第 n 个词的底层输入。「[ATTN]」与前 n-1 个词根据词义信息和位置信息进行 Self-Attention 计算,自适应地将上文中的重要信息「填充」(infilling)到当前词的表示中,用以进行预测。这种生成方式减小了对上一个词的依赖,训练和解码的一致性减弱了曝光偏差。
填充生成机制:左图为 word-by-word 生成,右图为 span-by-span 生成
噪声感知生成方法
为了进一步强化编码器的鲁棒性,ERNIE-GEN 在训练时按一定概率将目标文本中的词替换成噪声,用来模拟解码时的生成错误,提升模型排除错误干扰的能力。研究者在实验中发现,仅用简单的随机词替换策略就能较好地提升生成效果。
多片段-多粒度目标片段采样
为了解决预训练时单一的目标片段采样导致编码器、解码器交互弱的问题,ERNIE-GEN 使用了多目标片段的采样策略,使源文本片段和目标文本片段充分交叉,增强二者的关联性,有利于编码器和解码器的联合学习。同时,考虑到学习目标的多样性,在采样目标片段时使用了两种不同的长度分布。
Multi-Flow 框架
为了实现上述的填充生成机制和逐片段生成,ERNIE-GEN 基于 transformer 设计了 multi-flow attention 结构。其中 contextual flow 用于提供上文的表示;word- by-word flow 和 span-by-span flow 均由「[ATTN]」占位符+位置编码的序列构成,二者根据不同的掩码矩阵分别实现 word 粒度和 span 粒度的生成。
实验
ERNIE-GEN 使用了与 UniLM 相同的预训练数据(维基百科和 BookCorpus 数据,总共 16GB),基于飞桨 PaddlePaddle 在英伟达 v100 GPU 上进行训练。ERNIE-GEN 在摘要生成、问题生成、多轮问答和对话 4 类生成任务的 5 个公开数据集上进行了微调实验,均取得了 最优效果。
摘要生成
ERNIE-GEN 在 Gigaword 和 CNN/DailyMail 两个摘要数据集上都优于同参数规模、同预训练数据的 UniLM,尤其是在低资源数据集(Gigaword 10k)上提升显著。在 CNN/DailyMail 数据集上,与 T5、BERT、PEGASUS 等参数和数据明显占优的模型相比,ERNIE-GEN 取得了最优的 Rouge-L 效果。
1.Gigaword:
2.CNN/DailyMail:
问题生成
ERNIE-GEN 在 SQuAD 阅读理解问题生成任务的两种数据集合设置下,效果均优于此前效果最佳的 UniLM。
多轮问答
在多轮问答数据集 CoQA 上,ERNIE-GEN 与 UniLM 相比,F1 提升 2 个点,刷新了该数据集上最优的生成式结果。
总结
ERNIE-GEN 开源项目包含飞桨静态图、动态图两个版本。基于更大规模预训练数据集的 ERNIE-GEN 也正式发布在 GitHub 上:https://github.com/PaddlePaddle/ERNIE/
除了上述公开数据集外,ERNIE-GEN 已经在新闻标题生成等真实业务场景进行了应用,后续还将支持机器翻译等更多类型的生成任务。未来百度将更深入地研究语言生成技术,助力此项技术发挥更多的商业和社会价值。
-------------------
扫码关注百度NLP官方公众号,获取百度NLP技术的第一手资讯!
加入ERNIE官方技术交流群(958422639),百度工程师实时为您答疑解惑!
立即前往GitHub( github.com/PaddlePaddle/ERNIE )为ERNIE点亮Star,马上学习和使用起来吧!
mark 一下