ELMo、GPT、BERT、X-Transformer…你都掌握了吗?一文总结文本分类必备经典模型(四)

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: ELMo、GPT、BERT、X-Transformer…你都掌握了吗?一文总结文本分类必备经典模型

1.2 GPT


GPT是“Generative Pre-Training”的简称,是指的生成式的预训练。GPT的训练程序包括两个阶段。第一阶段的预训练是在一个大型文本语料库上学习一个高容量的语言模型。接下来是一个微调阶段,在这个阶段,使模型适应带有标记数据的判别性任务。


第一阶段的工作具体为:Embedding——>Transformer——>Text Production。


第二阶段的工作具体为:将下游任务的网络结构改造成和GPT的网络结构是一样的;利用第一步预训练好的参数初始化GPT的网络结构完成下游任务,这样通过预训练学到的语言学知识就被引入到任务里了;使用下游任务去训练这个网络,对网络参数进行Fine-tuning,使得这个网络更适合解决任务的问题。

对于特定任务的输入转换,使用了一种遍历式的方法,将结构化的输入转换成预先训练好的模型可以处理的有序序列。图3提供了一个可视化的说明。

图3 左)GPT中使用的Transformer结构和训练目标。(右) 输入在不同的任务上进行微调的转化。将所有结构化的输入转化为标记性的序列,由预训练模型处理,然后是一个线性+softmax层

当前 SOTA!平台收录 GPT 共 1 个模型实现资源。

模型 SOTA!平台模型详情页
GPT 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/09877886-65c3-44b0-a5be-9e5043964787

1.3 BERT


BERT(Bidirectional Encoder Representations from Transformers)自从谷歌提出就一直大热,很多人认为BERT是整个NLP研究历程中里程碑似的节点。BERT与ELMo提出,一经提出就明显胜过了ELMo。BERT的灵感来源是OpenAI在17年发布过的一篇名为“Attention is all your need”论文中提到的Transformer模型。关于Transformer的相关模型我们放在第七个章节中具体介绍,本章节内BERT是作为一类预训练模型介绍的。

首先,BERT在NLP的11个任务(包括文本分类任务)中均有较大程度性能提升。其次,BERT在无监督场景下结合预训练能够最大化地利用文本数据,同时对不同场景的下游任务均有提升和帮助。BERT的基础建立在Transformer之上,拥有强大的语言表征能力和特征提取能力,同时再次证明了双向语言模型的能力更加强大。

BERT的网络结构使用了双向Transformer的堆叠,Encoder和Decoder分别12层。其思想出于ELMo和GPT但同时又高于二者。ELMo采用了双向LSTM来训练词Embedding,虽然使用了双向LSTM,但其实是使用2个单向LSTM对学到的句子语义信息做拼接,和BERT完全双向不同,对句子间不同词的语义依赖关系也不如BERT捕捉的充分。GPT只有单向,其假设句子间语义依赖关系只有从左到右,而没有从右到左,该假设在实际中并不完全满足。BERT加入了Masked Language Model(MLM) 和 Next Sentences Prediction(NSP),使得模型能够在无监督的场景下学习到句子间特征和语义特征。在无监督学习场景训练,能最大化的使用训练语料。而Pre-train和Fine-tune能够方便地将已训练好的BERT模型迁移到不同的应用场景,在工业界大有益处。

图1最右侧为BERT的架构,可以看出BERT的最大亮点:双向Transformer网络,BERT直接引用了Transformer架构中的Encoder模块,并舍弃了Decoder模块, 这样便自动拥有了双向编码能力和强大的特征提取能力。

下图为BERT的输入图示。由图示可知,BERT的输入包括三个部分:词嵌入张量(Token embeddings)、语句分块张量( segmentation embeddings)、位置编码张量(position embeddings),最终的embedding向量是将上述的3个向量直接做加和的结果。



图4 BERT输入表示。输入嵌入是标记嵌入、分割嵌入和位置嵌入的总和。嵌入和位置嵌入的总和

接下来,MLM和 NSP是BERT的另外两个亮点:


BERT中引入了一个带mask的语言模型训练(Masked LM)。在原始训练文本中,随机抽取15%的token作为即将参与mask的对象。在选中的token中,数据生成器并不是把他们全部变成[MASK],具体变化方法包括三类:一是,在80%的概率下,用[MASK]标记替换token,比如my dog is hairy → my dog is [MASK];二是,在10%的概率下,用随机单词替换token,比如my dog is hairy → my dog is apple;三是,在10%的概率下,保持token不变,比如my dog is hairy → my dog is hairy。


BERT还引入了一个下句话预测任务(Next Sentence Prediction ),目的是服务问答、推理、句主题关系等NLP任务。所有的参与任务训练的语句都被选中参加,其中:50%的B是原始本中实际跟随A的下句话;50%的B是原始本中随机抽取的一句话。在该任务中,BERT模型可以在测试集上取得97-98%的准确率。


最后,fine-tuning是BERT的另一个亮点,只需要将特定任务的输入,输出插入到BERT中,利用Transformer强大的注意力机制就可以模拟很多下游任务,从而具有极佳的迁移特性。


当前 SOTA!平台收录 BERT 共 7 个模型实现资源。

模型 SOTA!平台模型详情页
BERT 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/1d27a74a-8668-4d64-9615-ce889b88700b

