论文:Language Models are Few-Shot Learners(语言模型是小样本的学习者)
链接:https://arxiv.org/abs/2005.14165
Official Code:https://github.com/openai/gpt-3
1、背景
- 预训练语言模型趋势:NLP系统中预训练语言表示应用渐广,从单层表示到多层RNN,再到预训练Transformer模型直接微调,性能提升显著,但仍需特定任务数据集和微调。
- 元学习与上下文学习:元学习让模型在训练时获多种技能,推理时快速适应新任务,其中上下文学习通过文本输入指定任务,模型依此前文示例完成后续任务。
- 模型规模增长:Transformer语言模型参数不断增加,能力提升,推测上下文学习能力可能随模型规模扩大而增强。
文章内容:在第 1节简述。在第 2 节中,我们描述了训练 GPT-3 并对其进行评估的方法和方法。第 3 节介绍了零、单和少镜头设置中所有任务的结果。第 4 节解决了数据污染(训练 - 测试重叠)的问题。第 5 节讨论了 GPT-3 的局限性。第 6 节讨论了更广泛的影响。第 7 节回顾了相关工作,第 8 节总结了相关工作。
2、meta-learning元学习
2.1本文中解释(推理输入的上下文context )
- 语言模型元学习
图 1.1:语言模型元学习。在无监督的预训练过程中,语言模型会发展出广泛的技能和模式识别能力。然后,它在推理时使用这些能力来快速适应或识别所需的任务。我们使用术语“上下文学习”来描述此过程的内部循环,该过程发生在每个序列的前向传递中。该图中的序列并不是为了代表模型在预训练期间看到的数据,而是为了表明有时在单个序列中嵌入了重复的子任务。
这张图片展示了在无监督预训练期间通过随机梯度下降(SGD)进行学习的过程。主要包含以下内容:
整体架构
outer loop(外循环):指的是整个无监督预训练过程。
inner loop(内循环):在每个序列(sequence)内部进行的操作。
In - context learning(上下文学习):在每个序列内部进行的学习过程。
outer loop:强调的是训练过程,包括梯度下降(前向和反向)
inner loop:强调的是推理过程,没有梯度下降,只有前向传播(强调这一阶段模型的自学习)
推理和上下文学习(推理使用上下文信息进行学习):
-
正向传递(推理):在神经网络(包括语言模型)中,正向传递(forward pass)是指数据从输入层经过隐藏层流向输出层的过程,模型在此过程中对输入数据进行处理并生成预测结果。
-
信息传递与整合
在正向传递过程中,词元向量所包含的信息在模型层之间不断传递和更新。从输入层开始,经过多层的注意力机制和前馈神经网络的处理,每个词元的表示逐渐丰富和细化,包含了更多关于其在句子、段落或整个文本中的语义、语法和上下文关系等信息。
模型层之间的信息传递是通过向量运算和参数矩阵相乘实现的。每个层根据其自身的参数(在训练过程中学习得到)对输入向量进行操作,并将处理后的结果传递给下一层。例如,注意力机制层的参数决定了词元之间的注意力分布,前馈神经网络层的参数则决定了如何对词元向量进行线性和非线性变换。 -
生成预测结果
在正向传递的最后,模型根据任务的要求生成预测结果。例如,在文本生成任务中,模型会输出下一个可能的词元的概率分布,然后可以根据这个概率分布选择一个词元作为生成的文本的下一个单词;在文本分类任务中,模型可能会输出一个表示输入文本属于各个类别(如积极、消极情感类别)的概率向量,通过比较这些概率来确定文本的分类;在阅读理解任务中,模型可能会输出与问题相关的答案或答案的概率分布等。
正向传递是语言模型处理输入数据并生成预测的核心过程,通过对输入文本的词元化、嵌入、多层神经网络处理以及信息整合,模型能够逐步构建起对输入的理解,并生成与任务相关的合理预测结果。这个过程中,模型的架构设计(如注意力机制和前馈神经网络)以及参数设置(在训练中学习得到)起着关键作用,决定了模型对语言的理解和处理能力。 -
“上下文学习”(in - context learning)的定义
文中使用 “上下文学习” 来描述这个过程中的内部循环。在每个序列的前向传播(forward - pass)过程中,模型会根据当前输入序列的上下文信息进行学习和适应。具体来说,模型会关注序列中的每个元素以及它们之间的关系,并利用这些信息来调整自己的预测或决策。例如,在处理一个句子时,模型会根据句子中前面的单词来理解后面单词的含义和可能的接续方式,同时也会根据整个句子的上下文来判断其在特定任务(如情感分析、语义理解等)中的意义。 -
总的来说,这幅图通过展示语言模型元学习的过程,说明了模型如何在无监督预训练中获取通用能力,并在推理时利用这些能力结合上下文信息来处理各种不同的任务,强调了模型的适应性和上下文学习在这个过程中的重要性。
- 相关术语的定义和区别:
在语言模型的语境中,这段话主要解释了一些相关术语的定义和区别,以避免概念混淆,具体内容如下:
为了避免这种混淆,我们使用术语 “元学习 ” 来捕捉一般方法的内循环 / 外环结构,并使用术语 “in context-learning” 来指代元学习的内循环。我们进一步将描述专业化为 “zero-shot”、“one-shot” 或 “few-shot”,具体取决于推理时提供的演示数量。这
-
“zero - shot transfer”(零样本迁移)术语的歧义性
- 此方法被称为“zero - shot”(零样本)是因为在推理过程中不进行梯度更新。通常情况下,传统的机器学习模型在学习新任务时需要通过梯度下降等优化算法来调整模型参数,以适应新的数据分布和任务要求。而这里的“zero - shot transfer”在推理时不涉及这种参数更新过程。
- 然而,它又常常在推理时向模型提供示例(demonstrations)。这意味着模型在处理新任务时并非完全从零开始,而是可以参考这些示例来进行决策或生成输出。例如,在进行文本分类任务时,虽然没有针对该特定分类任务进行梯度更新训练,但可能会给模型提供一些相关的文本示例作为参考,帮助它理解任务的要求和模式。这种情况使得“zero - shot transfer”这个术语有些模糊,因为它不完全符合从真正意义上的零样本(即没有任何示例或先验知识)中学习的概念。
-
“meta - learning”(元学习)术语的引入
- 为了避免上述混淆,作者使用“meta - learning”(元学习)这个术语来描述整个方法的内循环/外循环结构。内循环指的是模型在推理时根据提供的示例快速适应或识别任务的过程,而外循环则是在训练阶段学习各种技能和模式识别能力的过程。 例如,在训练语言模型时,外循环通过大量的文本数据让模型学习语言的基本结构、语义信息等通用知识;在推理阶段(内循环),模型利用这些已学知识结合新任务的示例来处理具体任务。
- “meta - learning”旨在涵盖模型在推理时两种可能的行为:一是从新任务中完全从头学习(from scratch),二是仅仅识别在训练期间见过的模式(recognizes patterns seen during training)。这是一个重要的区别,因为目前还不完全清楚模型在实际执行零样本、单样本或少量样本学习任务时到底是如何运作的,而“meta - learning”这个术语不偏向于任何一种解释,只是描述了这种内外循环的结构框架,为后续讨论模型行为留下了空间。
-
“in context - learning”(上下文学习)术语的定义
- “in context - learning”专门用于指代元学习中的内循环过程。在这个过程中,模型根据输入序列中的上下文信息(包括提供的示例和自然语言指令等)来进行学习和决策。例如,当模型收到一个新的任务描述和几个相关示例时,它会利用这些上下文信息来理解任务的要求,并尝试生成合适的回答或完成任务。这种学习方式强调了模型在特定上下文环境中快速适应和学习的能力,与传统的基于大量训练数据的学习方式有所不同。
-
“zero - shot”、“one - shot”和“few - shot”的进一步描述
- 这些术语根据在推理时提供给模型的示例数量来进一步细分。“zero - shot”表示不提供任何示例,模型仅根据自然语言描述来处理任务;“one - shot”表示除了自然语言描述外,仅提供一个示例;“few - shot”则表示提供少量(通常在模型上下文窗口允许范围内,如10 - 100个)示例。这些术语的重点在于描述模型在不同示例数量条件下的推理过程,而不涉及模型到底是真正在学习新任务还是仅仅识别已有模式,这个问题将在论文后续部分进行深入讨论。通过这样的术语定义,作者试图更精确地描述模型在不同场景下的行为和能力表现,为研究和评估语言模型的少样本学习能力提供了清晰的框架。
2.2 Meta-learning 在GPT和传统方法中区别
-
传统的 Meta-learning 方法:(如 MAML)通常依赖于模型的参数更新。在这种方法中,模型会通过多任务学习来调整其初始化,使其在新任务上能够快速适应。然而,GPT 的 Meta-learning 能力并不依赖于传统的参数更新方式。
-
Meta-learning 与 Prompt Engineering 的结合:
Meta-learning 的思想是让模型在多任务学习中学到如何通过最少的示例或提示快速适应新任务,而在 GPT 中,这种快速适应通常通过 prompt设计 实现。通过对任务进行 prompt 编程,GPT 学会了如何根据给定的提示来推理和生成输出。因此,GPT 的 Meta-learning 主要体现在 prompt 设计和少样本推理能力上。GPT 通过大规模的预训练模型(例如,GPT-3)学会了通过少量示例(或甚至没有示例)理解任务并生成输出。因此,GPT 通过 少样本学习 和 零样本学习 来“模拟” Meta-learning。 -
与传统 Meta-learning 方法的区别:
传统的 Meta-learning 方法(如 MAML)需要在多个任务上反复训练,并通过梯度更新调整模型参数。而 GPT 通过在预训练阶段学到的通用语言知识,能够通过简单的输入提示快速适应新任务,而无需进行梯度更新。
这使得 GPT 在少样本和零样本学习中的表现非常突出,因为它不需要对任务进行专门的训练或重新调整模型参数,而是能够直接利用其预训练的语言知识来解决问题。
Meta-learning 在 GPT 中的应用与传统方法的最大区别在于它不依赖于显式的参数更新或多任务训练过程,而是通过 预训练 和 prompt engineering 来实现任务的快速适应。
2.3 Meta-learning和Zero、One、Few-shot 区别
区别涉及它们在任务学习中的样本使用方式以及是否涉及模型参数的更新。下面详细对比这些概念,并讨论它们是否涉及参数更新。
总结比较:
特性 | Zero-shot | One-shot | Few-shot | Meta-learning |
---|---|---|---|---|
定义 | 无任务特定数据,依赖预训练知识 | 仅通过一个示例来完成任务 | 通过少量示例学习任务 | 学会如何从多个任务中快速适应新任务 |
任务示例数 | 0 个示例 | 1 个示例 | 2~10 个示例 | 多任务的示例,目标是快速适应新任务 |
是否涉及参数更新 | 通常不涉及参数更新 | 通常不更新参数 | 可以微调参数 | 通常涉及参数更新 |
模型训练方式 | 使用预训练知识,直接推理 | 通常依赖于迁移学习 | 可能微调已有模型参数 | 在多个任务上训练,学习如何快速适应任务 |
目标 | 解决未见过的新任务 | 通过一个示例进行推理 | 在少量样本上快速学习新任务 | 训练模型从多个任务中学习,优化新任务学习 |
依赖的能力 | 强烈依赖通用知识和常识 | 依赖于强大的迁移学习能力 | 强烈依赖迁移学习和少量样本推理 | 学习如何调整学习策略并快速适应任务 |
核心区别:
- Zero-shot:依赖模型的预训练知识和常识,通常不更新参数。
- One-shot:依赖一个示例来完成任务,通常不更新参数,但可以进行微调。
- Few-shot:依赖少量示例来完成任务,可能会进行局部微调,更新部分参数。
- Meta-learning:通过在多个任务上训练,学习如何快速适应新任务,通常涉及参数的更新和调整。
Meta-learning (元学习)
- 定义:Meta-learning,也被称为“学习如何学习”,是一种使模型能够从多个任务中学习如何快速适应新任务的策略。模型通过在多个任务上训练来学会如何在面对新任务时迅速调整和优化其学习策略。
- 是否涉及参数更新:通常涉及参数更新。元学习的核心是让模型能够在面对新任务时,通过少量的训练步骤进行调整或微调。这种方法通常会使用一种称为 meta-optimizer 的算法来更新模型的参数,以便它能够更好地从少量样本中学习。常见的元学习方法(如 MAML)会通过多个任务的训练来学习如何进行有效的参数更新。
- 例子:如果一个模型被训练来识别不同类型的水果(任务1),然后再训练识别不同类型的动物(任务2),它学会如何从这两种任务中快速调整自己的学习策略。当模型遇到新的任务(例如,识别汽车)时,它能够在少量样本的帮助下快速适应,并进行有效的分类。
3、模型架构
图1:【左图为gpt1, 右图为gpt2】
图2:gpt3相对gpt2架构的改进
- 继承 GPT - 2 架构:GPT - 3 沿用了 GPT - 2 的模型和架构设计,包括其修改后的初始化方法、预归一化(pre - normalization)技术以及可逆分词(reversible tokenization)策略。这些技术在 GPT - 2 中已经被证明在一定程度上有助于提高模型的性能和训练效率,GPT - 3 在此基础上进一步改进和扩展。
- 注意力机制改进:与 GPT - 2 不同的是,GPT - 3 在 Transformer 层中使用了交替密集(alternating dense)和局部带状稀疏(locally banded sparse)的注意力模式,类似于 Sparse Transformer 中的设计。参考
模型参数说明:
参数名称 | 解释 |
---|---|
模型名称(Model Name) | 用于区分GPT - 3的不同版本模型,从小到大依次为“GPT - 3 Small”到“GPT - 3 175B”(即“GPT - 3”),每个名称对应特定的参数配置。 |
模型参数数量(nparams) | 衡量模型复杂度和表达能力,指模型中可训练参数的总数,单位为百万(M)或十亿(B)。M(百万Million)=10^6 ; B(十亿Billion)=10^9 。例如“GPT - 3 Small”有1.25亿个参数,参数越多模型学习语言模式的能力越强,但训练资源需求也越高。 |
层数(nlayers) | 表示模型中Transformer层的数量,Transformer层对输入文本进行转换和特征提取,层数越多越能捕捉深层次语义和语法结构,但可能面临梯度问题。如“GPT - 3 Small”有12层,“GPT - 3 175B”有96层。 |
模型维度(dmodel) | 决定Transformer架构中每个瓶颈层(bottleneck layer)单元数量,影响输入信息表示维度,高维度可表示更丰富信息,但计算成本和内存需求增加。像“GPT - 3 Small”的dmodel为768,“GPT - 3 175B”为12288,且前馈层大小通常是瓶颈层的四倍。 |
注意力头数量(nheads) | 代表Transformer架构中多头注意力机制的头数,多头注意力可从多角度关注文本,头数越多捕捉语义关系能力越强,但计算复杂度增加。例如“GPT - 3 Small”有12个注意力头,“GPT - 3 175B”有96个。 |
注意力头维度(dhead) | 每个注意力头的维度大小,决定关注信息粒度和表示能力,与模型维度相关(dmodel = nheads * dhead)。如“GPT - 3 Small”和“GPT - 3 Medium”的dhead为64,“GPT - 3 175B”为128。 |
批量大小(Batch Size) | 训练时一次迭代使用的样本数量,大的批量大小提高计算效率但需更多内存,小批量可能使梯度估计不稳定但有时利于收敛。如“GPT - 3 Small”和“GPT - 3 Medium”批量大小为0.5M,“GPT - 3 175B”为3.2M。 |
学习率(Learning Rate) | 控制模型训练中参数更新步长的超参数,影响收敛速度和性能。大学习率初期收敛快但可能振荡或发散,小学习率训练慢。如“GPT - 3 Small”学习率为6.0x10 - 4,“GPT - 3 175B”为0.6x10 - 4,训练中常结合衰减策略。 |
dff | 前馈网络(feed - forward network)中的维度,决定了前馈网络内部计算的参数规模,影响模型对信息的转换和传递能力。 |
4、研究方法
4.1 数据集
数据集主要来源为Common Crawl,但发现未过滤或轻过滤版本质量低于精选数据集,因此采取三个改进步骤:下载并过滤Common Crawl(基于与高质量参考语料库相似性)、进行模糊去重(文档级,跨数据集)、添加高质量参考语料库(如扩展WebText、Books1、Books2和Wikipedia)。训练时数据集采样不按大小比例,高质量数据集采样更频繁,接受少量过拟合以换取更高质量训练数据。同时,由于模型训练数据来自互联网,可能存在与测试集重叠问题(数据污染),虽已尽力检测和处理,但仍可能对部分数据集结果有影响,对于受污染严重的数据集,根据情况选择不报告结果或标记星号。
附录A:通用爬取数据(Common Crawl)过滤详情,如 2.2 节所述,我们采用了两种技术来提升通用爬取数据集的质量:(1)对通用爬取数据进行过滤;(2)模糊去重。
表2.2:用于训练GPT-3的数据集。“训练组合中的权重”是指训练期间从给定数据集中抽取的示例的比例,我们故意不使其与数据集的大小成比例。因此,当我们训练3000亿标记时,一些数据集在训练期间最多被看到3.4次,而其他数据集的看到次数不到一次。
参数名称 | 解释 |
---|---|
Dataset | 列出了用于GPT - 3模型训练的五个数据集,分别是经过过滤的Common Crawl、WebText2、Books1、Books2和Wikipedia,它们共同构成模型的训练数据来源。 |
Quantity (tokens) | 表示每个数据集的数据规模,以词元(token)为单位。例如Common Crawl(过滤后)有4100亿个词元,数据量最大;Wikipedia有30亿个词元,相对数据量较小。 |
Weight in training mix | 指每个数据集在训练过程中所占的相对重要性权重。Common Crawl(过滤后)权重最高为60%,意味着模型训练时更多依赖该数据集学习语言模式;Wikipedia权重为3%,相对较低。 |
Epochs elapsed when training for 300B tokens | 展示在训练达到3000亿词元过程中,每个数据集被使用的轮数。如Common Crawl(过滤后)经过0.44轮,WebText2经过2.9轮,该参数反映数据集在训练中的使用频率和重要性程度。 |
4.2 训练
表 2.1 显示了我们使用的参数设置。为了训练较大的模型而不运行内存溢出,我们在每个矩阵乘法内使用模型并行性的混合,并在网络的各层之间使用模型并行性。所有模型都在 Microsoft 提供的高带宽集群的一部分上的 V100 GPU 上进行了训练。训练过程和超参数设置的详细信息在附录 B 中进行了描述。
训练参数设置:
表 2.1:我们训练的模型的大小、架构和学习超参数(以标记为单位的批量大小和学习率)。所有模型都经过了总共 3000 亿个代币的训练。
附录B:模型训练细节,训练过程和超参数设置的详细信息在附录 B 中进行了描述
4.3 评估
-
少样本学习评估
- 从任务训练集随机抽取K个示例(0 - 2048,取决于任务和模型上下文窗口)作为条件评估测试集,对于LAMBADA和Storycloze(无监督训练集)从开发集抽取示例评估测试集,Winograd(原始版本)直接从其数据集抽取示例。K值通常越大越好,对于有开发集和测试集的任务,先在开发集上实验确定最佳K值再用于测试集;对于一些任务还使用自然语言提示(除示例外或当K = 0时)。
- 在进行少样本学习评估时,对于评估集中的每一个示例,都需要为模型提供一些上下文信息来辅助其进行预测和判断。这里的做法是从该任务对应的训练集中随机抽取 K 个示例,将这些抽取的示例作为条件(conditioning)提供给模型。这些条件示例之间的分隔方式根据任务的不同有所区别,有的任务使用 1 个换行符分隔,有的任务则使用 2 个换行符分隔。这样做的目的是为了让模型在面对评估集中的新示例时,能够参考这些从训练集中抽取的相关示例,从而更好地理解任务要求并做出合理的响应。例如,在一个文本分类任务中,如果要评估一个新句子的类别,从训练集中抽取的 K 个句子(包含类别标签)可以帮助模型学习到不同类别句子的特征和模式,进而对新句子进行分类预测。
- 特殊任务的样本来源
对于 LAMBADA 和 Storycloze 任务,由于没有可用的监督训练集,所以从开发集中抽取条件示例,并在测试集上进行评估。而对于 Winograd(原始版本,非 SuperGLUE 版本)任务,因为只有一个数据集,所以直接从该数据集中抽取条件示例。 - K 值的选择
K 值可以是从 0 到模型上下文窗口允许的最大值之间的任意值,所有模型的上下文窗口大小为 nctx = 2048,通常能容纳 10 到 100 个示例。一般来说,较大的 K 值通常(但不总是)会使模型表现更好,因为更多的示例可以提供更丰富的上下文信息。当有单独的开发集和测试集时,会先在开发集上尝试几个不同的 K 值,通过比较模型在这些 K 值下的性能,选择表现最佳的 K 值,然后将其应用于测试集,以确保在测试集上得到最可靠的评估结果。
-
不同任务类型评估方法
- 选择题任务:提供K个上下文加正确完成示例,后跟一个仅上下文示例,比较每个完成选项的语言模型似然(多数任务按每词元似然比较,少数数据集如ARC、OpenBookQA、RACE通过计算无条件概率归一化似然)。
- 二分类任务:给选项赋予更有语义意义的名称(如“True”或“False”)后按选择题方式处理,有时也采用类似[RSR + 19]的任务框架(详见附录G)。
- 自由形式完成任务:使用与[RSR + 19]相同参数的束搜索(束宽4,长度惩罚α = 0.6),根据数据集标准使用F1相似度分数、BLEU或精确匹配评分。
-
结果报告
- 最终结果在测试集(公开时)上报告,对于模型太大无法在测试服务器运行的情况,报告开发集结果,少数数据集(SuperGLUE、TriviaQA、PiQa)在测试服务器提交结果(仅提交200B少样本结果,其他报告开发集结果)。
4.4计算量和性能关系
图 3.1:使用计算平滑扩展性能。性能(以交叉熵验证损失衡量)随用于训练的计算量遵循幂律趋势。在
[
K
M
H
+
20
]
[KMH+20]
[KMH+20] 中观察到的幂律行为继续了另外两个数量级,与预测曲线的偏差很小。对于此图,我们从计算和参数计数中排除了嵌入参数。语言模型的性能遵循幂律(power - law)。
这张图展示了验证损失(Validation Loss)与计算量(Compute,单位为PetaFLOP/s - days)以及模型参数数量(Parameters)之间的关系。图中有多条不同颜色的曲线,代表不同模型的验证损失随着计算量增加的变化情况。
在图的左下角有一个标注:
L
=
2.57
⋅
C
−
0.048
L = 2.57 \cdot C^{-0.048}
L=2.57⋅C−0.048,这可能是描述验证损失与计算量关系的一个公式。
从图中可以看出:
- 随着计算量的增加,所有模型的验证损失都在下降。
- 不同颜色的曲线代表不同参数数量的模型,曲线颜色从左到右逐渐变化,右侧的颜色对应着更大的参数数量(从 1 0 6 10^6 106到 1 0 11 10^{11} 1011)。
这种图表通常出现在深度学习研究领域,用来展示模型在训练过程中,随着计算资源的增加,模型的泛化性能(通过验证损失来衡量)是如何变化的。并且可以观察到,在给定足够的计算资源时,更大参数数量的模型往往能达到更低的验证损失。
4.5 模型大小和训练算力关系
图2.2:训练期间使用的总计算量。根据神经语言模型缩放定律中的分析
[
K
M
H
+
20
]
[KMH+20]
[KMH+20]我们在比典型情况少得多的标记上训练更大的模型。因此,尽管GPT-33B几乎比RoBERTa-大(355M参数)大10倍,但在预训练期间,这两个模型都需要大约50 petaflop/s天的计算量。这些计算的方法可以在附录D中找到。
-
定义
- Petaflop/s - days是一种用于衡量计算量的单位。其中,“Petaflop/s”表示每秒千万亿次浮点运算(Peta是10¹⁵,flop是浮点运算,s是秒),“days”表示天数。简单来说,这个单位衡量的是在一定天数内每秒能够进行千万亿次浮点运算的总量。
- 例如,如果一个计算任务的计算量是1 Petaflop/s - days,这意味着在一天内,该计算任务以每秒进行1千万亿次浮点运算的速度进行计算。(在1 Petaflop/s 的算力下,要计算多少天才能完成)
-
定义
- TFLOPS(TeraFLOPS)
- TFLOPS 表示每秒万亿次浮点运算(Tera 是 10¹²,FLOPS 是 Floating - Point Operations Per Second 的缩写)。它是衡量计算机处理器,特别是显卡(GPU)或其他计算硬件在处理浮点运算时速度的一个单位。例如,一款显卡的浮点运算性能为 5 TFLOPS,意味着它每秒能够执行 5 万亿次浮点运算。
- PFLOPS(PetaFLOPS)
- PFLOPS 表示每秒千万亿次浮点运算(Peta 是 10¹⁵)。这是一个比 TFLOPS 更大的计算性能度量单位。例如,一个超级计算机的运算速度达到 10 PFLOPS,说明它每秒可以进行 10 千万亿次浮点运算。
- TFLOPS(TeraFLOPS)
-
为了计算不同显卡在达到 1 Petaflop/s 的计算量所需要的天数,我们可以按照以下步骤来进行估算:(Petaflop/s - days和显卡型号对应关系,在该显卡下Petaflop一天的计算量该显卡需要计算多少天)
假设:
- 1 Petaflop = 1 0 15 10^{15} 1015 FLOPS。
- 我们需要计算的是在一个显卡的浮点运算能力下,达到 1 Petaflop 需要多少天。
计算公式:
计算天数
=
1
Petaflop
显卡每秒的浮点运算能力
×
1
60
×
60
×
24
\text{计算天数} = \frac{1 \text{ Petaflop}}{\text{显卡每秒的浮点运算能力}} \times \frac{1}{60 \times 60 \times 24}
计算天数=显卡每秒的浮点运算能力1 Petaflop×60×60×241
计算过程:
我们将显卡的浮点运算能力转换为 Petaflop/s 并用公式计算所需的天数。
显卡型号和其浮点运算能力
以下是一些显卡的浮点运算能力(基于双精度浮点运算 FP64):
显卡型号 | 每秒浮点运算能力 (FP64) | 每天计算量所需天数 |
---|---|---|
NVIDIA A100 | 9.7 TFLOPS (0.0097 PFLOPS) | 1 0.0097 × 1 86400 ≈ 106 \frac{1}{0.0097} \times \frac{1}{86400} \approx 106 0.00971×864001≈106 天 |
NVIDIA V100 | 7 TFLOPS (0.007 PFLOPS) | 1 0.007 × 1 86400 ≈ 163 \frac{1}{0.007} \times \frac{1}{86400} \approx 163 0.0071×864001≈163 天 |
NVIDIA H100 | 60 TFLOPS (0.06 PFLOPS) | 1 0.06 × 1 86400 ≈ 19 \frac{1}{0.06} \times \frac{1}{86400} \approx 19 0.061×864001≈19 天 |
AMD MI250X | 47.9 TFLOPS (0.0479 PFLOPS) | 1 0.0479 × 1 86400 ≈ 22 \frac{1}{0.0479} \times \frac{1}{86400} \approx 22 0.04791×864001≈22 天 |
详细表格:
显卡型号 | 每秒浮点运算能力 (FP64) | 每天计算量所需天数 |
---|---|---|
NVIDIA A100 | 9.7 TFLOPS (0.0097 PFLOPS) | 106 天 |
NVIDIA V100 | 7 TFLOPS (0.007 PFLOPS) | 163 天 |
NVIDIA H100 | 60 TFLOPS (0.06 PFLOPS) | 19 天 |
AMD MI250X | 47.9 TFLOPS (0.0479 PFLOPS) | 22 天 |
我们计算每种显卡的 FP64 和 FP32 精度下,计算 1 Petaflop 所需的天数。
FP64 精度:
显卡型号 | FP64 性能 (PFLOPS) | 计算天数 (FP64) |
---|---|---|
NVIDIA A100 | 0.0097 PFLOPS | 1 0.0097 × 1 86400 ≈ 106 \frac{1}{0.0097} \times \frac{1}{86400} \approx 106 0.00971×864001≈106 天 |
NVIDIA V100 | 0.007 PFLOPS | 1 0.007 × 1 86400 ≈ 163 \frac{1}{0.007} \times \frac{1}{86400} \approx 163 0.0071×864001≈163 天 |
NVIDIA H100 | 0.06 PFLOPS | 1 0.06 × 1 86400 ≈ 19 \frac{1}{0.06} \times \frac{1}{86400} \approx 19 0.061×864001≈19 天 |
AMD MI250X | 0.0479 PFLOPS | 1 0.0479 × 1 86400 ≈ 22 \frac{1}{0.0479} \times \frac{1}{86400} \approx 22 0.04791×864001≈22 天 |
FP32 精度:
显卡型号 | FP32 性能 (PFLOPS) | 计算天数 (FP32) |
---|---|---|
NVIDIA A100 | 0.0195 PFLOPS | 1 0.0195 × 1 86400 ≈ 53 \frac{1}{0.0195} \times \frac{1}{86400} \approx 53 0.01951×864001≈53 天 |
NVIDIA V100 | 0.015 PFLOPS | 1 0.015 × 1 86400 ≈ 77 \frac{1}{0.015} \times \frac{1}{86400} \approx 77 0.0151×864001≈77 天 |
NVIDIA H100 | 0.12 PFLOPS | 1 0.12 × 1 86400 ≈ 9 \frac{1}{0.12} \times \frac{1}{86400} \approx 9 0.121×864001≈9 天 |
AMD MI250X | 0.0958 PFLOPS | 1 0.0958 × 1 86400 ≈ 11 \frac{1}{0.0958} \times \frac{1}{86400} \approx 11 0.09581×864001≈11 天 |
结论:
从表格可以看出,要达到 1 Petaflop 的计算量,显卡型号的计算天数差异很大。最新的显卡如 NVIDIA H100 显然在计算量上远优于其他型号,所需天数较少。而老款显卡如 NVIDIA V100 或者 A100 则需要更长时间。
5、数据污染
由于训练数据来自互联网,可能存在与测试集重叠问题。通过检查重叠并过滤部分数据,发现数据污染对模型性能影响较小,但仍对部分数据集结果进行标记或排除,未来需进一步解决此问题。
第4节围绕GPT - 3模型训练中的数据污染问题展开研究,核心是评估其对模型性能的影响并采取措施应对,具体内容如下:
5.1 数据污染的背景与处理尝试
- 污染来源与风险:GPT - 3模型训练数据源于互联网,规模巨大,与基准测试集可能存在重叠,引发数据污染风险。这可能使模型在评估时因预先接触测试数据而表现出不准确的性能,影响对模型真实能力的评估。
- 初始处理措施及漏洞:团队曾尝试搜索并移除训练数据与基准测试集间的重叠部分,通过检测13 - gram重叠(短示例则考虑整体重叠)来识别可能的污染数据。但一个bug导致部分重叠未被完全清除,且因重新训练成本高而无法再次训练模型,这给后续研究带来潜在风险,即模型性能评估可能受污染数据干扰。
- 确定潜在污染示例
- 13 - gram 重叠检测:将基准测试中的每个示例与预训练集进行比较,检查是否存在 13 - gram 的重叠部分。13 - gram 是由 13 个连续的字符(通常是单词或单词的一部分,忽略标点符号和空格等)组成的序列。如果一个示例中的某个 13 - gram 序列在预训练集中出现过,那么这个示例就被视为可能受到污染。例如,对于一个句子 “The quick brown fox jumps over the lazy dog”,会依次检查其中所有长度为 13 的字符序列(如 “The quick brown fox jumps” 等)是否在预训练集中存在。
- 短示例处理:当示例长度小于 13 - gram 时,采用更严格的标准,即只要该示例与预训练集中的任何内容完全重叠,就认定为可能的污染示例。比如一个只有 5 个单词的短句,如果它在预训练集中完整出现过,就会被标记。
- 确定潜在污染示例
附录C: 测试集污染研究的详细信息,测试集污染研究n-gram,4节
5.2 数据污染对模型性能影响的评估过程
- 构建清洁版本数据集:为衡量污染影响,团队构建各基准测试的“清洁”版本,去除所有可能泄露(即与预训练集有13 - gram或整体重叠)的示例,以确保清洁子集无潜在污染,为准确评估模型在未见过数据上的性能提供基础。
- 不同任务下的评估分析
- 阅读理解任务(如QuAC、SQuAD2、DROP):大量任务示例初被标记为潜在污染,但经手动检查,虽源文本在训练数据中有重叠,问题/答案对却未被包含,模型仅获背景信息,故难以确定污染对模型性能的真实影响,说明污染未直接影响模型回答问题的关键能力。
- 翻译任务(如德语 - 英语翻译):WMT16德语 - 英语测试集中25%示例被标记潜在污染,多为新闻事件单语匹配,非成对句子相似,对性能影响小(约1 - 2 BLEU),表明污染未严重干扰模型的翻译能力评估。
- 单词重组和相关任务(如Reversed Words、Anagrams):因任务特点用2 - gram过滤,标记重叠多为琐碎情况(如回文或简单重组),去除后虽增加难度但非实质污染,对相关任务(如Symbol Insertion)性能无明显影响,显示模型处理此类任务时受污染影响小。
- PIQA任务:29%示例被标记污染,清洁子集性能下降3个百分点(相对下降4%),虽测试数据集创建晚且标签隐藏,但部分网页在训练集,小模型也有类似性能下降,推测为统计偏差而非单纯记忆问题,意味着数据分布变化影响模型性能。
- Winograd任务:45%示例被标记污染,清洁子集性能下降2.6%,虽部分模式在训练集但格式不同,仍标记结果,说明污染对模型处理语义歧义任务有一定影响。
- 语言建模任务(如Wikitext任务、1BW):多个基于Wikipedia的语言建模基准测试数据集几乎全在训练数据中,无法提取清洁子集,故未报告结果,凸显这些任务中数据污染问题严重影响评估。
5.3 研究结论与局限性
- 结论:尽管部分基准测试潜在污染程度高,但多数情况下模型性能变化小,未发现污染程度与性能差异明显相关。推测是保守检测方法高估污染或其对性能影响小,模型能一定程度处理潜在污染数据。
- 局限性:研究无法确保清洁子集与原始数据集分布相同,记忆与统计偏差可能相互作用影响性能评估,难以确定性能变化原因,为准确评估数据污染影响带来困难,未来需探索更精确方法解决数据污染问题。
5.4 图4.1:去重输入文本数和模型大小关系
图 4.1: GPT-3 训练曲线 我们在训练分布的去重验证拆分上测量模型在训练期间的性能。尽管训练和验证性能之间存在一些差距,但这种差距仅随着模型大小和训练时间的增加而微乎其微,这表明大部分差距来自难度差异,而不是过度拟合。
这张图展示了GPT - 3的训练曲线(GPT - 3 Training Curves)。这张图主要展示了GPT - 3模型在训练过程中,不同参数数量的模型随着处理标记数量的增加,其训练损失和验证损失的变化情况。图中的关键信息:
- 纵轴
- 左侧纵轴表示交叉熵损失(Cross - Entropy Loss,单位是nats/token,smoothed),范围从1.50到3.50。交叉熵损失是用于衡量模型预测与真实标签之间差异的一种指标,在自然语言处理中常用于评估语言模型的性能。损失值越小,模型性能越好。
- 右侧纵轴表示模型参数数量(Model Parameters),使用对数刻度,范围从10⁸到10¹¹。模型参数数量是衡量模型规模的一个重要指标,参数越多,模型通常越复杂。
- 横轴
- 横轴表示已经处理的标记数量(Tokens Elapsed,单位是数十亿,Billions),范围从0到300。在自然语言处理中,标记可以是单词、子词等文本单元,这里表示模型在训练过程中已经处理的文本单元数量。
- 曲线类型
- 图中有两种曲线:
- 虚线(Train Loss)表示训练损失,即模型在训练数据上的交叉熵损失。
- 实线(Validation Loss)表示验证损失,即模型在验证数据上的交叉熵损失。
- 图中有多条不同颜色的曲线,颜色从黄色到紫色不等,每种颜色对应不同参数数量的模型。颜色越偏向紫色,模型参数数量越多(如10¹¹),颜色越偏向黄色,模型参数数量越少(如10⁸)。
- 图中有两种曲线:
图4.1解释
- 训练过程中的模型性能测量
- 在训练期间,通过在训练数据分布的去重验证子集(deduplicated validation split of our training distribution)上进行测量来评估模型性能。去重验证子集的使用有助于更准确地衡量模型在未见过的数据上的表现,避免因训练数据中的重复内容而导致对模型性能的高估。通过在这样的验证集上进行评估,可以了解模型在训练过程中的泛化能力发展情况,即模型是否能够将在训练数据中学到的知识应用到新的数据上。例如,如果模型在训练集上表现良好,但在验证集上性能不佳,可能意味着模型过度拟合了训练数据,而无法很好地处理新的数据模式🔶x-y🔷。
- 训练与验证性能的差距分析
- 虽然训练性能(training performance)和验证性能(validation performance)之间存在一定差距,但这个差距随着模型大小(model size)和训练时间(training time)的增加仅增长极小。这一现象表明,大部分的差距并非源于模型的过拟合(overfitting),而是来自于任务难度的差异(difference in difficulty)。在一般情况下,如果模型出现过拟合,随着模型规模增大或训练时间延长,模型会过度学习训练数据中的细节和噪声,导致在验证集上的性能下降,从而使训练与验证性能的差距增大。然而,图4.1中显示的情况是差距增长极小,这意味着模型在训练过程中较好地捕捉到了数据中的通用模式,而不是仅仅记忆训练数据,从而能够在不同规模和训练阶段下保持相对稳定的泛化能力,即使面对验证集这种相对更具挑战性的任务,也不会因为过拟合而导致性能大幅下降🔶x-y🔷。
图4.1展示了GPT - 3模型在训练过程中的性能变化情况,通过对训练与验证性能差距的分析,为理解模型的泛化能力和训练效果提供了重要依据,表明GPT - 3模型在训练过程中能够有效地学习到数据中的有用信息,而不是过度拟合训练数据。
5.5 图 4.2数据清洁度和性能关系
图 4.2: 基准污染分析 我们构建了每个基准的清洁版本,以检查训练集中是否存在潜在污染。x 轴是已知数据集中有多少数据是干净的保守下限,并且 y 轴显示仅对经过验证的干净子集进行评估时的性能差异。大多数基准测试的性能变化可以忽略不计,但有些基准测试被标记为需要进一步审查。在检查中,我们发现了一些 PIQA 和 Winograd 结果受到污染的证据,我们在第 3 部分用星号标记相应的结果。我们没有发现其他基准受到影响的证据。
这张图展示了在不同数据集清洁度下,多个自然语言处理(NLP)任务的性能变化情况。以下是详细的解读方法:
- 坐标轴
- 横轴(X轴)
- 表示数据集中清洁数据的百分比(Percentage of Data Clean in Dataset),范围从0%到100%,以25%为间隔递增。
- 纵轴(Y轴)
- 表示性能变化的百分比(Percent Change in Performance, F1 or BLEU),范围从 - 30%到30%,以10%为间隔递增。
- 数据点和任务(不理解)
- 图中有多个蓝色的数据点,每个数据点代表一个NLP任务。具体任务包括:
- QuAC:位于图的左上角,表现出随着数据清洁度增加,性能提升显著。
- Symbol Insertion
- SQuADv2
- Winograd
- PIQA、WMT16 en - > de、WMT16 de - > en
- Anagrams 2、Anagrams 1
- Reversed Words
- DROP:位于图的左下角,表现出随着数据清洁度增加,性能有所下降。
- 性能变化趋势
- 大部分任务的数据点在横轴方向(数据清洁度增加)上呈现出向右移动的趋势。
- 对于大多数任务,随着数据集中清洁数据的百分比增加,性能变化百分比呈现出不同程度的上升或平稳趋势。例如:
- QuAC:性能提升幅度最大,随着数据清洁度接近100%,性能提升超过20%。
- Symbol Insertion:在数据清洁度达到25%左右时,性能有一定提升,之后趋于平稳。
- SQuADv2和Winograd:在数据清洁度约为50%时,性能有轻微提升。
- PIQA、WMT16 en - > de、WMT16 de - > en、Anagrams 2、Anagrams 1、Reversed Words:这些任务在数据清洁度约为75%时,性能有一定提升。
- DROP:与众不同,随着数据清洁度增加,性能有轻微下降。
- 图例和注释
- 图的右侧有两个注释:
- 绿色箭头指向右上方,注释为“eval on only clean data did better”,表示仅在清洁数据上评估时性能更好。
- 红色箭头指向右下方,注释为“eval on all data (including dirty) did better”,表示在所有数据(包括脏数据)上评估时性能更好。
这张图主要展示了自然语言处理任务在不同数据清洁度下的性能变化,表明大多数任务在清洁数据比例增加时性能会提升。
6、 研究局限
- 模型性能局限:文本合成存在语义重复、连贯性和逻辑性问题,在常识物理等离散语言任务上表现弱,在一些比较任务和阅读理解任务的少样本学习性能不佳。
- 结构和算法局限:实验未用双向架构或其他训练目标,影响任务性能;预训练目标缺乏对重要性的区分,且模型未基于其他经验领域,限制其能力。
- 预训练效率问题:预训练样本效率低,虽测试时样本效率提升,但仍低于人类。
- 少样本学习机制不明:GPT-3少样本学习是新任务学习还是任务识别不明确,理解其机制是未来研究方向。
- 模型推理成本高:GPT-3推理成本高、不便携,蒸馏技术可能是解决方向。
7、社会影响
- 有益应用:可用于代码和写作自动完成、语法辅助、游戏叙事生成、搜索引擎响应改进和回答问题等。
- 潜在危害
- 恶意使用:如生成假新闻、垃圾邮件或有害信息,模型难以区分可信与不可信信息源,可能放大偏见和错误信息。
- 偏差、公平性和代表性问题:模型可能学习并放大训练数据偏差,在性别、种族、宗教等方面表现出不公平关联,需深入研究和干预。
- 能源消耗问题:训练模型能耗高,但训练后生成内容能耗低,模型蒸馏等技术可提高效率。
8、附录说明
附录A:通用爬取数据(Common Crawl)过滤详情,如 2.2 节所述,我们采用了两种技术来提升通用爬取数据集的质量:(1)对通用爬取数据进行过滤;(2)模糊去重。
附录B:模型训练细节,训练过程和超参数设置的详细信息在附录 B 中进行了描述,2.3节
附录C: 测试集污染研究的详细信息,测试集污染研究n-gram,4节
附录D: 用于训练语言模型的总计算, 模型大小和训练算力关系,2节
附录E:合成新闻文章的人体质量评估,真人判别文章是否是模型生成,3.9.4节
附录F: 来自 GPT-3 的其他样本,其他非新闻示例可在附录 F 中找到,3.9.5节
附录G:任务措辞和规范的详细信息,2.4节,2.1节
从任务训练集随机抽取K个示例作为条件评估测试集,不同任务评估例子(2.4节)
所有任务描述、示例以及提示的确切措辞可在附录 G 中找到(2.1节)
- 附录G:任务措辞和规范的详细信息(解释):
任务措辞和规范的详细信息,简单来说就是在设定和开展各类语言相关任务时,对任务具体如何表述以及相关要求、限定等方面细致的说明,以下展开介绍:
任务措辞方面:指的是描述任务时所选用的具体语句、用词方式等。不同的措辞会让模型从不同角度去理解任务要求,进而影响其表现。例如在一个情感分类任务中,如果问“这段文字表达的情感是积极的还是消极的?”这就是一种比较直白常见的措辞方式;但要是改成“请判断这段文字所蕴含的情感倾向,是偏向积极那类,还是消极那类呢?”虽然核心意思一样,但细微的用词差异(如“蕴含”“偏向”等词的使用)就构成了不同的措辞,可能使模型理解任务的难度有所变化。
任务规范方面:包含了任务的输入输出要求、可接受的答案格式、评判标准等诸多限定内容。比如在一个选择题任务中,规范会明确规定输入给模型的是题干以及几个具体的选项,模型输出的答案必须是所给选项中的某一个,不能是其他自行编造的内容;又比如在文本生成任务里,会规定生成的文本长度范围、语言风格要求(是正式还是通俗等)等。
总之:任务措辞和规范的详细信息就是把每个任务从怎么跟模型说、让它做什么,到做完后按什么标准评判等各个环节都清晰明确地界定出来,这样才能准确地去评估模型在不同任务上的实际表现,也便于不同模型之间基于同样清晰的要求进行公平比较。
附录H:所有模型大小的所有任务的结果,3节
参数 | 含义 | 说明 |
---|---|---|
Name | 任务或数据集名称 | 用于标识不同的评估对象,如“HellaSwag”和“LAMBADA”是特定的自然语言处理任务或数据集 |
Metric | 评估指标 | 衡量模型在任务或数据集上表现的标准,此处“acc”表示准确率,用于评估模型预测的准确性 |
Split | 数据集分割 | 表明数据用于训练、验证或测试的部分,“dev”通常表示验证集,“test”表示测试集 |
Fine - tune | 微调相关(含义需结合更多上下文确定) | 可能表示模型是否进行了微调、微调的程度、方法或相关设置等,此处含义不明 |
SOTA | 当前最优水平 | 在特定任务或数据集上已有的最佳性能指标值,用于对比模型表现 |
K | 示例数量(在少样本学习情境下) | 模型预测时提供的示例数量,影响模型学习和泛化能力,此处不同模型规模下可能有不同的默认或测试K值 |
Small - 175B | 模型规模 | 从最小到最大的不同规模模型,用于研究模型性能随参数数量变化的规律,如“Small”可能是较小规模模型,“175B”为GPT - 3模型 |
9、总结
“Language Models are Few-Shot Learners”由OpenAI团队撰写,介绍了GPT-3语言模型。该模型有1750亿参数,在零样本、单样本和少样本学习设置下,于众多NLP任务和基准测试中展现强大性能,接近甚至超越微调模型。
研究背景
- 预训练语言模型趋势:NLP系统中预训练语言表示应用渐广,从单层表示到多层RNN,再到预训练Transformer模型直接微调,性能提升显著,但仍需特定任务数据集和微调。
- 元学习与上下文学习:元学习让模型在训练时获多种技能,推理时快速适应新任务,其中上下文学习通过文本输入指定任务,模型依此前文示例完成后续任务。
- 模型规模增长:Transformer语言模型参数不断增加,能力提升,推测上下文学习能力可能随模型规模扩大而增强。
研究方法
- 预训练方法
- 模型与架构:采用与GPT-2相同架构,含修改初始化、预归一化和可逆分词,层内用交替密集和局部带状稀疏注意力模式,训练8种不同规模模型,参数从1.25亿到1750亿。
- 训练数据集:数据集经优化,包括下载过滤Common Crawl、模糊去重、添加高质量数据集,训练时按质量而非大小采样,还处理了数据污染问题。
- 训练过程:依模型大小调整参数,用Adam优化器、余弦退火学习率、梯度裁剪和权重衰减,训练至3000亿token,模型跨GPU并行训练。
- 评估方法:在少样本学习中,从任务训练集随机抽取K个示例(0 - 2048个)作为条件,依任务类型用不同评估指标,如准确率、F1值、BLEU等,结果在测试集或开发集报告。
实验结论
- 语言建模、完形填空和完成任务
- 语言建模:GPT-3在PTB数据集零样本困惑度达20.50,超之前模型。
- LAMBADA:零样本准确率76%,填充式格式下少样本准确率达86.4%,提升显著。
- HellaSwag:少样本准确率79.3%,超特定参数模型,但低于最优模型。
- StoryCloze:零样本准确率83.2%,少样本准确率87.7%,低于微调SOTA模型。
- 闭卷问答:在Natural Questions、WebQuestions和TriviaQA数据集上,GPT-3在零样本、单样本和少样本设置下表现出色,部分结果接近或超越SOTA,且性能随模型规模提升。
- 翻译任务:GPT-3虽训练数据主要为英语,但有一定多语言能力,少样本设置下英 - 法、德 - 英、罗 - 英翻译BLEU值达39.2、40.6、39.5,超过之前无监督NMT工作,且翻译能力随模型规模提升,不同语言方向表现有差异。
- Winograd风格任务:在Winograd和Winogrande数据集上,GPT-3零样本、单样本和少样本设置下表现良好,Winogrande数据集中少样本学习有提升,部分结果接近或超越SOTA。
- 常识推理:在PIQA、ARC和OpenBookQA数据集上,GPT-3表现不一,PIQA零样本和少样本结果超SOTA但有数据污染嫌疑,ARC表现接近微调基线,OpenBookQA少样本性能显著提升但仍低于SOTA。
- 阅读理解:在CoQA、DROP、QuAC、SQuAD 2.0和RACE等数据集上,GPT-3性能因数据集而异,CoQA表现接近人类基线,DROP中少样本学习超基线但低于增强方法,QuAC表现较差,SQuAD 2.0中少样本学习能力提升明显,RACE中竞争力较弱。
- SuperGLUE基准测试:在SuperGLUE基准测试中,GPT-3在不同任务上表现不同,部分任务接近SOTA,WiC任务表现较弱,少样本得分随模型规模和上下文示例数增加而提升。
- 自然语言推理(NLI):在RTE和ANLI数据集上,NLI任务对语言模型仍具挑战性,GPT-3在RTE中最大模型表现较好,在ANLI中从随机水平提升,显示出进步迹象。
- 合成和定性任务
- 算术运算:在少样本、单样本和零样本设置下,GPT-3能完成基本算术运算,大模型优势明显,且模型似在尝试计算而非记忆答案。
- 单词乱序和操作任务:GPT-3在少样本学习中能从示例学习新符号操作任务,如恢复乱序单词,性能随模型规模提升,单样本和零样本性能较差。
- SAT类比任务:在SAT类比任务中,GPT-3少样本、单样本和零样本设置下表现良好,准确率高于随机猜测,大模型提升明显。
- 新闻文章生成:GPT-3能根据前文生成新闻文章,人类区分其生成文章与人类撰写文章难度大,且人类检测难度随模型规模增加而增加。
- 学习和使用新单词:GPT-3能在句子中使用仅见一次定义的新单词,生成句子合理。
- 纠正英语语法:GPT-3在少样本设置下可纠正英语语法错误,但对“好”英语的假设可能导致错误。
研究局限
- 模型性能局限:文本合成存在语义重复、连贯性和逻辑性问题,在常识物理等离散语言任务上表现弱,在一些比较任务和阅读理解任务的少样本学习性能不佳。
- 结构和算法局限:实验未用双向架构或其他训练目标,影响任务性能;预训练目标缺乏对重要性的区分,且模型未基于其他经验领域,限制其能力。
- 预训练效率问题:预训练样本效率低,虽测试时样本效率提升,但仍低于人类。
- 少样本学习机制不明:GPT-3少样本学习是新任务学习还是任务识别不明确,理解其机制是未来研究方向。
- 模型推理成本高:GPT-3推理成本高、不便携,蒸馏技术可能是解决方向。
社会影响
- 有益应用:可用于代码和写作自动完成、语法辅助、游戏叙事生成、搜索引擎响应改进和回答问题等。
- 潜在危害
- 恶意使用:如生成假新闻、垃圾邮件或有害信息,模型难以区分可信与不可信信息源,可能放大偏见和错误信息。
- 偏差、公平性和代表性问题:模型可能学习并放大训练数据偏差,在性别、种族、宗教等方面表现出不公平关联,需深入研究和干预。
- 能源消耗问题:训练模型能耗高,但训练后生成内容能耗低,模型蒸馏等技术可提高效率。