1.常见NLP任务

  1. 信息抽取:从给定文本中抽取重要的信息,比如时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。

  2. 文本生成:机器像人一样使用自然语言进行表达和写作。依据输入的不同,文本生成技术主要包括数据到文本生成和文本到文本生成。数据到文本生成是指将包含键值对的数据转化为自然语言文本;文本到文本生成对输入文本进行转化和处理从而产生新的文本

  3. 问答系统:对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。

  4. 对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。

  5. 语音识别和生成:语音识别是将输入计算机的语音符号识别转换成书面语表示。语音生成又称文语转换、语音合成,它是指将书面文本自动转换成对应的语音表征。

  6. 信息过滤:通过计算机系统自动识别和过滤符合特定条件的文档信息。通常指网络有害信息的自动识别和过滤,主要用于信息安全和防护,网络内容管理等。

  7. 舆情分析:是指收集和处理海量信息,自动化地对网络舆情进行分析,以实现及时应对网络舆情的目的。

  8. 信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。

  9. 机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。

  10. 文本挖掘:包括文本聚类、分类、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。

2.如何将业务问题抽象为已得到很好解决的典型问题

2.1 明确业务的输入与输出

令输入文本用X表示,输出标签用Y表示,则有以下粗略的分类:

2.1.1 如果Y表示某一类的概率,或者是一个定长向量,向量中的每个维度是其属于各个类的概率,且概率之和为1,则可抽象为文本多分类问题。

a.一般X只有一段文本。如下所示
i.如情感分析等任务。


房间 太 小 。 其他 的 都 一般 0

b.如果X是2段文本(X1,X2),则是可以抽象为句对分类问题。如下所示 i:如NLI等任务。


大家觉得她好看吗 大家觉得跑男好看吗? 0

c.如果的每个类别的概率相互独立,即各类概率之和不为1,可抽象为文本多标签分类问题。如下所示
i:如用户评论分类、黄反识别等任务。


互联网创业就如选秀 需求与服务就是价值 0 1

d. 如果X有多段非文本特征输入,如整型、浮点型类型特征。则可抽象为混合特征的分类问题。如下所示
i:如CTR预估等任务。
CTR预估*

CTR预估是推荐中最核心的算法之一。 相关概念:
CTR预估:对每次广告的点击情况做出预测,预测用户是点击还是不点击。
CTR预估的影响因素:比如历史点击率、广告位置、时间、用户等
CTR预估相关介绍
推荐算法之4——CTR预估模型

2.1.2 如果X是2段文本(X1,X2),Y表示二者的相似度,可抽象为文本匹配问题。如下所示


喜欢 打篮球 的 男生 喜欢 什么样 的 女生 爱 打篮球 的 男生 喜欢 什么样 的 女生 1

a.如语义相似度、相似问题匹配等任务。

b.文本聚类的问题可以通过文本相似度问题进行处理。

2.1.3 如果X有一段文本,Y是一个与X等长的序列,可抽象为序列标注问题。如下所示


海 钓 比 赛 地 点 在 厦 门 与 金 门 之 间 的 海 域 。 O O O O O O O B-LOC I-LOC O B-LOC I-LOC O O O O O O

a.如分词、POS、NER、词槽挖掘等任务。

2.1.4 如果X有一段文本,Y是一个不定长的文本,可抽象为文本生成问题。如下所示


Rachel Pike : The science behind a climate headline Khoa học đằng sau một tiêu đề về khí hậu

a.如机器翻译、文本摘要、标题生成等任务。

2.1.5.如果X为一段文本,Y表示文本X作为正常语句出现的概率或者混淆度,则属于语言模型任务。如下所示


<s> but some analysts remain sour on the company but some analysts remain sour on the company <e>

a.语言模型任务的子问题是基于上(下)文X预测下(上)一个词出现的概率Y,可以理解为一种特殊的文本分类。

2.1.6如果X是2段文本(X1,X2),分别表示正文篇章和问题,Y是篇章中的一小段文本,表示对应问题的答案,则可抽象为阅读理解问题。


