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

一、背景

在做生成式的文本生成时候,有基于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 Spaces​kexue.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 Spaces​kexue.fm/archives/7867正在上传…重新上传取消

三、实验对比

三者的实验效果如何呢?下面是以CSL数据集为例,文本生成效果的比对,其中t5采用了三种预训练模型

solutionRouge-LRouge-1Rouge-2BLEU
bert+unlim63.4966.1554.2844.19
bart64.6267.7256.0846.15
mt567.5170.4060.0051.28
t5_pegasus66.0769.0357.1846.46
uer_t564.0066.8354.7544.45

四、代码

全部代码测试都是基于bert4torch框架,这是一个基于pytorch的训练框架,前期以效仿和实现bert4keras的主要功能为主,特点是尽量简洁轻量,提供丰富示例,有兴趣的小伙伴可以试用,欢迎star。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值