GPT、BERT、XLM、GPT-2、BART…你都掌握了吗?一文总结文本生成必备经典模型(2)

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

Cross-lingual Language Model Pretraining  


BERT模型可以在上百种语言上进行预训练,语言之间的信息并不是互通的,不同的语言模型之间没有共享知识。Facebook的XLM模型克服了信息不互通的难题,它将不同语言放在一起采用新的训练目标进行训练,从而让模型能够掌握更多的跨语言信息。这种跨语言模型的一个显著优点是,对于预训练后的后续任务(比如文本分类或者翻译等任务),训练语料较为稀少的语言可以利用在其他语料上学习到的信息。XLM模型训练有两种方法:一种是只依靠单语数据的无监督方法,另一种是利用平行数据与跨语言模型的有监督方法。通过XLM,可以将任何句子编码到一个共享的embedding空间。

XLM的三个重要组成部分:CLM(Causal Language Modeling)、MLM(Masked Language Modeling)和TLM(Translation Language Modeling )。前两个使用的是单语数据monolingual data(无监督学习);后一个使用的是平行语料(parallel sentences)也就是需要通过监督的方式学习。考虑N种语言的情况,假设有N个单语语料库{C_i}_i=1...N,使用n_i表示C_i中的句子数量。

Shared sub-word vocabulary
XLM通过字节对编码( Byte Pair Encoding,BPE)创建的同一套共享词汇来处理所有语言,这极大地改善了不同语言的嵌入空间的一致性,这些语言共享相同的字母或锚定标记,如数字或专有名词。在从单语语料库中随机抽取的句子的连接上学习BPE分词。句子的抽样根据概率为{q_i}_i=1...N的分布进行抽样,其中q_i表示为:


Causal Language Modeling (CLM)

因果语言建模(Causal Language Modeling,CLM)任务由一个Transformer语言模型组成,该模型经过训练,可以根据句子中的前几个词来模拟一个词的概率P(w_t|w_1, ... , w_t-1, θ)。

Masked Language Modeling (MLM)
掩码语言建模masked language modeling (MLM)任务从文本流中随机抽取15%的BPE标记,80%用[MASK]标记替换,10%用随机标记替换,10%保持不动。

图3. 跨语言的语言模型预训练。


TLM目标将MLM扩展到平行句子对。为了预测一个被掩码的英语单词,该模型可以同时关注英语句子和它的法语翻译,并鼓励将英语和法语的表征对齐。重置目标句子的位置嵌入,以促进对齐

Translation Language Modeling (TLM)
CLM和MLM的目标函数都是无监督的,只需要单语数据。当平行数据可用时,进一步引入了一个新的翻译语言建模( translation language modeling ,TLM)目标函数来改进跨语言的预训练。TLM的目标函数是对MLM的扩展,不考虑单语文本流,而是将平行的句子连接起来。在源句和目标句中随机掩码处理单词。为了预测英语句子中被掩码的单词,该模型既可以关注临近的英语单词,也可以关注法语翻译,鼓励该模型将英语和法语的表述统一起来。特别是,如果英语上下文不足以推断出被掩码的英语单词时,该模型还可以利用法语上下文。为了促进对齐,重新设定了目标句子的位置。

Cross-lingual Language Models
考虑对XLMs(CLM、MLM或TLM)进行跨语言模型预训练:对于CLM和MLM的目标函数,使用由256个标记组成的64个连续句子流来训练模型。在每次迭代中,利用来自同一语言的句子组成一个batch,从上述分布{q_i}_i=1...N中取样,设定公式中α=0.7。当TLM与MLM结合使用时,在这两个目标函数之间交替执行预训练,并以类似的方法对语言进行抽样。


当前 SOTA!平台收录 XLM 共 4 个模型实现资源,支持的主流框架包含 PyTorch 等。

项目 SOTA!平台项目详情页
XLM 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/xlm


Language Models are Unsupervised Multitask Learners