{
"data": [{
"title": "",
"paragraphs": [{
"context": "爬行垫根据中间材料的不同可以分为:XPE爬行垫、EPE爬行垫、EVA爬行垫、PVC爬行垫;其中XPE爬行垫、EPE爬行垫都属于PE材料加保鲜膜复合而成,都是无异味的环保材料,但是XPE爬行垫是品质较好的爬行垫,韩国进口爬行垫都是这种爬行垫,而EPE爬行垫是国内厂家为了减低成本,使用EPE(珍珠棉)作为原料生产的一款爬行垫,该材料弹性差,易碎,开孔发泡防水性弱。EVA爬行垫、PVC爬行垫是用EVA或PVC作为原材料与保鲜膜复合的而成的爬行垫,或者把图案转印在原材料上,这两款爬行垫通常有异味,如果是图案转印的爬行垫,油墨外露容易脱落。当时我儿子爬的时候,我们也买了垫子,但是始终有味。最后就没用了,铺的就的薄毯子让他爬。您好,爬行垫一般色彩鲜艳,能吸引宝宝的注意力,当宝宝刚会爬的时候,趴在上面玩,相对比较安全,不存在从床上摔下来的危险。对宝宝的爬行还是很有好处的。还有就是妈妈选择爬行垫时可以选择无害的PE棉,既防潮又隔冷隔热。外有要有一层塑料膜,能隔绝液体进入垫子内部,而且方便清洗。宝宝每次爬行,一定要记得把宝宝的手擦干净。",
"qas": [{
"answers": [{
"text": "XPE",
"answer_start": 17
}],
"id": "DR-single-pre_and_next_paras-181574",
"question": "爬行垫什么材质的好"
}]
},
...,
]
}]
}

2.1.7 如果Y是以上多种任务的组合,则可以抽象为多标签学习、多任务学习任务。

a.如实体关系抽取任务,实体抽取本属于序列标注、关系抽取本属于文本多分类。

2.2抽象与拆分任务取舍经验

2.2.1优先考虑简单的任务,由易到难循序渐进:

a.文本分类、文本匹配、序列标注、文本生成、阅读理解、多任务学习、强化学习、对抗学习等。

2.2.2 复杂任务可拆分、化简成简单的子任务

a.如实体关系抽取任务,可以拆分为实体识别+关系抽取的pipline进行实现。

b.如文本纠错任务,可以拆分出语言模型、统计机器翻译等多种不同子任务构造复杂的pipline进行实现。

c.如排序任务,输入X为多段文本,输出Y为每段文本的排序位置,可化简成文本分类问题、文本匹配问题进行处理。

2.2.3 有监督学习任务优先于无监督学习任务

a.因为有监督学习更可控,更易于应用最前沿的研究成果。文心目前只覆盖有监督、自监督任务。

b.比如文本关键词抽取,可以有TFIDF之类的无监督解法,但效果控制较困难,不如转换为文本分类问题。

2.2.4 能应用深度学习的任务优于不利用深度学习的任务

a.因为深度学习算法效果一般更好,而且可以应用到最前沿的预训练模型。文心目前只采用深度学习算法。

b.如果文本聚类,可以有LDA之类的解法,但效果一般不如基于深度学习的语义相似度的文本聚类

3. 明确业务目标与限制条件

3.1典型业务目标与限制条件

1.预测部署性能

a.典型指标:qps
性能指标:QPS、TPS、系统吞吐量理解

2.模型效果

a.以文本分类为例,典型指标:精确率、准确率、召回率、F1值

b.该评估指标应该在训练开始之前基本确定,否则很容易优化偏。

3.硬件采购成本

a.典型指标:钱

b.GPU远贵于CPU,V100贵于P40。

4.训练时间成本(GPU,卡,调参,GPU利用率)

a.典型指标:每一轮训练所需要的时间。

5.数据大小限制

a.由于标注成本较高,很多时候是数据量很少又希望有很好的效果。

6.开发迭代成本

a.搭建环境成本

b.迭代效率:往往是最消耗时间的部分。

3.2 可供选择的方案

  1. 选择平台版还是工具版
  2. 选择GPU还是CPU训练,哪一款硬件,单机还是多机,单卡还是多卡,本地还是集群
  3. 选择怎样的预制网络
  4. 是否需要预训练模型
  5. 选择哪一版本的预训练模型
  6. 训练数据要多少
  7. batch_size、train_log_step、eval_step、save_model_step选多少

4.根据业务目标与限制条件选择合适的方案

4.1预测部署性能

如果要求qps>1000

a.不适合直接部署ERNIE预训练模型。

b.但可尝试蒸馏策略,模型效果会存在一定损失。

如果要求qps>100

a.如果预算允许使用GPU,可尝试直接部署ERNIE相关预训练模型,推荐尝试ERNIE-tiny系列模型。

