基于预训练的中文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是基于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
小结
- 没有官方开源的中文版本的生成式模型,都是民间自己训的,实际效果未知
- 相比于文本理解任务,生成任务在中文场景尚缺乏一个好的benchmark,所以不知具体选哪个模型
- 从英文上的效果来看,BART > UniLM V1 > T5 > BERT2BERT > GPT2
- 针对特定的任务设计的预训练模型,例如在摘要任务上PEGASUS要明显优于通用的预训练语言模型
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!