GPT
GPT用的是transformer decoder
fine-tuning的输入:最后一个词的向量。
GPT采用单向transformer可以解决Bert无法解决的生成文本任务。
GPT2
1. 适用于文本生成任务
一个字一个字往出蹦的形式
2. 核心是构建通用NLP模型
通常我们会用特定的网络结构去给任务建模,构建通用NLP模型,对p(output | input, task)建模。output ,input, task三者都用向量表示。
3.用无监督的预训练模型去做有监督任务。
把第二阶段替换由Finetuning有监督,换成了无监督做下游任务,因为它扔进去了好多任务数据,且有提示词。
问题1 :GPT2把第二阶段的Finetuning做有监督地下游NLP任务,换成了无监督地做下游任务。为什么这样做?一种看法认为,只是GPT作者想说明在第一阶段Transformer学到了很多通用的包含各个领域的知识。
问题2:为什么GPT 2.0仍然固执地用单向语言模型,而不是双向语言模型呢?
Bert的论文认为,Bert的有效性主要是因为使用了双向语言模型。
1.生成内容后续单词这种模式,单向语言模型更方便;
2、想证明通过增加数据量和模型结构,单向模型未必输双向模型。
问题3:GPT2训练好的语言模型,如何无监督适应下游任务,比如文本摘要,怎么知道是在做文本摘要任务呢?
首先,所有任务都采取相同的往出蹦字的输出模式。GPT2.0给出了一种新颖的生成式任务的做法,就是一个字一个字往出蹦,然后拼接出输出内容作为翻译结果或者摘要结果。GPT-2的输入也会加入提示词,比如输入格式是 文本+TL;DR:,GPT-2模型就会知道是做摘要工作了。
GPT2与GPT的不同点
fine-tuning层:不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。学习的是一个通用NLP模型。
增加数据集:数据集包含800万个网页,大小为40G。GPT2需要的是带有任务信息的数据。
增加网络参数:GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量更是达到了15亿(Bert large是3.4亿)。「小号」12 层,「中号」24 层,「大号」36 层,「特大号」48 层。
-
调整transformer:将layernorm放到每个sub-block之前;在最终自注意块之后添加了额外的层标准化;残差层的参数初始化根据网络深度进行调节。
-
其他:GPT-2将词汇表增加到5万(bert英文是3万,中文是2万);embedding size包括768,1024,1280,1600;可处理单词序列长度从GPT的512提升到1024;batchsize增加到512。