一、背景信息:
GPT2是2019年由OpenAI 提出的预训练语言模型。
GPT2提出语言模型式无监督的多任务学习
。旨在通过无监督学习也能达到和finetune一样的效果,并且拥有更强的泛化能能力。
即提出利用语言模型做下游任务时,不需要下游任务的任何标注信息(zero-shot设定),也不用训练模型。只需要训练一个模型,在多个任务上都能用。
GPT2出自Language Models are Unsupervised Multitask Learners,语言模型是无监督的多任务学习者
二、整体结构:
GPT2继续沿用在GPT中使用的单向 Transformer Decoder 的结构。
相较于GPT模型结构,GPT2做了下面几项改动:
- 将Layer Normalization步骤放置在各模块之前进行。
- 在最后一个Attention后增加了一个Layer Normalization。
- GPT1使用的词向量长度为768,GPT2分别使用了1024、1280、1600长度的词向量。
- GPT1使用的12层的Transformer Decoder,GPT2分别使用了24、36、48层。
- 去掉了fine-tuning层,只有无监督的pre-training阶段,不再针对不同任务分别进行微调建模
三、GPT2的训练
GPT有两个问题:
- 对于下游的每个任务,仍需重新训练模型
- 需要收集有标签的数据
GPT2训练目标: 为解决GPT的这两个问题,GPT-2以使用无监督的预训练模型做有监督的任务作为训练目标,来训练一个泛化能力更强的模型。
多任务学习(Multitask learning) 是指在训练一个模型时,同时使用多个任务不同领域不同来源的数据集,通过多个损失函数来达到一个模式在多个任务上都能用的效果。
GPT2最核心的地方,是在无监督的情况下进行训练,并且实现zero-shot的多任务推理。
GPT2根据已知的上文(残句),预测未知的下文(下一个词)。
模型在预测出每个新词后,该词就被添加在当前词序列(句子)后面,这个序列(句子)会成为模型下一步的新输入。
这种对序列进行条件概率建模方法叫做自回归(auto-regression)