自然语言处理任务,如问题回答、机器翻译、阅读理解和总结,通常在特定任务的数据集上进行监督学习。作者证明,当在一个名为WebText的数百万网页的新数据集上训练时,语言模型能够在没有任何明确监督的情况下学习这些任务。该数据集做了一些简单的数据清理,并且覆盖领域十分广阔。语言模型的容量对zero-shot任务迁移的成功至关重要,增加它可以在不同的任务中以对数线性的方式提高性能。本文提出的最大的模型,GPT-2,是一个1.5B参数的Transformer,在zero-shot的情况下,在8个测试的语言建模数据集中的7个取得了最先进的结果。

GPT-2是GPT的升级版本,其最大的区别在于规模更多,训练数据更多,GPT是12层的transformer,BERT最深24层transformer,GPT-2则是48层,共有15亿个参数。其次,相比于BERT,GPT-2没有采用双向的transformer,依旧采用单向transformer。再次,在预训练阶段,GPT-2采用了多任务的方式,每一个任务都要保证其损失函数能收敛,不同的任务是共享主体transformer参数的,这样能进一步的提升模型的泛化能力,因此在没有fine-turning的情况下依旧有非常不错的表现。综上,GPT-2的特点就是:多任务预训练+超大数据集+超大规模模型。

语言建模通常是由一组数据构成的无监督分布估计,每一条数据都是可变长度的符号序列组成,由于语言具有自然的顺序排列,因此通常将符号上的联合概率分解为条件概率的乘积:


学习某项单一的任务可以用概率学中的条件概率 p(output|input)来表示。对于一般的系统应该能执行许多不同的任务,即使是对于同样的输入,也不仅仅只对输入有要求,对待执行的任务也要有一定的要求。因此模型应该是 p(output|input,task)。这已经在多任务和元学习中得到了不同的体现。

一个通用的语言模型( language model ,LM)应该能够计算出任何字符串的概率(也能生成)。目前的大规模语言模型包括预处理步骤,如小写字母、标记化和词汇外标记,这些步骤限制了可建模字符串的空间。虽然将Unicode字符串作为UTF-8字节序列进行处理可以很好地满足这一要求,但目前的字节级LM在大规模数据集上与单词级LM相比没有竞争力。

字节对编码( Byte Pair Encoding ,BPE)是字符和字级语言建模之间的一个实用的中间地带,它在频繁的符号序列的字级输入和不频繁的符号序列的字符级输入之间进行有效插值。尽管它的名字叫BPE,但参考的BPE实现通常是在Unicode代码点而不是字节序列上操作的。这些实现需要包括Unicode符号的全部空间,以便对所有Unicode字符串进行建模。这将导致在添加任何多符号标记之前,基础词汇量超过130,000。与BPE经常使用的32,000到64,000个符号词汇相比,这个数字大得惊人。相比之下,BPE的字节级版本只需要256大小的基础词汇。然而,直接将BPE应用于字节序列会导致次优的合并,这是因为BPE使用了一种贪婪的基于频率的启发式方法来建立token词汇表。作者观察到BPE包括了许多像狗这样的常用词的版本,因为它们出现了许多变体,如狗...狗!狗?这导致了对有限的 vocabulary slots 和模型容量的次优分配。为了避免这种情况,作者阻止BPE对任何字节序列进行跨字符类别的合并。作者为空格增加了一个例外,这大大地提高了压缩效率,同时只在多个词汇token之间增加了最小的单词碎片。这种输入表示法使我们能够将词级LM的经验优势与字节级方法的通用性结合起来。由于该方法可以给任何Unicode字符串分配一个概率,这使得我们可以在任何数据集上评估LM,而不考虑预处理、 tokenization 或词汇量。

本文语言模型内部采用的是transformer结构,该模型在很大程度上遵循OpenAI GPT模型的细节,只是做了一些修改。首先每一个sub-block的输入的layer normalization被移除了,类似于一个预激活的残差网络,并在最后的self-attention模块中添加了layer normalization。采用修正的初始化方法,考虑了模型深度对当前层的影响,在初始化权重时将剩余层的权值乘以1/sqrt{N},其中N是残缺层的数量,词典被扩展到了50257,context的维度从512提高到了1024,并且batchsize为512。

