赞
踩
【论文精读】Transformer:Attention Is All You Need
【论文精读】BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding
论文地址:
GPT系列的模型更复杂,要求更高,很难复现;transformer解决机器翻译,一个序列到另外一个序列;Bert想把计算机视觉成熟的先训练一个预训练的模型然后再做微调出子任务的方法搬到NLP上做好,提升技术的效果。在同样模型大小,比如是一个亿级别模型大小时候,Bert的性能要好于GPT。所以后来的文章更愿意用bert文章,因为更容易找到足够的机器把模型跑起来。
GPT:使用通用的预训练来提升语言的理解能力(Improving Language Understanding by Generative Pre-Training)
研究背景: 自然语言理解包括各种不同的任务,例如文本蕴涵、问题回答、语义相似性评估和文档分类。尽管大型未标记文本语料库非常丰富,但用于学习这些特定任务的标记数据却很少,这使得经过区分训练的模型难以充分执行。
作者的方案: 在各种没有标号的数据集(文本语料库)上训练一个预训练语言模型,然后在有标号的数据集上针对每个特定任务训练微调模型。
使用未标记文本中单词级信息的困难:
相关工作:
给定一个无监督的标记语料库 U = { u 1 , . . . , u n } U = \{u_1,..., u_n\} U={u1,...,un}( u i u_i ui表示每个词, U U U表示没有标号的整个文本,是有顺序的),模型使用标准语言建模目标来最大化以下似然函数:
模型:Transformer的解码器
Transformer的编码器可以看到整个序列的所有元素,解码器只能看到当前元素及之前的元素。
U
=
(
u
−
k
,
.
.
.
,
u
−
1
)
U = (u_{-k},..., u_{-1})
U=(u−k,...,u−1)是token的上下文向量,
n
n
n是层数,
W
e
W_e
We是token的embedding矩阵,
W
p
W_p
Wp是位置embedding矩阵。
与BERT的区别: BERT 用的不是标准的语言模型,而是一个带掩码的语言模型,在预测一个被 mask 的词时,既能看到前面的,也能看到后面的,所以使用 Transformer encoder。但是使用编码器还是解码器不是GPT与BERT主要的区别,他们的主要区别在于目标函数的选取,预测未来比完形填空更难,GPT 的目标函数更难。
微调任务里的数据集是有标号的:
对应的目标函数为:
将语言建模作为微调的辅助目标有助于(a)改进监督模型的泛化,(b)加速收敛。因此,最终的目标为:
将模型用于特定的任务(四个典型任务),其中 start,delim,extract 分别是 开始符,分隔符,抽取符,都是一些特殊的标记
图中的Transformer 就是第一部中训练好的模型,可以看到,做下游任务时都不需要改变模型结构。
训练数据集:BooksCorpus 数据集,包含7000篇没有被发表的书
模型大小:12 层 Transformer decoder,每一层的维度是 768
GPT-2:语言模型是无监督的多任务学习器(Language Models are Unsupervised Multitask Learners)
研究背景:
主流任务都是在一个任务上收集一个数据集,然后来训练。这是因为,当前模型的泛化性都不是很好。Bert和GPT提出后,主流是在大的数据集上进行预训练,然后对子任务再 fine-tune。这仍然有两个问题:
作者的方案:
GPT-2 还是做语言模型,但是在扩展到下游任务时,会有 zero-shot 的设定,不需要再重新训练模型。因此训练好之后在任何任务上都能用。
zero-shot:在做到下游任务时,不需要下游任务的任何标注的信息,也不需要重新训练模型。
GPT中,在微调的时候引入了开始符,间隔符等特殊符号,这些是模型在预训练时候没有见到过的(微调的时候会进行学习)。但是GPT-2 做的是 zero-shot,模型在做下游任务时不能进行微调,因此不能引入这些特殊符号,否则模型就会很困惑,输入的形式应该更像自然语言,和之前相似。
这就引入了 prompt(McCann et al 2018年提出),让一些自然语言,来充当一些符号的作用。
这个方法为什么行得通:
数据: Common Crawl是一个网页抓取项目,抓取网页供大家下载。但是信噪比低,有些网页可能就是垃圾网页。使用了 Reddit(算是一些已经过滤好的网页),最后得到4500万个链接,最终的数据集有800w文本,40GB。
一共设计了四个模型:
实验效果: 在一些任务上还不错,一些任务上差一些。但是随着模型大小的增加,效果还在变好。
GPT-3:语言模型是Few-Shot学习器(Language Models are Few-Shot Learners)
稀疏模型:权重可以有很多 0
- Meta-Learning:训练一个很大的模型,泛化性还不错
- in-context Learning:在后面的时候即使告诉我一些训练样本,也不更新我的模型参数
对于普通的NLP模型如BERT和GPT-1,模型的使用方法是:
GPT-3想要做的就是拿掉微调部分,直接解决下游任务。
类比人类做题过程,会看到题型说明,可能还会有一些有答案的例题,然后需要解出剩下的试题。GPT系列想要做的就是类似的事情。
- GPT-2对GPT的变化:GPT2修改了GPT的初始化、预归一化和可逆标记化
- GPT-3对GPT-2的变化:Sparse Transformer
训练了 8 种不同大小的模型,范围从 1.25 亿个参数到 1750 亿个参数三个数量级,最后一个是我们称为 GPT-3 的模型。
作者在Common Crawl 数据集(包含近万亿个单词)上采取了 3 个步骤来提高数据集的平均质量:
最终的数据集如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。