赞
踩
GPT1的论文:
Improving Language Understanding by Generative Pre-Training
无标签的数据多,有标签的数据少,所以用有标签的数据去训练模型比较难。解决办法是先在无标签的数据上用生成式的预训练(generative pre-training)去得到一个语言模型,然后用有标签的数据针对每个任务去微调(discriminative fine-tuning)模型。只需要改变输入模式就可以,不需要改变模型。(GPT在BERT之前),12个里有9个任务超过当前最好结果。
总之总结一句话就是:无监督预训练加有监督微调
无监督预训练有两个困难:
作者把无监督预训练加有监督微调叫做半监督学习。不同的文章有不同的叫法。
模型构架采用transformer构架
预测下一个token,采用自回归的方式,所以需要masked attention,所以需要transformer的解码器。
GPT自监督学习的任务是预测接下来的token是什么。
比如目前的训练数据是“台湾大学”。先给模型<BOS>这个token,然后GPT输出一个向量
h
1
h_1
h1,用
h
1
h_1
h1预测下一个出现的token。这个数据中,下一个出现的token应该是“台”。详细来看就是:
h
1
h_1
h1先做一个线性变换,然后sofrmax归一化成一个分布,这个分布要与“台”对应的onehot向量越接近越好,也就是交叉熵损失函数。然后输入“台”,来预测下一个出现的token(这个预测联合了<BOS>和“台”)。剩下的依次类推:
<BOS> --> 台
<BOS> ,台 --> 湾
<BOS> ,台,湾 --> 大
<BOS> ,台,湾,大 --> 学
整个构架是transformer的decoder,拿掉cross attention部分。也就是会用到mask attention,也就是当前预测只用到了前面的信息,不会用到后面的信息。
GPT1有微调,这一点和BERT是一样的。所以,无监督预训练加有监督微调对于GPT1和BERT都是一样的。BERT的论文比GPT效果更好是可以理解的,因为BERT还考虑了后面的信息。但是微调这个东西毕竟需要有监督的数据。GPT有一个更大的愿景。。。
GPT1被BERT打败了,下面看看GPT2怎么做回应。
GPT2的论文:
Language Models are Unsupervised Multitask Learners
做了更大的数据集WebText,训练更大的模型1.5Billion(15亿)的参数(BERT是3.4亿)。但是对BERT的优势不是很大。但是GPT2最大的卖点在于zero shot。
在做下游任务的时候,不需要下游任务的任何标注信息。也不要去训练模型。也就是自监督预训练的模型不用再训练就可以用于很多下游任务。
GPT1是在自然的文本上做训练,在微调的时候会加入开始符、分隔符和结束符,这些符号在预训练的时候没有,在微调阶段会通过微调的训练让模型认识这些符号。但是zero shot不做微调,那么怎么让模型认识这些符号呢?下面对论文的其中一段进行翻译:
原文 | 翻译 |
---|---|
Learning to perform a single task can be expressed in a probabilistic framework as estimating a conditional distribution p(output|input). Since a general system should be able to perform many different tasks, even for the same input, it should condition not only on the input but also on the task to be performed. That is, it should modelp(output|input, task). This has been variously formalized in multitask and meta-learning settings. Task conditioning is often implemented at an architectural level, such as the task specific encoders and decoders in (Kaiser et al., 2017) or at an algorithmic level such as the inner and outer loop optimization framework of MAML (Finn et al., 2017). But as exemplified in McCann et al. (2018), language provides a flexible way to specify tasks, inputs, and outputs all as a sequence of symbols. For example, a translation training example can be written as the sequence (translate to french, english text, french text). Likewise, a reading comprehension training example can be written as (answer the question, document, question, answer). McCann et al. (2018) demonstrated it was possible to train a single model, the MQAN,McCann et al. (2018) demonstrated it was possible to train a single model, the MQAN,to infer and perform many different tasks on examples with this type of format. | 学习执行单个任务可以在概率框架中表示为估计条件分布p(output|input)。由于通用系统应该能够执行许多不同的任务,即使对于相同的输入,它也应该不仅以输入为条件,还以要执行的任务为条件。也就是说,它应该建模p(output|input,task)。这在多任务和元学习环境中已经不同形式化。任务调节通常在架构级别实现,例如(Kaiser 等人,2017 年)中的任务特定编码器和解码器,或在算法级别实现,例如 MAML 的内部和外部循环优化框架(Finn 等人,2017 年)。但正如McCann et al. (2018)所举例说明的那样,语言提供了一种灵活的方式来将任务、输入和输出全部指定为一系列符号。例如,翻译训练示例可以编写为序列***(translate to french, english text, french text)***。同样,阅读理解训练示例可以写成 (answer the question, document, question, answer)。McCann等人(2018)证明了可以训练单个模型MQAN,以推断和执行具有这种格式的示例的许多不同的任务。 |
上面一段话的总结就是:对于单任务模型,预测p(output|input)就可以,对于多任务模型,需要预测p(output|input,task),也就是需要把任务作为条件加进去。以往任务这个条件是通过在构架级别或者是算法级别来实现,但是使用语言的方式显然会更加灵活,比如,翻译训练示例可以编写为序列***(translate to french, english text, french text)***。阅读理解训练示例可以写成 (answer the question, document, question, answer)。后面的文献里,这个叫做prompt,也叫做提示。
GPT2的新意度是可以的,但是最后的效果差强人意。主要原因是数据和模型都不够大。下面GPT3就来解决这个事情。
GPT3的论文:
Language Models are Few-Shot Learners
更多的数据,更大的模型。参数量:175Billion的参数,1750亿
few-shot、one-shot以及zero-shot的解释:
few-shot,不做参数更新
李宏毅2021/2022春机器学习课程,自监督学习-GPT野望
GPT,GPT-2,GPT-3 论文精读【论文精读】
GPT系列算法保姆级讲解!
GPT系列论文阅读笔记
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。