hello,大家好,欢迎来到我的频道,最近主要还是读论文,通过读论文,紧跟学术界的发展趋势和研究热点,并且能够通过论文的描述观察作者的研究思路和方法。如果你恰巧也对该领域比较感兴趣,那么希望该文对你能够产生一些帮助。喜欢的点个关注,持续更新。
今天读的论文是大名鼎鼎的GPT3,我相信你们很多人都用过,能够感受到“她”强大的语言能力,特别是向“她”请教问题,“她”所展现出来的超强的能力,甚至毫不夸张的说,“她”的回答比一般人类的回答要强很多,甚至在编程方面也具有超强的编码能力。
我们总是感叹,为什么我们做不出来ChatGPT,我主观想来是我们不愿意探究真理,只愿意侃侃而谈表面现象,甚至新事物一出来,就说是风口,跟风操作。真正潜心做研究的人得不到尊重和保护,我想如果没有合适的土壤,怎么能结出令人惊叹的果实。
闲话少说,下面我们开始论文的上半部分的翻译。
图1.3:所有42个以准确度命名的基准测试的综合表现。随着模型规模的增大,零样本表现稳步提高。
图1.3直观地展示了总体结果,它汇总了各种任务(尽管它本身不应被视为严格或有意义的基准)。
在本文中,我们还对“数据污染”进行了系统研究——这是在诸如Common Crawl这样的数据集上训练高容量模型时日益严重的问题,因为这些数据集可能包含来自测试数据集的内容,原因是这些内容通常存在于网络上。我们在本文中开发了系统化的工具来衡量数据污染并量化其扭曲效果。尽管我们发现数据污染对GPT-3在大多数数据集上的表现影响很小,但我们确实发现了一些可能导致结果膨胀的数据集,并根据严重程度不报告这些数据集的结果或用星号注明。
除此之外,我们还训练了一系列较小的模型(参数范围从1.25亿到130亿),以便在“零样本”、“单样本”和“少样本”设置中比较它们与GPT-3的性能。总体而言,对于大多数任务,我们发现在所有三种设置下,模型容量的缩放相对平滑;一个值得注意的模式是“零样本”、“单样本”和“少样本”性能之间的差距随着模型容量的增加而增大,这可能表明较大的模型更擅长元学习。
最后,鉴于GPT-3展示的广泛能力,我们讨论了关于偏见、公平性和更广泛社会影响的问题,并尝试对GPT-3在这方面的特点进行初步分析。
本文的其余部分安排如下。第2部分描述了我们训练GPT-3和评估它的方法和方法。第3部分在“零样本”、“单样本””和“少样本”设置下,展示了各种任务的完整结果。第4部分讨论了数据污染(训练-测试重叠)问题。第5部分讨论了GPT-3的局限性。第6部分讨论了更广泛的影响。第7部分回顾了相关工作,第8部分进行了总结。
三、方法我们的基本预训练方法,包括模型、数据和训练,与[RWC 19]中描述的过程相似,只是在模型大小、数据集大小和多样性以及训练长度方面进行了相对直接的扩展。我们对上下文学习的使用也类似于[RWC 19],但在这项工作中,我们系统地探索了在上下文中学习的不同设置。因此,我们首先明确地定义和对比了我们将在这些设置上评估GPT-3的不同设置,或者原则上可以在这些设置上评估GPT-3。这些设置可以看作是依赖于多少任务特定数据的一个图谱。具体而言,我们可以在这个图谱上至少识别出四个点(见图2.1的插图):
• 微调(Fine-Tuning, FT)近年来已成为最常见的方法,其通过在针对特定任务的监督数据集上训练来更新预训练模型的权重。通常使用数千到数十万个带标签的样本。微调的主要优点是在许多基准测试上的强大性能。主要缺点是每个任务都需要一个新的大型数据集,可能在分布之外的泛化性能较差[MPL19],以及可能利用训练数据中的伪特征[GSL 18,NK19],可能导致与人类表现的不公平比较。在这项工作中,我们没有对GPT-3进行微调,因为我们关注的是任务无关的性能,但GPT-3原则上可以进行微调,这是未来工作的有前景方向。
• 少样本学习(Few-Shot, FS)是我们在这项工作中使用的术语,指的是在推理时给模型提供少量任务样本作为条件[RWC 19],但不允许更新权重。如图2.1所示,对于一个典型的数据集,一个样本具有上下文和期望的完成情况(例如英语句子和法语翻译),少样本学习通过给出K个上下文和完成的样本,然后再给出一个最后的上下文样本,模型需要提供完成。我们通常将K设置在10到100的范围内,因为这是多少个样本可以放入模型的上下文窗口(nctx = 2048)中。少样本学习的主要优点是大大减少了对任务特定数据的需求,减少了从大而狭窄的微调数据集中学习过于狭窄分布的可能性。
主要缺点是到目前为止,这种方法的结果比最先进的微调模型差得多。此外,仍然需要少量特定任务的数据。顾名思义,这里针对语言模型描述的少样本学习与机器学习中其他上下文中使用的少样本学习有关[HYC01,VBL 16] - 两者都涉及基于广泛任务分布的学习(在本例中隐含在预训练数据中)然后迅速适应新任务。
• 单样本学习(One-Shot, 1S)与少样本学习相同,只是除了任务的自然语言描述之外,只允许一个样本,如图1所示。区分单样本学习、少样本学习和零样本学习(如下所述)的原因是,它与一些任务传达给人类的方式最为相似。例如,在要求人类为人工劳动力服务(例如Mechanical Turk)生成数据集时,通常会给出一个任务样本。相比之下,如果没有给出样本,有时很难传达任务的内容或格式。
• 零样本学习(Zero-Shot, 0S)与单样本学习相同,但不允许任何样本,模型只给出描述任务的自然语言指令。这种方法提供了最大的便利性、鲁棒性潜力和避免偶然相关性(除非它们在大型预训练数据语料库中非常广泛地出现),但这也是最具挑战性的设置。在某些情况下,甚至可能难以让人们在没有先前样本的情况下理解任务的格式,因此这种设置在某些情况下是“不公平地困难”。例如,如果有人被要求“制作一个200米短跑世界纪录表”,这个要求可能是模糊的,因为可能不清楚表格应该具有什么格式或应该包含什么内容(甚至经过仔细澄清后,了解确切的需求可能也很困难)。然而,至少对于某些设置,零示例学习是最接近人类执行任务的方式 - 例如,在图2.1中的翻译示例中,一个人可能只通过文本指令就知道该怎么做。
图2.1: 零示例、单示例和少示例,与传统微调的对比。
图2.1 使用将英语翻译成法语的示例展示了这四种方法。在本文中,我们关注零样本学习、单样本学习和少样本学习,目的是将它们作为不同问题设置进行比较,这些问题设置在特定基准的性能和样本效率之间提供不同的权衡。我们特别强调少示例学习的结果,因为其中许多结果仅略微落后于最先进的微调模型。然而,最终,单样本学习,甚至有时是零样本学习,似乎是与人类表现进行最公平比较的方法,并且是未来工作的重要目标。
以下2.1-2.3节分别介绍了我们的模型、训练数据和训练过程。2.4节讨论了我们如何进行少样本、单样本和零样本评估的细节。
3.1、模型和结构我们使用与GPT-2相同的模型和架构[RWC 19],包括其中描述的修改过的初始化、预归一化和可逆标记化,但我们在Transformer的层中使用交替的密集和局部带状稀疏注意力模式,类似于Sparse Transformer [CGRS19]。为了研究ML性能对模型大小的依赖,我们训练了8种不同大小的模型,从1.25亿个参数到1,750亿个参数范围内变化,最后一个是我们称之为GPT-3的模型。先前的工作[KMH 20]表明,如果有足够的训练数据,验证损失的缩放应该是模型大小的平滑幂律函数;训练多种不同大小的模型使我们能够测试这个假设,既适用于验证损失,也适用于下游语言任务。
表2.1显示了我们的8个模型的大小和架构。这里nparams是可训练参数的总数,nlayers是层的总数,dmodel是每个瓶颈层中的单元数(我们总是将前馈层的大小设置为瓶颈层的四倍,dff = 4 * dmodel),dhead是每个注意力头的维度。所有模型都使用nctx = 2048个令牌的上下文窗口。我们沿着深度和宽度维度将模型分布在GPU上,以便最小化节点之间的数据传输。每个模型的精确架构参数是基于在GPU上分布模型的计算效率和负载平衡来选择的。以前的工作[KMH 20]表明,验证损失对这些参数在相当宽泛的范围内不是很敏感。
3.2、训练数据集语言模型的数据集已经迅速扩大,最终形成了包含近1万亿个单词的Common Crawl数据集{https://commoncrawl.org/the-data/} [RSR 19]。这个规模的数据集足以训练我们最大的模型,而不需要在同一个序列上进行两次更新。然而,我们发现未经过滤或轻度过滤的Common Crawl版本的质量往往低于更精心策划的数据集。因此,我们采取了3个步骤来提高数据集的平均质量:(1)我们根据与一系列高质量参考语料库的相似性下载并过滤了一个CommonCrawl版本;(2)我们在文档级别进行模糊去重,跨数据集进行去重,以防止冗余,并保持我们留出的验证集作为过拟合的准确度量的完整性;(3)我们还将已知的高质量参考语料库添加到训练混合中,以增加CommonCrawl的多样性。
第一和第二点(处理Common Crawl)的细节详见附录A。对于第三点,我们添加了几个策划过的高质量数据集,包括WebText数据集的扩展版本[RWC 19],通过在更长时间内抓取链接收集,并首次在[KMH 20]中描述,两个基于互联网的书籍语料库(Books1和Books2)和英语维基百科。
表2.2:用于训练GPT-3的数据集。“训练组合中的权重”是指在训练期间从给定数据集中抽取的示例的分数。
表2.2显示了我们在训练中使用的数据集的最终组合。CommonCrawl数据是从覆盖2016年至2019年的41个月度CommonCrawl碎片中下载的,过滤前压缩的纯文本为45TB,过滤后为570GB,相当于4000亿个字节对编码的令牌。请注意,在训练过程中,数据集不是按照它们的大小进行采样,而是我们认为质量较高的数据集被更频繁地采样,这样CommonCrawl和Books2数据集在训练过程中被采样的次数少于一次,但其他数据集被采样2-3次。这实际上是以较高质量的训练数据为代价,接受了少量的过拟合。
图2.2:训练过程中使用的总计算量。我们使用比通常更少的标记训练了更大的模型。
当使用大量互联网数据进行预训练的语言模型时,尤其是具有记忆大量内容能力的大型模型,一个主要的方法论关注点是下游任务可能受到污染,因为它们的测试或开发数据集在预训练过程中无意中被查看。为了减少这种污染,我们搜索并尝试移除与本文研究的所有基准测试的开发和测试数据集的重叠部分。不幸的是,过滤器中的一个错误导致我们忽略了一些重叠,由于训练成本,重新训练模型是不可行的。在第4节中,我们描述了剩余重叠的影响,而在未来的工作中,我们将更积极地消除数据污染。
3.3、训练过程正如[KMH 20, MKAT18]中发现的,较大的模型通常可以使用较大的批量大小,但需要较小的学习率。我们在训练过程中测量梯度噪声规模,并用它来指导我们选择批量大小[MKAT18]。表2.1显示了我们使用的参数设置。为了在不耗尽内存的情况下训练较大的模型,我们在每个矩阵相乘中使用一种模型并行技术,并在网络的各层之间使用模型并行技术。所有模型都在Microsoft提供的高带宽集群的一部分上的V100 GPU上进行训练。训练过程和超参数设置的详细信息请参见附录B。
3.4、评估对于“少样本”学习,我们通过从该任务的训练集中随机抽取K个样本作为条件来评估评估集中的每个样本,根据任务的不同,用1或2个换行符分隔。对于LAMBADA和Storycloze,没有可用的监督训练集,所以我们从开发集中抽取条件样本并在测试集上进行评估。对于Winograd(原始版,而非SuperGLUE版本),只有一个数据集,所以我们直接从其中抽取条件样本。
K可以是从0到模型上下文窗口允许的最大值,对于所有模型,nctx = 2048,通常可以容纳10到100个样本。K的较大值通常(但不总是)更好,所以当有单独的开发集和测试集时,我们在开发集上尝试几个K值,然后在测试集上运行最佳值。对于某些任务(参见附录G),我们还使用自然语言提示,作为演示的补充(或者对于K = 0,作为替代)。
对于涉及从多个选项中选择一个正确答案的任务(多项选择),我们提供K个上下文加正确答案的样本,接着提供一个仅有上下文的样本,然后比较语言模型对每个答案的可能性。对于大多数任务,我们比较每个token的可能性(以归一化长度),但是在少数数据集(ARC,OpenBookQA和RACE)上,通过计算P(完成|上下文)/ P(完成|答案上下文),我们在开发集上获得了额外的收益,其中答案上下文是字符串"Answer: "或"A: ",用于提示完成应该是一个答案,但其他方面是通用的。
对于涉及二元分类的任务,我们为选项赋予更具语义意义的名称(例如“True”或“False”,而不是0或1),然后将任务视为多项选择;我们还有时候会将任务框定类似于[RSR 19]所做的那样(详见附录G)。
对于自由形式完成的任务,我们使用与[RSR 19]相同的参数进行束搜索:束宽为4,长度惩罚α=0.6。我们使用F1相似性得分,BLEU或精确匹配来评分模型,具体取决于手头数据集的标准。
当公开可用时,最终结果将在测试集上报告,适用于每个模型大小和学习设置(零样本、单样本和少样本)。当测试集是私有的时候,我们的模型通常太大,无法适应测试服务器,所以我们在开发集上报告结果。我们在少数数据集(SuperGLUE,TriviaQA,PiQa)上提交到测试服务器,我们能够使提交工作,并且仅提交200B多次学习结果,然后报告其他所有内容的开发集结果。
上半部分翻译结束相关文章
猜你喜欢