1.4 ALBERT

ALBERT(A Lite BERT)被称为Lite版的Bert,相关论文发表在ICLR 2020。ALBERT采用了两种技术来减少参数量,以应对扩展预训练模型的主要障碍。第一个是因子化嵌入参数化。通过将大型词汇嵌入矩阵分解成两个小矩阵,将隐藏层的大小与词汇嵌入的大小分开。这种分离使得在不显著增加词汇嵌入的参数大小的情况下更容易增长隐藏的大小。第二种技术是跨层参数共享。这种技术可以防止参数随着网络的深度而增长。这两种技术都大大减少了BERT的参数数量而不严重损害性能,从而提高了参数效率。类似于BERT的ALBERT配置的参数减少了18倍,训练速度可以提高1.7倍左右。减少参数的技术也作为一种正则化的形式,稳定了训练并有助于泛化。为了进一步提高ALBERT的性能,还引入了一个用于句序预测的自监督损失(sentence-order prediction,SOP)。SOP主要关注句子间的连贯性,旨在解决原始BERT中提出的下句预测(NSP)损失的无效性。


ALBERT架构的主干与BERT相似,因为它使用具有GELU非线性的Transformer encoder。将词汇embedding size表示为E,将encoder layers层数表示为L,将hidden size表示为H,将feed forward/filter size设置为4H,多头注意力的数量设置为H / 64。

让BERT模型变大(scale up)的方法一般有两种:变深(增加模型的层数)、变宽 (增加隐藏尺寸,即每一层embeddings的特征数),ALBERT的方式是第二种。具体ALBERT的改进点如下所示:


Factorized Embedding Parameterization(将初始嵌入缩短为128个特征)。对于词向量维度 E 和隐层维度 H,在词表 V 到 H 的中间,插入一个小维度 E,多做一次尺度变换:O(VxH) →  O(VxE+ExH)。

Cross-layer Parameter Sharing(共享所有层的参数)。具体分为三种模式:只共享 attention 相关参数、只共享 FFN 相关参数、共享所有参数(attention相关+FFN)。全共享如下图所示:


图5 ALBERT全共享参数

Sentence Order Prediction(SOP)。SOP 就是让模型预测两个相邻 segments 有没有被调换前后顺序。SOP主要是针对NSP提出的,即句子顺序判断。NSP将话题预测和连贯性预测混合在一个任务中。然而,与连贯性预测相比,话题预测更容易学习,而且与使用MLM[掩蔽语言建模]损失学习的内容重叠更多。因此,ALBERT提出一个主要基于连贯性的损失,即句序预测(SOP)损失,它避免了话题预测,侧重于对句子间的一致性进行建模。

此外,还包括用长句做预训练、随机遮连续的多个词(Masked-ngram-LM vs Masked LM)、扩大模型参数、增加预训练数据、去掉Dropout层等trick。

当前 SOTA!平台收录 ALBERT 共 13 个模型实现资源。

模型 SOTA!平台模型详情页
ALBERT 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/0306236e-ce20-4886-98cb-45730fda6cf9
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
当语言遇见智慧火花:GPT家族历代模型大起底,带你见证从平凡到卓越的AI进化奇迹!
【10月更文挑战第6天】随着自然语言处理技术的进步,GPT系列模型(Generative Pre-trained Transformers)成为该领域的明星。从GPT-1的开创性工作,到GPT-2在规模与性能上的突破,再到拥有1750亿参数的GPT-3及其无需微调即可执行多种NLP任务的能力,以及社区驱动的GPT-NeoX,这些模型不断进化。虽然它们展现出强大的语言理解和生成能力,但也存在如生成错误信息或偏见等问题。本文将对比分析各代GPT模型的特点,并通过示例代码展示其部分功能。
107 2
|
1月前
|
数据采集 API 决策智能
华为诺亚联合中科大发布工具调用模型ToolACE,效果持平GPT-4获开源第一
 【10月更文挑战第10天】华为诺亚方舟实验室与中国科学技术大学合作推出ToolACE,一种自进化合成过程的工具调用模型。ToolACE通过多智能体交互和双重验证系统生成准确、复杂、多样化的工具学习数据,显著提升大型语言模型(LLM)的功能调用能力。实验结果显示,使用ToolACE数据训练的80亿参数模型性能媲美GPT-4,在伯克利功能调用排行榜上获得开源第一。
59 4
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
69 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
1月前
|
机器学习/深度学习 自然语言处理 知识图谱
|
29天前
|
机器学习/深度学习 自然语言处理 算法
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
85 0
|
1月前
|
API
2024-05-14 最新!OpenAI 新模型 GPT-4 omni 简单测试,4o速度确实非常快!而且很便宜!
2024-05-14 最新!OpenAI 新模型 GPT-4 omni 简单测试,4o速度确实非常快!而且很便宜!
41 0
|
1月前
|
开发工具 git
LLM-03 大模型 15分钟 FineTuning 微调 GPT2 模型 finetuning GPT微调实战 仅需6GB显存 单卡微调 数据 10MB数据集微调
LLM-03 大模型 15分钟 FineTuning 微调 GPT2 模型 finetuning GPT微调实战 仅需6GB显存 单卡微调 数据 10MB数据集微调
57 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
91 0
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
65 0

热门文章

最新文章