GPT-2:多任务学习

GPT-2继续沿用了原来在GPT中使用的单向 Transformer 模型,而这篇文章的目的就是尽可能利用单向Transformer的优势,做一些BERT使用的双向Transformer所做不到的事。那就是通过上文生成下文文本。

GPT-2的改进

1. 去掉了fine-tuning层:不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务,是很通用的设计。

2. 增加数据集:GPT-2手机了更加广泛,数量更多的语料组成数据集。该数据集包含800万个网页,大小为40G。这些数据是经过过滤后得到的高质量文本。

3. 增加网络参数:GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量达到了15亿。(5倍于BERT的参数量)

4. 调整Transformer:将layer normalization放到每个sub-block之前,并在最后一个self-attention后再增加一个layer normalization

​ 此外,GPT-2将词汇表数量增加到50257个;最大的上下文大小从GPT-1的512提升到了1024 tokens;batch-size增加到512.

模型参数

  • 同样使用了使用字节对编码构建字典,字典的大小:50257
  • 滑动窗口大小:1024
  • batch-size:512
  • Layer Normalization移动到了每一块的输入部分,在每个self-attention之后额外添加了一个Layer Normalization
  • 将残差层的初始化值用image-20221011152741329进行缩放,其中N是残差层的个数

GPT-2训练了4组不同的层数和词向量的长度的模型,见表:

参数量 层数 词向量长度
117M(GPT-1) 12 768
345M 124 1024
762M 36 1280
1542M 48 1600

效果如下:
请添加图片描述
可以看出随着模型的增大,模型的效果是不断提升的。模型仍欠拟合,后续还会加大数据量,做大做强。

GPT-2能够适应多任务

在训练的时候,采用了多任务的方式,不单单只在一个任务上进行学习,而是多个,每一个任务都要保证其损失函数能收敛,不同任务是共享主题Transformer参数的,进一步提升模型的泛化能力,因此在即使没有fine-tuning的情况下,依旧有非常不错的表现。

在fine-tuning有监督任务阶段,GPT-2根据给定输入与任务来做出相应的输出,那么模型就可以表示成下面这个样子:

​ image-20221011131653847
例如可以直接输入:(“自然语言处理”, 中文翻译)来得到我们需要的结果(“Nature Language Processing”),因此提出的模型可以将机器翻译,自然语言推理,语义分析,关系提取等10类任务统一建模为一个分类任务,而不误再为每一个子任务单独设计一个模型。