基于预训练的中文seq2seq任务调研

前言

目前基于BERT的预训练语言模型在中文的文本理解任务上已经有了非常完善的Benchmark、预训练模型以及工具,而基于预训练语言模型的文本生成任务,尤其是中文场景下的seq2seq预训练任务的研究相对而言还不够充分,本文将对此场景进行系统的调研和整理。

整体概览

目前CLUEbenchmark也开源了中文文本生成的benchmark:CLGE,但是没有进行持续维护。

为对比不同模型,采用了seq2seq中广泛应用的文本摘要任务进行(只研究生成式摘要模型)。下表中报告了英文CNN/Daily数据集的模型效果和中文LCSTS模型效果。其中CNN/Daily的结果直接采用原论文中的数据,LCSTS的结果为本人自己复现,具体细节可参见项目chinese-pretrained-seq2seq

为对照预训练模型的提升,也报告了传统LSTM+Attention的效果,基于OpenNMT实现。

模型结构 时间 英文CNN/Daily效果(R-1/R-2/R-L) 中文版模型 中文LCSTS效果(R-1/R-2/R-L)
LSTM+Attention 2014 39.12 / 17.35 / 36.12 - 33.62 / 20.89 / 31.89
BERT2BERT 2020.4 40.10 / 18.95 / 37.39 可直接加载BERT模型,如Chinese-BERT-wwm系列
UniLM V1 2019.10 43.33 / 20.21 / 40.51 云问科技开源版本
BART 2019.10 44.16 / 21.28 / 40.90 暂无
GPT-2 2019.2 29.34 / 8.27 / 26.58 Morizeyao/GPT2-Chinese
T5 2020.7 42.05 / 20.34 / 39.40 基于官方mT5提取的中文版
PEGASUS 2020.7 41.79 / 18.81 / 38.93 追一科技: T5 PEGASUS

CNN/Daily benchmark:https://paperswithcode.com/sota/document-summarization-on-cnn-daily-mail

模型介绍

BERT2BERT

论文:Leveraging Pre-trained Checkpoints for Sequence Generation Tasks

模型简介:

基于Transformers架构进行seq2seq任务,不过将现有的BERT权重对模型进行进行初始化

不同程度初始化结论:RND2RND << BERT2RND < BERT2BERT < BERTSHARE

不同权重初始化结论:BERT < Roberta

代码实现:

中文开源模型:可使用哈工大讯飞联合实验室开源的一系列BERT类模型,https://huggingface.co/hfl

开源实现:

(Tranformers)https://huggingface.co/transformers/model_doc/bertgeneration.html

自己复现:

(Tranformers)https://github.com/nghuyong/chinese-pretrained-seq2seq/tree/master/models/bert2bert

UniLM V1

论文:Unified Language Model Pre-training for
Natural Language Understanding and Generation

模型简介:

训练阶段:通过不同的MASK矩阵,设计4种训练任务:Masked LM (1/3),Left-Right LM,Right-Left LM(1/6),Seq2Seq LM(1/3)

Seq2Seq微调阶段:构建序列”[SOS] SRC [EOS] TGT [EOS]”,在TGT序列中随机MASK一定比列(70%)的Token,训练任务为Seq2Seq LM。注意这里的[EOS]也可能会被MASK,让模型学习如何停止一个句子。

代码实现:

中文开源模型:目前没有官方开源的UniLM中文模型。由于UniLM模型与BERT模型完全一致,可以直接加载BERT类模型;云问科技开源了自己训练的UniLM中文模型,https://github.com/YunwenTechnology/Unilm

开源实现:

(Keras)https://github.com/bojone/bert4keras

(Transformers)https://github.com/YunwenTechnology/Unilm

BART

论文:BART: Denoising Sequence-to-Sequence Pre-training for Natural
Language Generation, Translation, and Comprehension

模型简介:

BART是基于Transformer的编码解码结构,编码器部分是与BERT一致的双向语言模型,解码器部分是GPT一致的单项语言模型,通过MASK实现。

BART的创新之处是提出了一系列的”噪音”方式,构建预训练任务为,输入带噪音的序列,需要输出原始的序列。

噪音包括:Token MASK,Delete,Infill;Sentence Permutation,Document Rotation

代码实现:

中文开源模型:目前没有

开源实现:

(Transformers)https://github.com/huggingface/transformers

GPT-2

论文:Language Models are Unsupervised Multitask Learners

模型简介:

模型结构与GPT-1一致,但是运用了更多的训练数据(40G),以及更大的网络容量(48层,15亿)。

GPT-2最大的创新是不对具体的任务进行建模,而是构建了一个通用的模型,模型的输入包括具体的任务以及任务的参数,例如”(翻译成英文,北京是中国首都)”,所以该模型可以直接做zero-shot learning。

代码实现:

中文开源模型:(Transformers)https://github.com/Morizeyao/GPT2-Chinese

开源实现:(Transformers)https://github.com/huggingface/transformers

T5

论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

模型简介:

采用Encoder-Decoder的Transformer架构,并将所有 NLP 任务都转化成 Text-to-Text (文本到文本)任务,用同样的模型,同样的损失函数,同样的训练过程,同样的解码过程来完成所有 NLP 任务;这点与GPT-2类似,模型的输入为任务标识和具体的任务参数。

最大的贡献是通过系统的实验,得出了预训练的最佳实践方式

  • Transformer Encoder-Decoder 模型;
  • BERT-style 式的破坏方法;
  • Replace Span 的破坏策略;
  • 15 %的破坏比;
  • 3 的破坏时小段长度。

代码实现:

中文开源模型:从mT5中提取中文部分(Keras)https://github.com/bojone/t5_in_bert4keras

开源实现:

(Tensorflow)https://github.com/google-research/text-to-text-transfer-transformer

(Transformers)https://github.com/huggingface/transformers

(Keras)https://github.com/bojone/bert4keras

PEGASUS

论文: PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization

模型简介:

假设预训练目标与下游任务越接近的话,那么finetune会带来更好更快的表现。所以为了文本摘要任务定制了一个预训练的任务GSG(Gap Sentences Generation)。

在预训练阶段采用GSG与MLM两个预训练任务,MLM优化Encoder部分,GSG优化全局的seq2seq部分。

重点在于贡献了一种构建无监督摘要数据的方法,即挑选出文档中”重要”的句子并MASK作为文档的”伪摘要”。

代码实现:

中文开源模型与实现:

(Transformers)https://github.com/renmada/t5-pegasus-pytorch

(Keras)https://github.com/ZhuiyiTechnology/t5-pegasus

小结

  1. 没有官方开源的中文版本的生成式模型,都是民间自己训的,实际效果未知
  2. 相比于文本理解任务,生成任务在中文场景尚缺乏一个好的benchmark,所以不知具体选哪个模型
  3. 从英文上的效果来看,BART > UniLM V1 > T5 > BERT2BERT > GPT2
  4. 针对特定的任务设计的预训练模型,例如在摘要任务上PEGASUS要明显优于通用的预训练语言模型