1 Star 0 Fork 0

百度开源 / ERNIE-GEN

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

English | 简体中文

ERNIE-GEN: An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation

关于算法的详细描述,请参见我们的论文:

ERNIE-GEN:An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation

Dongling Xiao*, Han Zhang*, Yukun Li, Yu Sun, Hao Tian, Hua Wu, Haifeng Wang (* : equal contribution)

Preprint January 2020

Accepted by IJCAI-2020

ERNIE-GEN Gigaword Gigaword SQuAD Personal-Chat CoQA

ERNIE-GEN 是面向生成任务的预训练-微调框架,首次在预训练阶段加入span-by-span 生成任务,让模型每次能够生成一个语义完整的片段。在预训练和微调中通过填充式生成机制噪声感知机制来缓解曝光偏差问题。此外, ERNIE-GEN 采样多片段-多粒度目标文本采样策略, 增强源文本和目标文本的关联性,加强了编码器和解码器的交互。

模型框架

我们提出了三种方法来提高语言生成能力:

  • Span-by-span 生成任务: 让模型能够每次生成一个语义完整的片段。
  • 填充式生成噪声感知生成: 缓解曝光偏差问题。
  • 多片段-多粒度目标文本采样: 预训练阶段增强编码器和解码器的交互。

我们基于 Transformer 模型设计了 Mulit-Flow Attention 框架,用于实现 span-by-span 的填充式生成。

multi-flow-attention

预训练模型

我们发布了 ERNIE-GEN base 模型和 ERNIE-GEN large 模型。 预训练数据使用英文维基百科和 BookCorpus,总共16GB。此外,我们还发布了基于 430GB 语料(数据描述见ERNIE-GEN Appendix A.1)预训练的ERNIE-GEN large 模型。

微调任务

我们在五个典型生成任务上与当前效果最优的生成预训练模型(UniLMMASSPEGASUSBARTT5等)进行对比, 包括生成式摘要 (Gigaword 和 CNN/DailyMail), 问题生成(SQuAD), 多轮对话(Persona-Chat) 和生成式多轮问答(CoQA)。

生成式摘要

  • Gigaword

在 Gigaword-10k (Gigaword 的子集) 上的效果:

模型 数据量 / 参数量 Rouge-1 Rouge-2 Rouge-L
UniLM 16G / 340M 34.21 15.28 31.54
ENRIE-GEN base 16G / 110M 33.75 15.23 31.35
ERNIE-GEN large 16G / 340M 35.05 16.10 32.50
ERNIE-GEN large (430G) 430G / 340M 35.51 16.79 33.23

在 Gigaword 上的效果:

模型 数量 / 参数量 Rouge-1 Rouge-2 Rouge-L
MASS 18G / 160M 38.73 19.71 35.96
BERTSHARE 16G / 110M 38.13 19.81 35.62
UniLM 16G / 340M 38.45 19.45 35.75
PEGASUS (C4) 750G / 568M 38.75 19.96 36.14
PEGASUS (HugeNews) 3.8T / 568M 39.12 19.86 36.24
ENRIE-GEN base 16G / 110M 38.83 20.04 36.20
ERNIE-GEN large 16G / 340M 39.25 20.25 36.53
ERNIE-GEN large (430G) 430G / 340M 39.46 20.34 36.74

我们按照 UniLM 的方式处理了数据,下载链接 Gigaword

  • CNN/Daily Mail

在 CNN/Daily Mail 上的效果:

模型 数据量 /参数量 Rouge-1 Rouge-2 Rouge-L
MASS 18G / 160M 42.12 19.50 39.01
UniLM 16G / 340M 43.33 20.21 40.51
T5 large 750G / 340M 42.50 20.68 39.75
T5 xlarge 750G / 11B 43.52 21.55 40.69
BART 160G / 400M 44.16 21.28 40.90
PEGASUS (C4) 750G / 568M 43.90 21.20 40.76
PEGASUS (HugeNews) 3.8T / 568M 44.17 21.47 41.11
ENRIE-GEN base 16G / 110M 42.30 19.92 39.68
ENRIE-GEN large 16G / 340M 44.02 21.17 41.26
ENRIE-GEN large (430G) 430G / 340M 44.31 21.35 41.60