b.如果预算只允许使用CPU,可尝试CPU集群部署ERNIE相关预训练模型。

3.如果对部署性能要求不高,可随意尝试各种预训练模型。

4.性能细节请参考:模型预测与部署——预测性能

4.2 模型效果

1.一般来说,复杂的网络优于简单的网络,多样的特征优于单一的特征,有预训练模型的效果优于无预训练模型。

a.从模型复杂度来看,LSTM、GRU、CNN、BOW的复杂度与效果依次递减,速度依次提升。

2.一般来说,在预训练模型中,large优于base优于tiny,新版本的模型优于旧版本的模型,针对具体任务的预训练模型优于通用版预训练模型。

3.一般来说,在不欠拟合的情况下,训练数据越多模型效果越好,标注数据的质量越好效果越好。标注数据的质量优于数据的数量。

4.不同任务适合的网络结构并不相同,具体任务具体分析。

4.3硬件采购成本

1.GPU远贵于CPU,常用训练用GPU型号为V100、P40、K40,价格依次递减。

2.具体成本可参考百度云服务器-BCC-价格计算器

3.如果缺少训练资源,可通过文心平台版的免费共享队列进行训练,资源紧张,且用且珍惜。

4.4训练时间成本

1.GPU还是CPU

a.对于非ERNIE等复杂网络的模型,CPU的训练速度一般也能接受。 如果训练语料过多,数千万条以上,则建议采用CPU集群进行训练。

b.对于ERNIE模型,尽量采用GPU训练,CPU太慢,训练不起来。

2.怎么用好GPU

 a.GPU并行训练能提升训练速度,建议优先把一个节点(trainer)的卡数用完,再考虑多机训练。因为单机多卡的GPU利用率更高,更快。而多机训练数据通信时间成本较高,时间更慢。

b.大原则:GPU利用率越高训练越快。

c.还有一点需要注意,多卡训练时是将不同的数据文件送给不同的卡,所以数据文件的个数要大于卡的个数。数据文件建议拆分细一些,这可以提升数据读取的速度。

d.熟练的同学可以尝试GPU多进程单机多卡训练、混合精度训练等方法,提升训练速度。

3.train_log_step、eval_step、save_model_step

a.分别表示每多少步打印训练日志、每多少步评估一次验证集、每多少步保存一次模型。

b.设置不当也会拖慢训练时间

c.一般建议三者依次放大十倍,如:10、100、1000

4.batch_size

a.设置过小容易收敛慢,设置过大容易超过显存极限直接挂掉

b.如果使用ERNIE,batch_size建议小一些,使用large版本建议更小一些,如果输入语句并不是很长可以适当增加batch_size。

c.如果不使用ERNIE,可以大一些。

d.建议使用默认配置,如果想优化可以采用二分查找

4.5 数据大小限制

1.一般建议标注语料越多越好。

2.非ERNIE模型一般需要几万至几百万条数据能收敛到较好的效果。

3.ERNIE模型一般需要几千至几万条数据即可收敛到较好效果

a.一般不用ERNIE训练数百万条以上的数据,因为这会极大延长训练时间,增大资源消耗,而对效果的提升并不明显。自己有足够GPU资源的用户除外。

b.对于基线模型,建议在几万条数据上验证策略有效后再尝试增加数据量。

4.如果用ERNIE模型,最少需要多少样本才能取得效果

a.对于文本分类与序列标注,一般来说每个标签覆盖的样本数至少要超过200条才能有一定的效果。也就是说如果要进行50类多分类,就总共至少需要1万条样本。一般分类的类别越多任务越复杂。

4.6开发迭代成本

1.搭建环境成本

a.如果只想训练基线模型验证效果,可以考虑使用文心平台版,免去搭建环境的成本。

b.如果需要不断调试、迭代优化模型,而由于平台版集群资源紧张造成迭代周期过长,可以尝试使用工具版。

i:这会付出搭建环境的成本,但长痛不如短痛。

2.迭代效率

a.使用工具版本地调试成功后再上集群训练能极大提升迭代效率。

b.使用预训练模型能提升迭代效率。

c.基线模型,建议在几万条数据上验证策略,提升迭代效率。验证有效后再尝试增加数据量

5. 如何高效训练NLP任务

汇总诸多NLP算法同学的建议,我们把高效训练NLP任务的基本流程总结如下:

1.分析业务背景、明确任务输入与输出,将其抽象为已得到很好解决的NLP典型任务。


