跳到主要内容NLP 任务预训练模型选择与方案规范建议 | 极客日志PythonAI算法
NLP 任务预训练模型选择与方案规范建议
NLP 任务选择需先明确业务输入输出,抽象为分类、匹配、生成等典型问题。根据部署性能、效果、成本等限制条件选择方案,如 GPU/CPU、单机/集群。高效训练流程包括数据准备、基线实现、效果优化。掌握机器学习基础概念及深度学习知识至关重要。避免过度依赖特定平台,注重通用技术选型。
217728380118 浏览 1.常见 NLP 任务
- 信息抽取:从给定文本中抽取重要的信息,比如时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。
- 文本生成:机器像人一样使用自然语言进行表达和写作。依据输入的不同,文本生成技术主要包括数据到文本生成和文本到文本生成。数据到文本生成是指将包含键值对的数据转化为自然语言文本;文本到文本生成对输入文本进行转化和处理从而产生新的文本。
- 问答系统:对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。
- 对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。
- 语音处理:语音识别是将输入计算机的语音符号识别转换成书面语表示。语音生成又称文语转换,它是指将书面文本自动转换成对应的语音表征。
- 信息过滤:通过计算机系统自动识别和过滤符合特定条件的文档信息。通常指网络有害信息的自动识别和过滤,主要用于信息安全和防护,网络内容管理等。
- 舆情分析:是指收集和处理海量信息,自动化地对网络舆情进行分析,以实现及时应对网络舆情的目的。
- 信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。
- 机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码 - 解码)的方法,逐渐形成了一套比较严谨的方法体系。
- 文本挖掘:包括文本聚类、分类、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。
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 预估的影响因素:比如历史点击率、广告位置、时间、用户等
2.1.2 如果 X 是 2 段文本(X1,X2),Y 表示二者的相似度,可抽象为文本匹配问题。如下所示
喜欢 打篮球 的 男生 喜欢 什么样 的 女生 爱 打篮球 的 男生 喜欢 什么样 的 女生 1
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
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
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.如实体关系抽取任务,可以拆分为实体识别 + 关系抽取的 pipeline进行实现。
b.如文本纠错任务,可以拆分出语言模型、统计机器翻译等多种不同子任务构造复杂的 pipeline 进行实现。
c.如排序任务,输入 X 为多段文本,输出 Y 为每段文本的排序位置,可化简成文本分类问题、文本匹配问题进行处理。
2.2.3 有监督学习任务优先于无监督学习任务
a.因为有监督学习更可控,更易于应用最前沿的研究成果。主流框架通常优先支持有监督、自监督任务。
b.比如文本关键词抽取,可以有 TFIDF 之类的无监督解法,但效果控制较困难,不如转换为文本分类问题。
2.2.4 能应用深度学习的任务优于不利用深度学习的任务
a.因为深度学习算法效果一般更好,而且可以应用到最前沿的预训练模型。当前主流方法多采用深度学习算法。
b.如果文本聚类,可以有 LDA 之类的解法,但效果一般不如基于深度学习的语义相似度的文本聚类。
3.明确业务目标与限制条件
3.1 典型业务目标与限制条件
a.以文本分类为例,典型指标:精确率、准确率、召回率、F1 值
b.该评估指标应该在训练开始之前基本确定,否则很容易优化偏。
b.GPU 远贵于 CPU,V100 贵于 P40。
4.训练时间成本(GPU,卡,调参,GPU 利用率)
a.由于标注成本较高,很多时候是数据量很少又希望有很好的效果。
3.2 可供选择的方案
- 选择云端平台版还是本地工具版
- 选择 GPU 还是 CPU 训练,哪一款硬件,单机还是多机,单卡还是多卡,本地还是集群
- 选择怎样的预制网络
- 是否需要预训练模型
- 选择哪一版本的预训练模型
- 训练数据要多少
- batch_size、train_log_step、eval_step、save_model_step 选多少
4.根据业务目标与限制条件选择合适的方案
4.1 预测部署性能
a.如果预算允许使用 GPU,可尝试直接部署轻量级预训练模型系列。
b.如果预算只允许使用 CPU,可尝试 CPU 集群部署预训练模型。
3.如果对部署性能要求不高,可随意尝试各种预训练模型。
4.2 模型效果
1.一般来说,复杂的网络优于简单的网络,多样的特征优于单一的特征,有预训练模型的效果优于无预训练模型。
a.从模型复杂度来看,LSTM、GRU、CNN、BOW 的复杂度与效果依次递减,速度依次提升。
2.一般来说,在预训练模型中,large 优于 base 优于 tiny,新版本的模型优于旧版本的模型,针对具体任务的预训练模型优于通用版预训练模型。
3.一般来说,在不欠拟合的情况下,训练数据越多模型效果越好,标注数据的质量越好效果越好。标注数据的质量优于数据的数量。
4.不同任务适合的网络结构并不相同,具体任务具体分析。
4.3 硬件采购成本
1.GPU 远贵于 CPU,常用训练用 GPU 型号为 V100、P40、K40,价格依次递减。
3.如果缺少训练资源,可通过云平台提供的免费共享队列进行训练,资源紧张,且用且珍惜。
4.4 训练时间成本
a.对于非复杂网络的模型,CPU 的训练速度一般也能接受。如果训练语料过多,数千万条以上,则建议采用 CPU 集群进行训练。
b.对于预训练模型,尽量采用 GPU 训练,CPU 太慢,训练不起来。
a.GPU 并行训练能提升训练速度,建议优先把一个节点(trainer)的卡数用完,再考虑多机训练。因为单机多卡的 GPU 利用率更高,更快。而多机训练数据通信时间成本较高,时间更慢。
b.大原则:GPU 利用率越高训练越快。
c.还有一点需要注意,多卡训练时是将不同的数据文件送给不同的卡,所以数据文件的个数要大于卡的个数。数据文件建议拆分细一些,这可以提升数据读取的速度。
d.熟练的同学可以尝试 GPU 多进程单机多卡训练、混合精度训练等方法,提升训练速度。
3.train_log_step、eval_step、save_model_step
a.分别表示每多少步打印训练日志、每多少步评估一次验证集、每多少步保存一次模型。
b.设置不当也会拖慢训练时间
c.一般建议三者依次放大十倍,如:10、100、1000
a.设置过小容易收敛慢,设置过大容易超过显存极限直接挂掉
b.如果使用预训练模型,batch_size 建议小一些,使用 large 版本建议更小一些,如果输入语句并不是很长可以适当增加 batch_size。
c.如果不使用预训练模型,可以大一些。
d.建议使用默认配置,如果想优化可以采用二分查找
4.5 数据大小限制
2.非预训练模型一般需要几万至几百万条数据能收敛到较好的效果。
3.预训练模型一般需要几千至几万条数据即可收敛到较好效果。
a.一般不用预训练模型训练数百万条以上的数据,因为这会极大延长训练时间,增大资源消耗,而对效果的提升并不明显。自己有足够 GPU 资源的用户除外。
b.对于基线模型,建议在几万条数据上验证策略有效后再尝试增加数据量。
4.如果用预训练模型,最少需要多少样本才能取得效果
a.对于文本分类与序列标注,一般来说每个标签覆盖的样本数至少要超过 200 条才能有一定的效果。也就是说如果要进行 50 类多分类,就总共至少需要 1 万条样本。一般分类的类别越多任务越复杂。
4.6 开发迭代成本
a.如果只想训练基线模型验证效果,可以考虑使用云端平台,免去搭建环境的成本。
b.如果需要不断调试、迭代优化模型,而由于平台版集群资源紧张造成迭代周期过长,可以尝试使用本地工具包。
i:这会付出搭建环境的成本,但长痛不如短痛。
a.使用工具版本地调试成功后再上集群训练能极大提升迭代效率。
b.使用预训练模型能提升迭代效率。
c.基线模型,建议在几万条数据上验证策略,提升迭代效率。验证有效后再尝试增加数据量
5.如何高效训练 NLP 任务
汇总诸多 NLP 算法同学的建议,我们把高效训练 NLP 任务的基本流程总结如下:
1.分析业务背景、明确任务输入与输出,将其抽象为已得到很好解决的 NLP 典型任务。
a.对于复杂任务,需要将其拆分成比较简单的子任务
b.主流框架已覆盖绝大部分 NLP 典型任务。
2.准备好几千条格式规范的训练数据,快速实现一个 NLP 模型基线。
a.最快速的方法是通过云端平台或者本地工具包,采用预制网络和模型无代码训练一个模型基线。
b.本步骤只需要您知道最基本的机器学习概念,划分好训练集、验证集、测试集进行训练即可。
c.评估训练出模型的效果,看是否满足你的业务需求,如果不满足,可考虑进一步优化模型效果。
a.各优化手段按照投入产出比排序如下
i:进一步分析你的业务背景和需求,分析基线模型的不足,进行更细致的技术选型。
ii:采用本地工具包进行本地小数据调试,极大地提升迭代效率。
iii:基于预制网络进行调参。
iv:自定义组网并进行调参。
v:基于核心接口进行高度自定义开发。
vi:直接修改核心源码进行开发。
典型的训练方式:无代码训练(不调参),无代码训练(自主调参),自定义组网训练,高阶自定义训练。
以上 4 类训练方式的开发自由度、上手难度、建模的风险、模型效果的上限依次递增,性价比依次递减。本地工具包的调试、迭代效率最高。
6 总结:需掌握知识
6.1 无代码调参建议具备的相关知识
1.明确以下概念:有监督学习、标签、特征、训练集、验证集、测试集、逻辑回归、过拟合、欠拟合、激活函数、损失函数、神经网络、学习率、正则化、epoch、batch_size、分词、统计词表。
4.知道准确率、召回率、精确度、F1 值、宏平均、微平均的概念与区别。
5.知道为什么训练集、验证集、测试集要保证独立同分布。
7.知道什么是迁移学习、什么是预训练模型、什么是 finetune、迁移学习的优点是什么。
6.2 自定义组网建议具备的相关知识
2.明确以下概念:Sigmoid 函数公式、softmax 函数公式、交叉熵公式、前向传播、反向传播、SGD、Adam、词向量、embedding、dropout、BOW、CNN、RNN、GRU、LSTM、迁移学习、
4.知道 NLP 中一维 CNN 中的卷积核大小、卷积核的个数各指代什么,时序最大池化层如何操作。
5.知道 NLP 中 CNN 与 LSTM 的区别,各擅长处理哪类文本问题。
6.知道为什么 BOW 模型无法识别词语顺序关系。
a.ML 特征工程和优化方法
b.周志华《机器学习》前 3 章
c.迁移学习常见问题
a.CNN 常见问题
b.深度学习优化方法
c.花书《深度学习》6-10 章
d.《基于深度学习的自然语言处理》整本
如何学习大模型 AI?
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online