正是由于采用了invertible de-tokenizers,本文仍然可以计算数据集的对数概率值,该值可以被认为是一种简单的域自适应结果。本文发现GPT-2在invertible de-tokenizers作用下PPL的值降低了2.5-5个点。
WebText语言模型跨越了不同的领域与数据集,在零样本的情况下8个数据集测试情况中有7个取得了最好的结果,如果在WiliText-2这样的只有1、2百万训练数据的数据集上微调的话效果会有巨大的提升,对于有长期依赖关系的数据集也有很大的提升。但是本文的模型在One Billion Word Benchmark上效果并不如之前做的好,可能是由于本文预训练阶段数据集太大,打乱了其long-range的结构。
其他实验结果请参考原文
讨论与总结
当一个大型的语言模型在一个足够大和多样化的数据集上训练时,它能够在许多领域和数据集上表现良好。GPT-2在8个测试的语言建模数据集中的7个上达到了最先进的性能。该模型在zero-shots环境下能够执行的任务的多样性表明,为最大限度地提高足够多的文本语料的可能性而训练的高容量模型开始学习如何执行大量的任务,而不需要明确的监督。
问题
- 论文主要关注于解决零样本问题,它的解决思路是什么? GPT2使用多任务学习的方式,它的学习目标是使用无监督的预训练模型做有监督的任务。作者认为,当一个语言模型的容量足够大时,它就足以覆盖所有的有监督任务,也就是说所有的有监督学习都是无监督语言模型的一个子集。
- 与GPT相比,GPT2的改进是什么? 相比于GPT,GPT2的模型做了简单调整。GPT-2的主要改进点:多任务预训练+超大数据集+超大规模模型
- 在Pretrain部分基本与GPT方法相同,去掉了fine-tuning层,不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。
- 增加数据集,并对数据进行了质量筛选,而且添加了更宽泛的数据。
- 增加网络参数。GPT是12层的transformer,BERT最深是24层的transformer,GPT-2将Transformer堆叠的层数设置为48层,隐层的维度为1600,参数量更是达到了15亿。
- 调整网络结构。例如Layer normalization前移到每个子模块之前,最后一层自注意力模块多加一层Layer normalization,初始化策略,增加context大小等。
- 与Bert的模型区别是什么?
- 语言模型: Bert和GPT-2虽然都采用transformer,但是Bert使用的是transformer的encoder,即:Self Attention,是双向的语言模型;而GPT-2用的是transformer中去掉中间Encoder-Decoder Attention层的decoder,即:Masked Self Attention,是单向语言模型。
- 结构: Bert是pre-training + fine-tuning的结构;而GPT-2只有pre-training。
- 输入向量: GPT-2是token embedding + position embedding;Bert是 token embedding + position embedding + segment embedding。
- 参数量:Bert是3亿参数量;而GPT-2是15亿参数量。
- Bert引入Masked LM和Next Sentence Prediction;而GPT-2只是单纯的用单向语言模型进行训练。
- 论文的创新点与不足是什么? GPT2最主要的贡献是探索了更大规模的模型在ZERO-SHOT的情况下的表现,没有使用任何微调,仅靠预训练+提示+预测就在8/9个任务里达到了SOTA。 但LM训练大概需要三方面,模型结构,目标函数和数据。和GPT相比,GPT2模型结构和目标函数几乎是一样的,只有数据不一样,这样文章的创新就显得不足。模型大小是BERT large的五倍参数量,两倍的深度。训练成本高。
2022-2023, ironartisan Revision
dcd9b5e