不容错过,飞桨产业级PaddleNLP全景图大揭秘!
Posted 飞桨PaddlePaddle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不容错过,飞桨产业级PaddleNLP全景图大揭秘!相关的知识,希望对你有一定的参考价值。
导读:PaddleNLP是飞桨开源的产业级NLP工具与预训练模型集,提供了依托于百度实际产品打磨,通过百亿级大数据训练的预训练模型,能够极大地方便 NLP 研究者和工程师快速应用。使用者可以用PaddleNLP 快速实现文本分类、词法分析、相似度计算、语言模型、文本生成、阅读理解和问答、对话系统以及语义表示8大类任务,并且可以直接使用百度开源工业级预训练模型进行快速应用。用户在极大地减少研究和开发成本的同时,也可以获得更好的基于产业实践的应用效果。
一张图了解PaddleNLP!
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP
PaddleNLP全解读
1. 语义表示
1.1. ERNIE 2.0
ERNIE 2.0是基于持续学习的语义理解预训练框架,使用多任务学习增量式构建预训练任务。ERNIE 2.0中,新构建的预训练任务类型可以无缝的加入训练框架,持续的进行语义理解学习。通过新增的实体预测、句子因果关系判断、文章句子结构重建等语义任务,ERNIE 2.0语义理解预训练模型从训练数据中获取了词法、句法、语义等多个维度的自然语言信息,极大地增强了通用语义表示能力。
ERNIE2.0模型和现有SOTA 预训练模型在9 个中文数据集、以及英文数据集合 GLUE上进行效果比较。结果表明:ERNIE 2.0模型在英语任务上几乎全面优于BERT和XLNet,在 7 个 GLUE 任务上取得了最好的结果;中文任务上,ERNIE 2.0模型在所有 9 个中文 NLP 任务上全面优于BERT。
传送门:https://github.com/PaddlePaddle/ERNIE
1.2. 对比ERNIE 2.0 和ERNIE 1.0
1.3. BERT on PaddlePaddle
BERT 是一个迁移能力很强的通用语义表示模型, 以Transformer 为网络基本组件,以双向 Masked Language Model和 Next Sentence Prediction 为训练目标,通过预训练得到通用语义表示,再结合简单的输出层,应用到下游的 NLP 任务,在多个任务上取得了 SOTA 的结果。本项目是 BERT 在 Paddle Fluid 上的开源实现。
1)完整支持 BERT 模型训练到部署, 包括:支持 BERT GPU 单机、分布式预训练;支持 BERT GPU 多卡 Fine-tuning;提供 BERT 预测接口 demo, 方便多硬件设备生产环境的部署。
2)支持 FP16/FP32 混合精度训练和Fine-tuning,节省显存开销、加速训练过程;
3)提供转换成 Paddle Fluid 参数格式的 BERT 开源预训练模型 供下载,以进行下游任务的 Fine-tuning, 包括如下模型:
4)支持 BERT TensorFlow 模型到 Paddle Fluid 参数的转换。
传送门:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/language_representations_kit/BERT
1.4. ELMo on PaddlePaddle
ELMo(Embeddings from Language Models) 是重要的通用语义表示模型之一,以双向 LSTM 为网路基本组件,以 Language Model 为训练目标,通过预训练得到通用的语义表示,将通用的语义表示作为 Feature 迁移到下游 NLP 任务中,会显著提升下游任务的模型性能。本项目是 ELMo 在 Paddle Fluid 上的开源实现, 基于百科类数据训练并发布了预训练模型。
1) 基于百科类数据训练的 ELMo 中文预训练模型;
2) 完整支持 ELMo 模型训练及表示迁移, 包括:支持 ELMo 多卡训练,训练速度比主流实现快约1倍;以 LAC 任务为示例提供ELMo 语义表示迁移到下游 NLP 任务的示例。
3)在阅读理解任务和 LAC 任务上评估了 ELMo 预训练模型带给下游任务的性能提升:
LAC 加入 ELMo 后 F1 可以提升 1.1%
阅读理解任务加入 ELMo 后 Rouge-L 提升 1%
传送门:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/language_representations_kit/ELMo
2. 对话系统
2.1. 知识驱动对话
人机对话是人工智能(AI)中最重要的话题之一,近年来受到学术界和工业界的广泛关注。目前,对话系统仍然处于起步阶段,通常是被动地进行交谈,并且更多地将他们的言论作为回应而不是他们自己的倡议,这与人与人的谈话不同。因此,我们在一个名为知识驱动对话的新对话任务上设置了这个竞赛,其中机器基于构建的知识图与人交谈。它旨在测试机器进行类似人类对话的能力。
我们提供基于检索和基于生成的基线系统。这两个系统是由飞桨和Pytorch实现的。两个系统的性能如下表所示。
传送门:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/Research/ACL2019-DuConv
2.2. 对话模型工具箱 AutoDialogue Evaluation
对话自动评估模块主要用于评估开放领域对话系统的回复质量,能够帮助企业或个人快速评估对话系统的回复质量,减少人工评估成本。
1)在无标注数据的情况下,利用负采样训练匹配模型作为评估工具,实现对多个对话系统回复质量排序;
2)利用少量标注数据(特定对话系统或场景的人工打分),在匹配模型基础上进行微调,可以显著提高该对话系统或场景的评估效果。
以四个不同的对话系统(seq2seq_naive/seq2seq_att/keywords/human)为例,使用对话自动评估工具进行自动评估。
/ |
seq2seq_naive |
seq2seq_att |
keywords |
human |
cor |
0.474 |
0.477 |
0.443 |
0.378 |
对话通用理解模型DGU
对话相关的任务中,Dialogue System常常需要根据场景的变化去解决多种多样的任务。任务的多样性(意图识别、槽位解析、DA识别、DST等等),以及领域训练数据的稀少,给Dialogue System的研究和应用带来了巨大的困难和挑战,要使得dialoguesystem得到更好的发展,需要开发一个通用的对话理解模型。基于BERT的对话通用理解模块(DGU: Dialogue General Understanding),通过实验表明,使用base-model(BERT)并结合常见的学习范式,在几乎全部对话理解任务上取得比肩甚至超越各个领域业内最好的模型的效果,展现了学习一个通用对话理解模型的巨大潜力。
DGU针对数据集开发了相关的模型训练过程,支持分类,多标签分类,序列标注等任务,用户可针对自己的数据集,进行相关的模型定制。
基于对话相关的业内公开数据集进行评测,效果如下表所示。
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/dialogue_model_toolkit
3. 阅读理解和问答
3.1. D-NET
百度在MRQA 2019阅读理解国际评测中提出了一个通用的“预训练-微调”模型训练框架D(ecathlon)-NET。在全部12个测试数据集中的10个上均排名第一。
目前,“预训练-微调”在自然语言处理领域已成为一种新的、被广泛采用的学习范式,即首先在大规模无标签语料上以语言模型为目标进行预训练,然后再针对特定任务,如阅读理解进行针对性的微调。百度提出的D-NET框架主要包括以下优势:
在预训练阶段,采用了基于飞桨深度学习框架中的多种预训练模型,融合了多种预训练模型的优势,获得了比官方基线更好的效果。
在微调之前,D-NET引入了针对更多领域数据的进一步预训练,以提升模型在特定领域上的适应性,弥补预训练模型语料分布的局限性。
在微调过程中,D-NET采用了基于飞桨多任务学习框架进行多任务学习。在多任务学习的过程中利用了其它有标注的自然语言处理数据集(如自然语言推断、段落排序等)学习更好的语言表示,从而提升模型的泛化能力。“预训练-微调”学习范式在微调阶段的一个问题是容易发生灾难性遗忘。因此,D-NET在微调过程中引入了防止灾难性遗忘的机制。
在微调结束后,D-NET使用飞桨知识蒸馏框架提升单模型效果,以满足本次评测对模型效率的要求。
本模型预计于Paddle Fluid v1.6版本开源,敬请期待
3.2. KT-NET
百度研发的基于知识增强的阅读理解模型,发表于ACL2019
指标性能复现
传送门:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/Research/ACL2019-KTNET
3.3. DuReader
在机器阅读理解(MRC)任务中,我们会给定一个问题(Q)以及一个或多个段落(P)/文档(D),然后利用机器在给定的段落中寻找正确答案(A),即Q + P or D => A. 机器阅读理解(MRC)是自然语言处理(NLP)中的关键任务之一,需要机器对语言有深刻的理解才能找到正确的答案。
DuReader是一个大规模、面向真实应用、由人类生成的中文阅读理解数据集。聚焦于真实世界中的不限定领域的问答任务。相较于其他阅读理解数据集,DuReader的优势包括:
• 问题来自于真实的搜索日志,
• 文章内容来自于真实网页
• 答案由人类生成
• 面向真实应用场景
• 标注更加丰富细致
升级后的基线系统性能指标:
传送门:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/Research/ACL2018-DuReader
4. 文本生成
机器翻译(machinetranslation, MT)是利用计算机将一种自然语言(源语言)转换为另一种自然语言(目标语言)的过程,输入为源语言句子,输出为相应的目标语言的句子。
4.1.Transformer on PaddlePaddle
本项目是机器翻译领域主流模型Transformer 的飞桨实现, 包含模型训练,预测以及使用自定义数据等内容。用户可以基于发布的内容搭建自己的翻译模型。
测试效果
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/neural_machine_translation/transformer
4.2.RNN Search on PaddlePaddle
RNN Search模型使用了经典的编码器-解码器(Encoder-Decoder)的框架结构来解决Seq2Seq类问题。这种方法先用编码器将源序列编码成vector,再用解码器将该vector解码为目标序列。这其实模拟了人类在进行翻译类任务时的行为:先解析源语言,理解其含义,再根据该含义来写出目标语言的语句。编码器和解码器往往都使用RNN来实现。
本模型中,在编码器方面,我们采用了基于LSTM的多层的encoder;在解码器方面,我们使用了带注意力(Attention)机制的RNN decoder,并同时提供了一个不带注意力机制的解码器实现作为对比;而在预测方面我们使用柱搜索(beam search)算法来生成翻译的目标语句。
单个模型 beam_size = 10时的效果:
no attention |
with attention |
|
tst2012 BLEU |
11.58 |
22.21 |
tst2013 BLEU |
12.20 |
25.30 |
5. 词法分析
Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性地完成中文分词、词性标注、专名识别任务。我们在自建的数据集上对分词、词性标注、专名识别进行整体的评估效果,具体数值见下表;此外,我们在百度开放的ERNIE模型上 finetune,并对比基线模型、BERT finetuned 和 ERNIE finetuned 的效果,可以看出会有显著的提升。
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/lexical_analysis
6. 文本分类
情感倾向分析(Sentiment Classification,简称Senta)针对带有主观描述的中文文本,可自动判断该文本的情感极性类别并给出相应的置信度。情感类型分为积极、消极。情感倾向分析能够帮助企业理解用户消费习惯、分析热点话题和危机舆情监控,为企业提供有利的决策支持。
情感是人类的一种高级智能行为,为了识别文本的情感倾向,需要深入的语义建模。另外,不同领域(如餐饮、体育)在情感的表达各不相同,因而需要有大规模覆盖各个领域的数据进行模型训练。为此,我们通过基于深度学习的语义模型和大规模数据挖掘解决上述两个问题。效果上,我们基于开源情感倾向分类数据集ChnSentiCorp进行评测;此外,我们还开源了百度基于海量数据训练好的模型,该模型在ChnSentiCorp数据集上fine-tune之后,可以得到更好的效果。具体数据如下所示:
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/sentiment_classification
2、对话情绪识别
对话情绪识别(Emotion Detection,简称EmoTect),专注于识别智能对话场景中用户的情绪,针对智能对话场景中的用户文本,自动判断该文本的情绪类别并给出相应的置信度,情绪类型分为积极、消极、中性。
对话情绪识别适用于聊天、客服等多个场景,能够帮助企业更好地把握对话质量、改善产品的用户交互体验,也能分析客服服务质量、降低人工质检成本。
效果上,我们基于百度自建测试集(包含闲聊、客服)和nlpcc2014微博情绪数据集,进行评测,效果如下表所示,此外我们还开源了百度基于海量数据训练好的模型,该模型在聊天对话语料上fine-tune之后,可以得到更好的效果。
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/emotion_detection
7. 相似度计算
短文本语义匹配(SimilarityNet,SimNet)是一个计算短文本相似度的框架,可以根据用户输入的两个文本,计算出相似度得分。SimNet框架在百度各产品上广泛应用,主要包括BOW、CNN、RNN、MMDNN等核心网络结构形式,提供语义相似度计算训练和预测框架,适用于信息检索、新闻推荐、智能客服等多个应用场景,帮助企业解决语义匹配问题。可通过AI开放平台-短文本相似度线上体验。
基于百度海量搜索数据,我们训练了一个SimNet-BOW-Pairwise语义匹配模型,在一些真实的FAQ问答场景中,该模型效果比基于字面的相似度方法AUC提升5%以上,我们基于百度自建测试集(包含聊天、客服等数据集)和语义匹配数据集(LCQMC)进行评测,效果如下表所示。LCQMC数据集以Accuracy为评测指标,而pairwise模型的输出为相似度,因此我们采用0.958作为分类阈值,相比于基线模型中网络结构同等复杂的CBOW模型(准确率为0.737),我们模型的准确率为0.7532。
传送门:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/similarity_net
8. 语言模型
基于lstm的语言的模型的实现,给定一个输入词序列(中文分词、英文tokenize),计算其ppl(语言模型困惑度,用户表示句子的流利程度),基于循环神经网络语言模型的介绍可以参阅论文。相对于传统的方法,基于循环神经网络的方法能够更好的解决稀疏词的问题。
在small meidum large三个不同配置情况的ppl对比:
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/language_model
历史PaddleNLP文章传送门
如果您想详细了解更多相关内容,请参阅以下文档。
https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP
以上是关于不容错过,飞桨产业级PaddleNLP全景图大揭秘!的主要内容,如果未能解决你的问题,请参考以下文章
9月22日百度飞桨AI快车道PaddleNLP专场,等你来!
PaddleNLP详解及实战分享-百度飞桨AI快车道北京周末专场报名