English | 简体中文
关于算法的详细描述,请参见我们的论文:
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 是面向生成任务的预训练-微调框架,首次在预训练阶段加入span-by-span 生成任务,让模型每次能够生成一个语义完整的片段。在预训练和微调中通过填充式生成机制和噪声感知机制来缓解曝光偏差问题。此外, ERNIE-GEN 采样多片段-多粒度目标文本采样策略, 增强源文本和目标文本的关联性,加强了编码器和解码器的交互。
我们提出了三种方法来提高语言生成能力:
我们基于 Transformer 模型设计了 Mulit-Flow Attention 框架,用于实现 span-by-span 的填充式生成。
我们发布了 ERNIE-GEN base 模型和 ERNIE-GEN large 模型。 预训练数据使用英文维基百科和 BookCorpus,总共16GB。此外,我们还发布了基于 430GB 语料(数据描述见ERNIE-GEN Appendix A.1)预训练的ERNIE-GEN large 模型。
我们在五个典型生成任务上与当前效果最优的生成预训练模型(UniLM、MASS、PEGASUS、BART、T5等)进行对比, 包括生成式摘要 (Gigaword 和 CNN/DailyMail), 问题生成(SQuAD), 多轮对话(Persona-Chat) 和生成式多轮问答(CoQA)。
在 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 上的效果:
模型 | 数据量 /参数量 | 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 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。
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 验证集上的效果:
模型 | 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-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}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。