a.对于复杂任务,需要将其拆分成比较简单的子任务 b.文心已覆盖绝大部分NLP典型任务,可参考文心ERNIE工具版-支持任务。

2.准备好几千条格式规范的训练数据,快速实现一个NLP模型基线。


a.最快速的方法是通过文心ERNIE平台版或者工具版,采用预制网络和模型无代码训练一个模型基线。 b.本步骤只需要您知道最基本的机器学习概念,划分好训练集、验证集、测试集进行训练即可。 c.评估训练出模型的效果,看是否满足你的业务需求,如果不满足,可考虑进一步优化模型效果。

3.优化模型效果:


a.各优化手段按照投入产出比排序如下 i:进一步分析你的业务背景和需求,分析基线模型的不足,进行更细致的技术选型。
ii:采用工具版进行本地小数据调试,极大地提升迭代效率。
iii:基于预制网络进行调参。
iv:自定义组网并进行调参。
v:基于核心接口进行高度自定义开发。
vi:直接修改文心核心源码进行开发。 b.每一种优化手段都都可以申请vip服务进行支持。

如何自我判断采用哪种文心开发方式
典型的训练方式:无代码训练(不调参),无代码训练(自主调参),自定义组网训练,高阶自定义训练。

以上4类训练方式的开发自由度、上手难度、建模的风险、模型效果的上限依次递增,性价比依次递减。本地工具包的调试、迭代效率最高。

6总结:需掌握知识

6.1 无代码调参建议具备的相关知识

1.明确以下概念:有监督学习、标签、特征、训练集、验证集、测试集、逻辑回归、过拟合、欠拟合、激活函数、损失函数、神经网络、学习率、正则化、epoch、batch_size、分词、统计词表。

2.知道回归与分类的区别。

3.知道如何通过收敛曲线判断过拟合与欠拟合。

4.知道准确率、召回率、精确度、F1值、宏平均、微平均的概念与区别。

5.知道为什么训练集、验证集、测试集要保证独立同分布。

6.知道什么是神经网络.

7.知道什么是迁移学习、什么是预训练模型、什么是finetune、迁移学习的优点是什么。

6.2 自定义组网建议具备的相关知识

1.前提是已经掌握无代码调参建议具备的相关知识

2.明确以下概念:Sigmoid函数公式、softmax函数公式、交叉熵公式、前向传播、反向传播、SGD、Adam、词向量、embedding、dropout、BOW、CNN、RNN、GRU、LSTM、迁移学习、

3.知道神经网络为什么具有非线性切分能力。

4.知道NLP中一维CNN中的卷积核大小、卷积核的个数各指代什么,时序最大池化层如何操作。

5.知道NLP中CNN与LSTM的区别,各擅长处理哪类文本问题。

6.知道为什么BOW模型无法识别词语顺序关系。

7.知道为什么会梯度爆炸,以及如何解决。

参考书籍:


a.ML特征工程和优化方法
b.周志华《机器学习》前3章
c.迁移学习常见问题 a.CNN常见问题
b.深度学习优化方法
c.花书《深度学习》6-10章
d.《基于深度学习的自然语言处理》整本

项目参考链接:https://ai.baidu.com/ai-doc/ERNIE-Ultimate/pl580cszk

