一、背景
在做生成式的文本生成时候,有基于encoder-decoder结构的方案(如bart,t5之类);有基于unilm式的通过mask,使得仅使用encoder就可以做生成式,下面介绍一下这几种方案和效果。
二、常见方案介绍
1. bert+unilm
主要思路就是src和tgt拼接输入bert,但是对于src来说内部可以互相访问,但不可以访问tgt部分;对于tgt来说可以访问全部src,但是内部只能t时刻的token访问<t的token,loss计算通过mask只计算tgt序列的loss,更细节的解释访问科学空间的链接。
UNILM做Seq2Seq模型图示。输入部分内部可做双向Attention,输出部分只做单向Attention。(图片来自科学空间)
从语言模型到Seq2Seq:Transformer如戏,全靠Mask - 科学空间|Scientific Spaceskexue.fm/archives/6933正在上传…重新上传取消
2. bart
BART是Bert(encoder)和GPT(decoder)的综合,利用encoder双向建模能力的同时,保留自回归的特性。
Bart和bert,GPT的对比
预训练任务:用随机的噪声函数来破坏context,然后使用seq2seq模型来复原,加噪方式如下
加噪方式
不同噪音(扰动)的作用
3. t5
T5的预训练包含无监督和有监督两部分。无监督部分使用的是Google构建的近800G的语料(论文称之为C4),而训练目标则跟BERT类似,只不过改成了Seq2Seq版本,示意图如下
t5预训练任务样本示意图(图片原子科学空间)
那个屠榜的T5模型,现在可以在中文上玩玩了 - 科学空间|Scientific Spaceskexue.fm/archives/7867正在上传…重新上传取消
三、实验对比
三者的实验效果如何呢?下面是以CSL数据集为例,文本生成效果的比对,其中t5采用了三种预训练模型
solution | Rouge-L | Rouge-1 | Rouge-2 | BLEU |
---|---|---|---|---|
bert+unlim | 63.49 | 66.15 | 54.28 | 44.19 |
bart | 64.62 | 67.72 | 56.08 | 46.15 |
mt5 | 67.51 | 70.40 | 60.00 | 51.28 |
t5_pegasus | 66.07 | 69.03 | 57.18 | 46.46 |
uer_t5 | 64.00 | 66.83 | 54.75 | 44.45 |
四、代码
全部代码测试都是基于bert4torch框架,这是一个基于pytorch的训练框架,前期以效仿和实现bert4keras的主要功能为主,特点是尽量简洁轻量,提供丰富示例,有兴趣的小伙伴可以试用,欢迎star。