文本生成哪家强?介绍常见的文本生成方案

一、背景

在做生成式的文本生成时候,有基于encoder-decoder结构的方案(如bart,t5之类);有基于unilm式的通过mask,使得仅使用encoder就可以做生成式,下面介绍一下这几种方案和效果。

二、常见方案介绍

1. bert+unilm

主要思路就是src和tgt拼接输入bert,但是对于src来说内部可以互相访问,但不可以访问tgt部分;对于tgt来说可以访问全部src,但是内部只能t时刻的token访问

文本生成哪家强?介绍常见的文本生成方案_第1张图片

UNILM做Seq2Seq模型图示。输入部分内部可做双向Attention,输出部分只做单向Attention。(图片来自科学空间)

从语言模型到Seq2Seq:Transformer如戏,全靠Mask - 科学空间|Scientific Spaces​kexue.fm/archives/6933正在上传…重新上传取消

2. bart

BART是Bert(encoder)和GPT(decoder)的综合,利用encoder双向建模能力的同时,保留自回归的特性。

文本生成哪家强?介绍常见的文本生成方案_第2张图片

Bart和bert,GPT的对比

预训练任务:用随机的噪声函数来破坏context,然后使用seq2seq模型来复原,加噪方式如下

文本生成哪家强?介绍常见的文本生成方案_第3张图片

加噪方式

文本生成哪家强?介绍常见的文本生成方案_第4张图片

不同噪音(扰动)的作用

3. t5

T5的预训练包含无监督和有监督两部分。无监督部分使用的是Google构建的近800G的语料(论文称之为C4),而训练目标则跟BERT类似,只不过改成了Seq2Seq版本,示意图如下

文本生成哪家强?介绍常见的文本生成方案_第5张图片

t5预训练任务样本示意图(图片原子科学空间)

那个屠榜的T5模型,现在可以在中文上玩玩了 - 科学空间|Scientific Spaces​kexue.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。

https://github.com/Tongjilibo/bert4torch/blob/master/examples/seq2seq​github.com/Tongjilibo/bert4torch/blob/master/example

你可能感兴趣的:(nlp,pytorch,bert)