NLP领域任务如何选择合适预训练模型以及选择合适的方案【规范建议】【ERNIE模型首选】的更多相关文章

  1. 最强中文NLP预训练模型艾尼ERNIE官方揭秘【附视频】

    “最近刚好在用ERNIE写毕业论文” “感觉还挺厉害的” “为什么叫ERNIE啊,这名字有什么深意吗?” “我想让艾尼帮我写作业” 看了上面火热的讨论,你一定很好奇“艾尼”.“ERNIE”到底是个啥? ...

  2. 自然语言处理(三) 预训练模型:XLNet 和他的先辈们

    预训练模型 在CV中,预训练模型如ImagNet取得很大的成功,而在NLP中之前一直没有一个可以承担此角色的模型,目前,预训练模型如雨后春笋,是当今NLP领域最热的研究领域之一. 预训练模型属于迁移学 ...

  3. 预训练模型——开创NLP新纪元

    预训练模型--开创NLP新纪元 论文地址 BERT相关论文列表 清华整理-预训练语言模型 awesome-bert-nlp BERT Lang Street huggingface models 论文 ...

  4. Pytorch——BERT 预训练模型及文本分类

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

  5. NLP与深度学习(五)BERT预训练模型

    1. BERT简介 Transformer架构的出现,是NLP界的一个重要的里程碑.它激发了很多基于此架构的模型,其中一个非常重要的模型就是BERT. BERT的全称是Bidirectional En ...

  6. 【转载】最强NLP预训练模型!谷歌BERT横扫11项NLP任务记录

    本文介绍了一种新的语言表征模型 BERT--来自 Transformer 的双向编码器表征.与最近的语言表征模型不同,BERT 旨在基于所有层的左.右语境来预训练深度双向表征.BERT 是首个在大批句 ...

  7. 百度NLP预训练模型ERNIE2.0最强实操课程来袭!【附教程】

    2019年3月,百度正式发布NLP模型ERNIE,其在中文任务中全面超越BERT一度引发业界广泛关注和探讨.经过短短几个月时间,百度ERNIE再升级,发布持续学习的语义理解框架ERNIE 2.0,及基 ...

  8. NLP预训练模型-百度ERNIE2.0的效果到底有多好【附用户点评】

    ERNIE是百度自研的持续学习语义理解框架,该框架支持增量引入词汇(lexical).语法 (syntactic) .语义(semantic)等3个层次的自定义预训练任务,能够全面捕捉训练语料中的词法 ...

  9. 最强 NLP 预训练模型库 PyTorch-Transformers 正式开源:支持 6 个预训练框架,27 个预训练模型

    先上开源地址: https://github.com/huggingface/pytorch-transformers#quick-tour 官网: https://huggingface.co/py ...

  10. BERT预训练模型的演进过程!(附代码)

    1. 什么是BERT BERT的全称是Bidirectional Encoder Representation from Transformers,是Google2018年提出的预训练模型,即双向Tr ...

随机推荐

  1. SpringBoot 配置 Swagger

    Profile Config 多环境不同配置 1.添加 Pom 文件 <dependency> <groupId>io.springfox</groupId> &l ...

  2. Java 网络编程 —— 实现非阻塞式的客户端

    创建阻塞的 EchoClient 客户程序一般不需要同时建立与服务器的多个连接,因此用一个线程,按照阻塞模式运行就能满足需求 public class EchoClient { private Soc ...

  3. Android RxJava 异常时堆栈信息显示不全(不准确),解决方案都在这里了

    现象 大家好,我是徐公,今天为大家带来的是 RxJava 的一个血案,一行代码 return null 引发的. 前阵子,组内的同事反馈说 RxJava 在 debug 包 crash 了,捕获到的异 ...

  4. 如何在传统前端项目中进行javascript模块化编程,并引入使用vue.js、element-ui,并且不依赖nodejs和webpack?

    最近接手一个Web三维项目,前后端分离,前端是传统的前端项目,但又是模块化的开发方式,在修改的过程中,我需要做一些增删改查的功能,又想尽可能少的写css.尽可能少的直接操作DOM元素,所以引入了ele ...

  5. (转)Github+jsDelivr+PicGo 打造稳定快速、高效免费图床

    转载自:https://www.itrhx.com/2019/08/01/A27-image-hosting/ 写在开头,之前我是使用Gitee作为图床和Picgo搭配使用的 (图片不允许超过1MB) ...

  6. Java ConcurrentHashMap 高并发安全实现原理解析

    本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/4sz6sTPvBigR_1g8piFxug作者:vivo 游戏技术团队 一.概述 Concurr ...

  7. oppo和海康嵌入式软件工程师面经总结

    目录 海康 一面(3.23,35min) 自我介绍 项目介绍 你做的这个项目遇到了那些问题,如何解决的? 移植uboot,只做了移植吗? 用的那个文件系统? 移植过程中,网卡驱动做了那些工作? 写过那 ...

  8. python进阶(5)--函数

    文档目录: 一.函数体二.实参与形参三.返回值四.举例:函数+while循环五.举例:列表/元组/字典传递六.模块与函数的导入 ------------------------------------ ...

  9. Verilog Review

    Agenda 目的 Verilog概述 Verilog建模 模块 模块组成 书写建议 时延 Verilog基本语法 标识符 可读性 注释 空格 数据类型 操作数 运算符 条件语句 循环语句 函数 Ve ...

  10. Listener refused the connection with the following error: ORA-12514

    1.问题 在使用Oracle SQL Developer时,遇到以下问题: 状态: 失败 -测试失败: Listener refused the connection with the followi ...