当前 SOTA!平台收录 GPT-2 共 5 个模型实现资源,支持的主流框架包含 PyTorch、TensorFlow 等。

项目 SOTA!平台项目详情页
GPT-2 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/gpt-2


BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension


BART(Bidirectional and Auto-Regressive Transformers)基本是标准的sequence to sequence形式的transformer,只不过其中的激活函数换成了gelu。BART是encoder-decoder的结构,其encoder端的输入是加了噪音的序列,decoder端的输入是右移的序列,decoder端的目标是原序列。首先,我们先对最经典的BERT、GPT及BART进行对比:

  • GPT:是一种 Auto-Regressive(自回归)的语言模型。它也可以看作是Transformer model的Decoder部分,它的优化目标就是标准的语言模型目标:序列中所有token的联合概率。GPT采用的是自然序列中的从左到右(或者从右到左)的因式分解。
  • BERT:是一种Auto-Encoding(自编码)的语言模型。它也可以看作是Transformer model的Encoder部分,在输入端随机使用一种特殊的[MASK]token来替换序列中的token,这也可以看作是一种noise,所以BERT也叫Masked Language Model。
  • BART:吸收了 BERT 的 bidirectional encoder 和 GPT 的 left-to-right decoder 各自的特点;建立在标准的 seq2seq Transformer model 的基础之上,这使得它比 BERT 更适合文本生成的场景;此外,相比GPT也多了双向上下文信息。在生成任务上获得进步的同时,它也可以在一些文本理解类任务上取得SOTA。

图4. Bert、GPT、Bart对比

如图4,Bart是一个BERT+GPT的结构,不同之处在于相对于BERT中单一的noise类型(只有简单地用[MASK] token进行替换这一种noise),BART在encoder端尝试了多种噪声。其原因和目的也很简单:BERT的这种简单替换导致的是encoder端的输入携带了有关序列结构的一些信息(比如序列的长度等信息),而这些信息在文本生成任务中一般是不会提供给模型的;而BART采用更加多样的noise,目的是破坏掉这些有关序列结构的信息,防止模型去“依赖”这样的信息。具体的预训练任务如下:

图5. 对实验输入进行噪声变换

其中:Token Masking与bert相同。Token Deletion删除token,与Token Masking不同的是模型还要预测在哪个位置删除的。Text Infilling填充文字,缺失的文字片段,片段的长度服从泊松分布,每个文字也是mask的形式。Sentence Permutation句子排列, 根据标点把句子顺序打乱,使其还原。Document Rotation随机选取一个文本让其与其之后的移到最前面,然后让模型去确定哪个句子是最开始的。


当前 SOTA!平台收录 BART 共 1 个模型实现资源,支持的主流框架包含 PyTorch 等。

项目 SOTA!平台项目详情页
BART 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/bart-8

前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。 

网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。

移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。

相关文章
|
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月前
|
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
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
91 0
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
65 0
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
69 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
1月前
|
机器学习/深度学习 自然语言处理 知识图谱
|
29天前
|
机器学习/深度学习 自然语言处理 算法
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
85 0
|
2月前
|
搜索推荐 算法
模型小,还高效!港大最新推荐系统EasyRec:零样本文本推荐能力超越OpenAI、Bert
【9月更文挑战第21天】香港大学研究者开发了一种名为EasyRec的新推荐系统,利用语言模型的强大文本理解和生成能力,解决了传统推荐算法在零样本学习场景中的局限。EasyRec通过文本-行为对齐框架,结合对比学习和协同语言模型调优,提升了推荐准确性。实验表明,EasyRec在多个真实世界数据集上的表现优于现有模型,但其性能依赖高质量文本数据且计算复杂度较高。论文详见:http://arxiv.org/abs/2408.08821
57 7

热门文章

最新文章