当前位置:   article > 正文

【论文阅读】Language Models are Few-Shot Learners(GPT-3)_大模型的few shot in context learning

大模型的few shot in context learning

前言

本文简要介绍了GPT-3的背景,模型架构,训练数据以及训练方式部分。具体训练细节,实验结果很多,可以在用到的时候再看

Intro

本文剖析了pretrain-finetune架构存在的问题:

  • 对于每个新的任务,都需要大量的标注数据
  • 将表达能力更强的模型(预训练阶段要求用大模型)在比较窄的数据(微调阶段是在narrow数据分布上进行的)上训练是不合理的。大模型的效果并不能泛化到OOD数据上
  • 人类在接触一个下游任务时不需要大量的训练样本,只需要对任务的描述或者几个例子就可以。我们希望NLP模型也能有这种多任务之间无缝衔接的能力

解决上述问题可行的方案:

  • meta-learning:模型在预训练阶段就学到了一系列方法,具备一系列能力。在预测阶段,我们利用这种能力来快速适配到下游任务中。

    • 已经有人通过in-context learning这样做过了,但是效果不好

    在这里插入图片描述

  • LLM: Transformer语言模型参数的每一次增大都会让文本理解能力和其他的NLP下游任务的性能得到提升,而且有证据显示,log损失函数,在模型规模增大后,保持平稳趋势。我们认为:in-context learning的能力也会随着模型参数的增大而增强

我们训练了一个175B的模型GPT-3,在3种设定下测试GPT-3的性能:

  • few-shot learning(in-context learning): 允许一些样例(一般10到100个)出现在模型输入中
  • one-shot learning: 只允许一个样例
  • zero-shot learning: 不允许提供样例,只提供一个自然语言形式的指令

下图展示了在移除单词中多余符号任务上,模型的表现

在这里插入图片描述

  • GPT-3在zero-shot和one-shot设置下能取得不错的结果,在few-shot设定下有时能比得上甚至超过微调的SOTA模型
  • zero-shot和one-shot设置的GPT-3能在快速适应和即时推理任务(单词整理、代数运算和利用只出现过一次的单词)中拥有卓越表现。
  • few-shot设定下,GPT-3能生成人类难以区分的新闻稿
  • few-shot设定下,GPT-3在一些自然语言推理任务(ANLI dataset),阅读理解(RACE, QuAC)上的性能有待提高
  • 不同benchmark上的整体表现如下图所示

在这里插入图片描述

我们还训练了一些小模型(从125 million到13 billion),用于与GPT-3对比。对于大多数任务,在3种设定下,模型性能随大小相对平滑地增加。但是随着模型容量增大,few-shot相较于one,zero-shot的领先幅度变得更大,这说明大模型可能更适合作为meta-learners(larger models are more proficient meta-learners)

Approach

本文的预训练方式GPT-2类似,只不过用了更大的模型,数据量,多样性以及训练时长,in-context learning的方式也相似。不过本文系统分析了不同设置对利用上下文学习的影响,这些设置可以看作对任务相关数据的依赖程度。

  • Fine-tuning:本文并没有训练GPT-3的微调版本,因为主要关注的是task-agnostic性能
  • Few-shot:在预测阶段提供一些样本,但并不进行参数更新。样本的数量是10到100(window size内可容纳的样本数目)
  • One-shot:仅提供一个样本
  • Zero-shot:不提供样本,只给一个用于描述任务的自然语言指令

下图是一个将英文翻译成法语任务的不同设定下的输入形式展示

在这里插入图片描述

本文的不同设定并不是为了相互比较,相互替代。而是在特定基准上,提供性能与采样效率之间权衡的不同问题设定。

Model and Architectures

模型结构,初始化方法,预归一化方法,tokenize方法与GPT-2相同,但在transformer中使用与Sparse Transformer中类似的注意力模式,不同模型参数设定如下表所示

在这里插入图片描述

  • 所有模型的上下文窗口大小都是2048个tokens

Training Dataset

Common Crawl dataset包含近万亿单词,遍历一遍数据集就足够训练我们最大的模型。

  • 然而,不进行数据清洗的数据集质量不高,采用以下三步清洗数据
    • 下载数据集的一个版本,根据与一系列高质量参考语料库的相似性过滤了掉部分语料
    • 在文档级别、数据集内部和数据集之间执行了模糊重复数据消除,以防止冗余,并保持我们的作为过拟合的准确度量的验证集的完整性。
    • 将已知的高质量参考语料库添加到训练组合中,以增强Common Crawl并增加其多样性

使用训练数据的比例入下表所示

在这里插入图片描述

  • 训练时数据不是按比列采样的,高质量的数据集会被采样更多次
  • CommonCrawl和Books2采样少于一次,其他数据集被采样2-3次

Training Process

  • 有研究表明,更大的模型通常用更大的batch size,但是需要更小的学习率。本文在训练中评估梯度噪音的大小来选择batch size

  • 利用矩阵乘法与网络不同层的并行性来进行分布式训练

  • 在V100上训练

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/872458
推荐阅读
相关标签
  

闽ICP备14008679号