我们按照 UniLM 的方式处理了数据,下载链接 CNN/Daily Mail

问题生成

  • SQuAD

在 SQuAD 1.1 数据集上的效果(测试集划分按照 [Du et al., 2017]) :

模型 BLEU-4 METEOR Rouge-L
SemQG 18.37 22.65 46.68
UniLM large (beam size=1) 22.12 25.06 51.07
ENRIE-GEN base (beam size=1) 22.28 25.13 50.38
ERNIE-GEN large (beam size=1) 24.03 26.31 52.36
ERNIE-GEN large (beam size=5) 25.40 26.92 52.84
ERNIE-GEN large (beam size=5) + (430G) 25.41 26.77 52.91

按照 [Zhao et al., 2018] 反向使用验证集和测试集,效果如下:

Model BLEU-4 METEOR Rouge-L
SemQG 20.76 24.20 48.91
UniLM large (beam size=1) 23.75 25.61 52.04
ENRIE-GEN base (beam size=1) 23.52 25.61 51.45
ERNIE-GEN large (beam size=1) 25.57 26.89 53.31
ERNIE-GEN large (beam size=5) 26.95 27.57 53.77
ERNIE-GEN large (beam size=5) + (430G) 27.05 27.43 53.83

*我们增加了将 beam size 扩大到 5 的结果。

我们按照 UniLM 的方式处理了数据,下载链接 SQuAD

多轮对话

  • Personal-Chat
Model BLEU-1 BLEU-2 Distinct-1 Distinct-2
LIC 40.5 32.0 0.019 0.113
PLATO 45.8 35.7 0.012 0.064
PLATO w/o latent 40.6 31.5 0.021 0.121
ERNIE-GEN large 46.8 36.4 0.023 0.168

我们处理的数据下载链接 Personal-Chat

生成式多轮问答

  • CoQA

在 CoQA 验证集上的效果:

模型 F1-score
Seq2Seq 27.5
PGNet 45.4
UniLM large 82.5
ERNIE-GEN large 84.5

我们对原始的 CoQA 数据集进行了处理,下载链接 CoQA

使用说明

安装飞桨

我们的代码基于 Paddle Fluid 1.7 和 Python 2.7。 ERNIE-GEN 依赖的其他模块也列举在 requirements.txt,可以通过下面的指令安装:

pip install -r requirements.txt

运行微调

在运行 ERNIE-GEN 前,需要将 CUDA 、cuDNN 、NCCL2 的动态库路径添加到 LD_LIBRARY_PATH 。 我们把下游任务的参数配置文件放到了 config/ ,可以简单地通过配置文件运行。 例如,您可以通过下面的指令在 Gigaword 数据集上微调 ERNIE-GEN base 模型:

MODEL="base"      # base or large or large_430g
TASK="gigaword"   # cnndm, coqa, gigaword, squad_qg or persona-chat
sh run_seq2seq.sh ./configs/${MODEL}/${TASK}_conf

训练和评估的日志在 log/job.log.0。 如果要在您自己的数据集上微调,可以参考我们提供的数据格式处理自己的数据。

我们的微调实验在 8 张 32GB 显存的英伟达 V100 GPU 上运行,如果您的 GPU 显存不够,可以减小配置文件中的 batch_size 。

注意: 训练时实际的 batch size 等于 配置的 batch size * GPU 卡数

使用动态图

动态图版本的 ERNIE-GEN 代码更加简洁灵活,使用请参考 ERNIE-GEN Dygraph

中文生成任务使用 ERNIE 1.0

ERNIE-GEN 的代码兼容 ERNIE 1.0 模型,修改配置文件中模型和数据相关的设置,就可以用 ERNIE 1.0 在中文生成任务上微调。

引用

可以按下面的格式引用我们的论文:

@article{xiao2020ernie-gen,
  title={ERNIE-GEN: An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation},
  author={Xiao, Dongling and Zhang, Han and Li, Yukun and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng},
  journal={arXiv preprint arXiv:2001.11314},
  year={2020}
}

空文件

简介

最强文本生成预训练模型正式开源 展开 收起
Perl 等 3 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/baidu/ERNIE-GEN.git
git@gitee.com:baidu/ERNIE-GEN.git
baidu
ERNIE-GEN
ERNIE-GEN
master

搜索帮助