NLP之ERNIE:ERNIE的简介、安装和使用方法、案例应用之详细攻略
目录
《ERNIE: Enhanced Representation through Knowledge Integration》翻译与解读
2022.8.18,图文跨模态预训练模型ERNIE-ViL 2.0 (base) 正式开源
2022.5.20,最新开源ERNIE 3.0系列预训练模型:
2021.12.3,多语言预训练模型ERNIE-M 正式开源
2020.9.24,ERNIE-ViL 技术发布! (点击进入)
2020.5.20,ERNIE-GEN 模型正式开源! (点击进入)
相关论文
《ERNIE: Enhanced Representation through Knowledge Integration》翻译与解读
地址 |
论文地址:https://arxiv.org/abs/1904.09223 |
时间 |
2019年4月19日 |
作者 |
Yu Sun, Shuohuan Wang, Yukun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xin Tian, Danxiang Zhu, Hao Tian, Hua Wu Baidu |
总结 |
此论文提出了一种新的语言表示模型ERNIE(通过知识增强的语言表示),主要解决传统语言模型忽略语句中的先验知识信息的问题。 背景痛点: >> 传统语言模型如BERT等主要通过预测遮蔽词得到语义信息,但忽略了语句中的实体和短语等先验知识。 >> 无法利用实体和关系等外部知识来指导词向量学习,难以获得坚实的语义语言表示。 具体解决方案: >> ERNIE采用知识遮蔽策略,不仅实现词级遮蔽,还实施短语级和实体级的遮蔽策略。 >> 短语和实体作为一个整体进行遮蔽和预测,强化模型学习短语和实体内隐含的语法和语义信息。 >> 避免直接添加知识嵌入,而是通过多阶段遮蔽任务隐式学习知识,有更好的泛化能力。 核心特点: >> 充分利用语句里面实体和关系等外部知识 >> 隐式学习知识而不是直接使用知识向量 >> 语义表示能力更强,知识推理能力更好 优势: >> 在5个典型中文自然语言处理任务上均突破状态端,取得新的最优结果 >> 闭环测试表明知识推理能力更强 >> 代码和预训练模型公开提供 综上,ERNIE通过知识遮蔽策略有效地将语句知识集成到语言模型训练中,解决了传统模型忽略知识信息的问题,显著提升了语言表示质量和模型效果。 |
Abstract
We present a novel language representation model enhanced by knowledge called ERNIE (Enhanced Representation through kNowl-edge IntEgration). Inspired by the mask-ing strategy of BERT (Devlin et al., 2018), ERNIE is designed to learn language represen-tation enhanced by knowledge masking strate-gies, which includes entity-level masking and phrase-level masking. Entity-level strategy masks entities which are usually composed of multiple words. Phrase-level strategy masks the whole phrase which is composed of several words standing together as a conceptual unit. Experimental results show that ERNIE outper-forms other baseline methods, achieving new state-of-the-art results on five Chinese natu-ral language processing tasks including nat-ural language inference, semantic similarity, named entity recognition, sentiment analysis and question answering. We also demonstrate that ERNIE has more powerful knowledge in-ference capacity on a cloze test. |
我们提出了一种由知识增强的新型语言表示模型,称为ERNIE(Enhanced Representation through kNowl-edge IntEgration)。受到BERT(Devlin等人,2018)的掩码策略启发,ERNIE旨在通过知识掩码策略学习语言表示,其中包括实体级别的掩码和短语级别的掩码。实体级别的策略掩盖了通常由多个词组成的实体。短语级别的策略掩盖了整个短语,该短语由几个词一起作为一个概念单元。实验结果表明,ERNIE在五个中文自然语言处理任务上表现优异,包括自然语言推理、语义相似性、命名实体识别、情感分析和问答,取得了新的最先进成果。我们还展示了ERNIE在填空测试中具有更强大的知识推理能力。 |
5、Conclusion
In this paper, we presents a novel method to inte-grate knowledge into pre-training language model. Experiments on 5 Chinese language processing tasks show that our method outperforms BERT over all of these tasks. We also confirmed that both the knowledge integration and pre-training on het-erogeneous data enable the model to obtain better language representation. In future we will integrate other types of knowl-edge into semantic representation models, such as using syntactic parsing or weak supervised signals from other tasks. In addition We will also validate this idea in other languages. |
在本文中,我们提出了一种将知识整合到预训练语言模型中的新方法。对5个中文语言处理任务的实验证明,我们的方法在所有这些任务上优于BERT。我们还确认了知识整合和在异构数据上的预训练使模型能够获得更好的语言表示。 在未来,我们将将其他类型的知识整合到语义表示模型中,例如使用句法解析或来自其他任务的弱监督信号。此外,我们还将在其他语言中验证这个想法。 |
ERNIE的简介
文心大模型ERNIE是百度发布的产业级知识增强大模型,涵盖了NLP大模型和跨模态大模型。2019年3月,开源了国内首个开源预训练模型文心ERNIE 1.0,此后在语言与跨模态的理解和生成等领域取得一系列技术突破,并对外开源与开放了系列模型,助力大模型研究与产业化应用发展。提醒: ERNIE老版本代码已经迁移至repro分支,欢迎使用我们全新升级的基于动静结合的新版ERNIE套件进行开发。另外,也欢迎上EasyDL、BML体验更丰富的功能。
GitHub地址:GitHub – PaddlePaddle/ERNIE: Official implementations for various pre-training models of ERNIE-family, covering topics of Language Understanding & Generation, Multimodal Understanding & Generation, and beyond.
GitHub地址02:GitHub – thunlp/ERNIE: Source code and dataset for ACL 2019 paper “ERNIE: Enhanced Language Representation with Informative Entities”
1、开源Roadmap
2022.8.18,图文跨模态预训练模型ERNIE-ViL 2.0 (base)
正式开源
2022.5.20,最新开源ERNIE 3.0系列预训练模型:
- 74M轻量级通用模型ERNIE 3.0 Medium
- 280M参数重量级通用模型ERNIE 3.0 XBase
- 110M参数通用模型ERNIE 3.0 Base
- 新增语音-语言跨模态模型ERNIE-SAT 正式开源
- 新增ERNIE-Gen(中文)预训练模型,支持多类主流生成任务:主要包括摘要、问题生成、对话、问答
- 动静结合的文心ERNIE开发套件:基于飞桨动态图功能,支持文心ERNIE模型动态图训练。您仅需要在模型训练开启前,修改一个参数配置,即可实现模型训练的动静切换。
- 将文本预处理、预训练模型、网络搭建、模型评估、上线部署等NLP开发流程规范封装。
- 支持NLP常用任务:文本分类、文本匹配、序列标注、信息抽取、文本生成、数据蒸馏等。
- 提供数据清洗、数据增强、分词、格式转换、大小写转换等数据预处理工具。
2021.12.3,多语言预训练模型ERNIE-M
正式开源
2021.5.20,ERNIE 最新开源四大预训练模型:
- 语言与视觉一体的预训练模型
ERNIE-UNIMO
正式开源 - 融合场景图知识的跨模态预训练模型教程
ERNIE-ViL
正式开源 - 超长文本双向建模预训练模型
ERNIE-Doc
正式开源 - 多粒度语言知识模型
ERNIE-Gram
正式开源
2020.9.24,ERNIE-ViL
技术发布! (点击进入)
- 五项视觉-语言下游任务取得最好效果,视觉常识推理榜单取得第一。
- 面向视觉-语言知识增强的预训练框架,首次在视觉-语言预训练引入结构化的知识。
- 利用场景图中的知识,构建了物体、属性和关系预测任务,精细刻画模态间细粒度语义对齐。
2020.5.20,ERNIE-GEN
模型正式开源! (点击进入)
- 精巧的 Mulit-Flow Attention 实现框架。
- 提出填充式生成机制和噪声感知机制来缓解曝光偏差问题。
- 首次在预训练阶段加入span-by-span 生成任务,让模型每次能够生成一个语义完整的片段。
- 最强文本生成预训练模型正式开源,相关工作已被
IJCAI-2020
收录。- 首次把 ERNIE 预训练技术能力扩展至文本生成领域,在多个典型任务上取得最佳。
- 您现在即可下载论文报告的所有模型(包含 base/large/large-430G)。
- 2020.4.30 发布ERNIESage, 一种新型图神经网络模型,采用ERNIE做为aggreagtor. 由PGL实现。
- 2020.3.27 在SemEval2020五项子任务上夺冠。
- 2019.12.26 GLUE榜第一名。
- 2019.11.6 发布ERNIE Tiny。
2019.7.7 发布ERNIE 2.0
2019.3.16 发布ERNIE 1.0
2、预训练模型介绍
- 参考预训练模型原理介绍:模型介绍
- 预训练模型下载:进入./applications/models_hub目录下,下载示例:
#进入预训练模型下载目录cd ./applications/models_hub#下载ERNIE3.0 base模型sh downlaod_ernie_3.0_base_ch.sh
- 更多开源模型,见Research
3、数据集下载
CLUE数据集
DuIE2.0数据集
MSRA_NER数据集
4、模型效果评估
评估数据集
- 分类和匹配采用CLUE数据集。
CLUE 评测结果:
配置 | 模型 | CLUEWSC2020 | IFLYTEK | TNEWS | AFQMC | CMNLI | CSL | OCNLI | 平均值 |
---|---|---|---|---|---|---|---|---|---|
24L1024H | RoBERTa-wwm-ext-large | 90.79 | 62.02 | 59.33 | 76.00 | 83.88 | 83.67 | 78.81 | 76.36 |
20L1024H | ERNIE 3.0-XBase | 91.12 | 62.22 | 60.34 | 76.95 | 84.98 | 84.27 | 82.07 | 77.42 |
12L768H | RoBERTa-wwm-ext-base | 88.55 | 61.22 | 58.08 | 74.75 | 81.66 | 81.63 | 77.25 | 74.73 |
12L768H | ERNIE 3.0-Base | 88.18 | 60.72 | 58.73 | 76.53 | 83.65 | 83.30 | 80.31 | 75.63 |
6L768H | RBT6, Chinese | 75.00 | 59.68 | 56.62 | 73.15 | 79.26 | 80.04 | 73.15 | 70.99 |
6L768H | ERNIE 3.0-Medium | 79.93 | 60.14 | 57.16 | 74.56 | 80.87 | 81.23 | 77.02 | 72.99 |
具体评测方式
- 以上所有任务均基于 Grid Search 方式进行超参寻优。分类任务训练每间隔 100 steps 评估验证集效果,取验证集最优效果作为表格中的汇报指标。
- 分类任务 Grid Search 超参范围: batch_size: 16, 32, 64; learning rates: 1e-5, 2e-5, 3e-5, 5e-5;因为 CLUEWSC2020 数据集较小,所以模型在该数据集上的效果对 batch_size 较敏感,所以对 CLUEWSC2020 评测时额外增加了 batch_size = 8 的超参搜索; 因为CLUEWSC2020 和 IFLYTEK 数据集对 dropout 概率值较为敏感,所以对 CLUEWSC2020 和 IFLYTEK 数据集评测时增加dropout_prob = 0.0 的超参搜索。
下游任务的固定超参配置
分类和匹配任务:
TASK | AFQMC | TNEWS | IFLYTEK | CMNLI | OCNLI | CLUEWSC2020 | CSL |
---|---|---|---|---|---|---|---|
epoch | 3 | 3 | 3 | 2 | 5 | 50 | 5 |
max_seq_length | 128 | 128 | 128 | 128 | 128 | 128 | 256 |
warmup_proportion | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
ERNIE模型Grid Search 最优超参
Model | AFQMC | TNEWS | IFLYTEK | CMNLI | OCNLI | CLUEWSC2020 | CSL |
---|---|---|---|---|---|---|---|
ERNIE 3.0-Medium | bsz_32_lr_2e-05 | bsz_16_lr_3e-05 | bsz_16_lr_5e-05 | bsz_16_lr_1e-05/bsz_64_lr_2e-05 | bsz_64_lr_2e-05 | bsz_8_lr_2e-05 | bsz_32_lr_1e-05 |
ERNIE 3.0-Base | bsz_16_lr_2e-05 | bsz_64_lr_3e-05 | bsz_16_lr_5e-05 | bsz_16_lr_2e-05 | bsz_16_lr_2e-05 | bsz_8_lr_2e-05(drop_out _0.1) | bsz_16_lr_3e-05 |
ERNIE 3.0-XBase | bsz_16_lr_1e-05 | bsz_16_lr_2e-05 | bsz_16_lr_3e-05 | bsz_16_lr_1e-05 | bsz_32_lr_2e-05 | bsz_8_lr_2e-05 | bsz_64_lr_1e-05 |
ERNIE的安装和使用方法
1、安装环境依赖
环境安装与配置:https://github.com/PaddlePaddle/ERNIE/blob/ernie-kit-open-v1.0/README_ENV.md
2、安装Ernie套件
git clone https://github.com/PaddlePaddle/ERNIE.git
3、以文本分类任务为例,来快速上手ERNIE大模型的使用
下载模型
- 使用ERNIE3.0预训练模型进行文本分类任务
- ERNNIE3.0预训练模型的下载与配置
# ernie_3.0 模型下载# 进入models_hub目录cd ./applications/models_hub# 运行下载脚本sh download_ernie_3.0_base_ch.sh
准备数据
- 文心各个任务的data目录下自带一些示例数据,能够实现直接使用,方便快速熟悉文心的使用。
- 文本分类任务的数据
#进入文本分类任务文件夹cd ./applications/tasks/text_classification/#查看文本分类任务自带数据集ls ./data
- 注:示例数据仅作为格式演示使用,在真正训练模型时请替换为真实数据。
配置训练json文件
- 其预置json文件在./examples/目录下,使用ERNIE3.0预训练模型进行训练的配置文件为的./examples/cls_ernie_fc_ch.json,在该json文件中对数据、模型、训练方式等逻辑进行了配置。
#查看 ERNIE3.0预训练模型 训练文本分类任务的配置文件cat ./examples/cls_ernie_fc_ch.json
启动训练
- 将数据集存放妥当,并配置好cls_ernie_fc_ch.json,我们就可以运行模型训练的命令。
- 其中,单卡指令为
python run_trainer.py
,如下所示,使用基于ernie的中文文本分类模型在训练集上进行本地模型训练。
# ernie 中文文本分类模型# 基于json实现预置网络训练。其调用了配置文件./examples/cls_ernie_fc_ch.jsonpython run_trainer.py --param_path ./examples/cls_ernie_fc_ch.json
- 多卡指令为:
fleetrun --gpus=x,y run_trainer.py./examples/cls_ernie_fc_ch.json
- 训练运行的日志会自动保存在**./log/test.log**文件中。
- 训练中以及结束后产生的模型文件会默认保存在./output/目录下,其中save_inference_model/文件夹会保存用于预测的模型文件,save_checkpoint/ 文件夹会保存用于热启动的模型文件。
配置预测json文件
- 其预置json文件在./examples/目录下,使用ERNIE2.0预训练模型训练的模型进行预测的配置文件为的./examples/cls_ernie_fc_ch_infer.json
- 主要修改./examples/cls_ernie_fc_ch_infer.json文件的预测模型的输入路径、预测文件的输入路径、预测结果的输出路径,对应修改配置如下:
{"dataset_reader":{"train_reader":{"config":{"data_path":"./data/predict_data"}}},"inference":{"inference_model_path":"./output/cls_ernie_fc_ch/save_inference_model/inference_step_251", "output_path": "./output/predict_result.txt"}}
4、启动预测
- 运行run_infer.py ,选择对应的参数配置文件即可。如下所示:
python run_infer.py --param_path ./examples/cls_ernie_fc_ch_infer.json
- 预测过程中的日志自动保存在./output/predict_result.txt文件中。
ERNIE的案例应用
1、基础用法
文本分类(文本分类)
文本匹配(文本匹配)
序列标注(序列标注)
信息抽取(信息抽取)
文本生成(文本生成)
图文匹配(图文匹配)
数据蒸馏(数据蒸馏)
工具使用(工具使用)
今天的文章NLP之ERNIE:ERNIE的简介、安装和使用方法、案例应用之详细攻略分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83150.html