今天,我们将共同探索OpenAI的GPT-3,与GPT-2相比,GPT-3更像是一个暴力出奇迹的结果。接下来,就让我们跟随论文深入理解其技术细节。
- • 论文: Language Models are Few-Shot Learners
- • 模型参数: 1750亿
- • 公司/机构: OpenAI
摘要
人类有时只需少数示例或简单说明,便能轻松应对全新的语言任务,然而当前的自然语言处理系统仍面临巨大挑战。很多情况下,系统仍需通过特定任务的微调才能获得出色的效果。在这个挑战的推动下,OpenAI的研究人员努力改进了GPT-2 模型的有效性,并发布了GPT-3模型。
GPT-3是一个拥有1750亿模型参数的自回归语言模型。与GPT-2相比,GPT-3的参数量翻了116倍。与此同时,GPT-3采用了GPT-1最初提出的Few-shot设置,即模型在处理子任务时不再依赖大量样例,而是在可控范围内给出一些样本。这种设置的成本非常低,但却能为模型提供足够的信息。最令人惊叹的是,GPT-3在任何任务上都无需任何梯度更新或微调,只需通过与模型的文本交互来指定任务和展示少量样本。
GPT-3在多个自然语言处理任务中展现出了惊艳的性能,如翻译、问答和填空,同时还能够应对那些需要即时推理或领域适应的挑战,如拼写校正、引入新词和进行三位数算术运算。OpenAI 的科研人员发现,增加语言模型的规模可以极大地提升任务无关的少样本学习性能,有时甚至能够与当前最领先的微调方法媲美,这一突破在当时引发了极大的关注和赞誉。
引言
为了在各类任务中实现卓越性能,通常需要对特定任务的数据集进行大规模微调,这涉及数千到数十万个需要人工标注的数据集。然而,消除这种限制是可取的,原因如下所述:
首先,从实践角度来看,为每个新任务收集大规模标记示例数据集的需求限制了语言模型的适用性。语言任务的种类繁多,涵盖了从语法纠错到生成抽象概念示例,再到批评短篇故事等各种内容。对许多任务而言,要收集大规模的监督训练数据集往往具有挑战性,特别是当必须为每个新任务重复这个过程时。
其次,训练数据中的偶然相关性与模型表达能力和训练分布的狭隘性之间存在直接关系,这对于预训练后进行微调的模型来说可能带来问题。尽管这些模型在预训练阶段被设计得很大,能够吸收大量信息,但在非常狭隘的任务分布上进行微调。有证据表明,这种范式下的泛化能力可能较弱,因为模型过于特定于训练分布,并且在其之外的泛化能力不强。
最后,人类在学习大多数语言任务时并不需要大规模的监督数据集。仅仅凭借自然语言中的简短指令或少数示例,人类就能够在新任务上胜任并达到合理水平。这种适应性不仅揭示了当前自然语言处理技术的限制,而且具有实际优势。它使人类能够无缝地混合或切换多个任务和技能,例如在长时间对话中进行加法运算。为了广泛应用,研究者们希望有朝一日自然语言处理系统也能具备类似的灵活性和普适性。
为了解决上述问题,OpenAI的研究人员训练了一个巨大的自回归语言模型,拥有着惊人的1750亿参数,即GPT-3。在应对各类后续任务时,他们主要采用了Few-shot、One-shot和Zero-shot这三种不同的设定策略,并在不需要对模型进行任何形式微调的情况下取得了引人注目的成果。简言之,这意味着通过提供一些任务样例(即上下文信息),该模型能够自主探索并掌握处理这些任务的能力。这种能力主要来源于以下两方面:
第一,通过在语言模型的训练中培养广泛的技能和模式识别能力,然后在推理过程中利用这些能力来适应或识别所需的任务。
如Figure 1.1所示,每个样本来自于不同的任务,涵盖了各种领域,如加法运算、语法纠正和翻译。这些任务提供了大量的训练数据,为模型提供了广泛的语言样本。通过在这些多样化的数据上进行训练,模型能够理解和处理各种任务。从上下文学习的角度来看,对于同一任务的处理,模型能够通过上下文中的信息进行准确推断,从而提高任务的效果。在这个过程中,模型能够从上下文中提取相关的知识和洞察,以支持对不同任务的有效适应。
第二,增加语言模型的参数规模,通过模型参数规模的显著增加,可以提升自然语言处理任务的性能。
如Figure 1.2所示,随着模型参数规模的增加,上下文学习能力会获得类似的强大增益。
GPT-3的基本原理
训练数据集
GPT-3的训练需要大量的训练数据,这些数据主要来源于精心筛选过的Common Crawl、WebText数据集的扩展版本、两个基于互联网的图书语料库(Books1和Books2)和英语维基百科数据集。
Table 2.2呈现了最终训练数据集的混合情况。可以看到,在训练过程中,研究人员并非按照数据集大小的比例进行采样,而更倾向于频繁采样质量较高的数据集。因此,Common Crawl和Books2数据集在训练中的采样次数不到一次,而其他数据集则采样2-3次。这种方法在一定程度上容忍了轻微的过拟合,以换取更高质量的训练数据。
模型和架构
GPT-3采用与GPT-2相同的模型和架构,唯一的区别在于GPT-3在Transformer层中引入了交替的稠密和局部带状稀疏注意力模式,类似于Sparse Transformer。
GPT-2的介绍可以在我们之前的文章中找到!
为了深入探究模型规模对学习性能的影响,研究人员训练了8种不同规模的模型,涵盖了从1.25亿个参数到1750亿个参数的三个数量级范围。其中,最庞大的模型被命名为GPT-3。
在Table 2.1中展示了8个模型的规模和架构。其中,nparams代表可训练参数的总数,nlayers表示Transformer的总层数,dmodel指每个bottleneck layer中的神经元数量,而前馈层的大小是bottleneck layer大小的四倍,即d_ff = 4 * d_model,dhead表示每个注意力头的维度。
所有的模型的上下文窗口都为nctx=2048个tokens。为了减少节点之间的数据传输,研究人员将模型根据其深度和宽度分割到不同的GPU上。具体的模型架构参数是根据计算效率和负载均衡在GPU上选择的。
训练过程
为了在训练更大的模型时避免内存耗尽,GPT-3在训练过程中采用了一种模型并行化的混合方法,既在每个矩阵乘法运算内部采用模型并行化,又在网络的各个层之间采用模型并行化。所有模型都是在由微软提供的高带宽集群中的V100 GPU上进行训练的。
GPT-3在训练过程中采用了Adam优化器,参数设置为β1 = 0.9,β2 = 0.95,ε = 10-8,为了控制梯度的范围,将梯度的全局范数裁剪为1.0。
在处理2600亿个tokens的过程中,会通过余弦衰减逐步降低学习率至初始值的10%(即:在处理完2600亿个tokens后,学习率会继续以原始学习率的10%进行训练)。此外,在训练的前40-120亿个tokens中,会逐渐增加Batch Size大小,从较小的值(32k个tokens)增加到设定的最大值。具体参数设置可见Table 2.1。
为了减小过拟合现象,采用了无替换的数据采样策略,直到达到一个epoch的边界。所有模型都使用0.1的权重衰减进行轻微的正则化。在训练过程中,始终使用2048个tokens的上下文窗口序列进行训练,当文档长度小于2048个tokens时,我们将多个文档打包成一个序列,以提高计算效率。序列中的多个文档通过特殊的文本结束标记进行分隔,为语言模型提供了上下文无关信息的推断。这种方式实现了高效的训练,无需进行特殊的序列屏蔽操作。
Figure 2.2展示了GPT-3在训练过程中的总计算量。显而易见,随着模型参数规模的增加,计算量的也在显著增加。
上下文学习的三种设置
GPT-3在训练完成之后,就可以使用Few-Shot、One-Shot和Zero-Shot三种不同的方式在特定任务上进行使用。值得注意的是,GPT-3在特定任务上使用时无需进行微调或参数更新。这三种使用方式的简单介绍如下所示:
• Few-Shot(FS):模型在推理时给出K个任务示例作为上下文信息,同时提供任务的自然语言描述,但不允许模型进行权重更新。通常将K设置在10到100的范围内,以适应模型的上下文窗口。
• One-Shot(1S):模型在推理时通过提供一个任务示例作为上下文信息,同时还有任务的自然语言描述。这种方式最接近于人类在解决某些任务时所使用的方式。
• Zero-Shot(0S):不提供任何上下文信息,模型只给出一个描述任务的自然语言指令。
下图以英语翻译成法语的示例说明了Few-Shot、One-Shot和Zero-Shot这三种方法,并展示了传统Fine-tuning方法的一般流程。
GPT-3的局限性
尽管与GPT-2相比,GPT-3的性能有了显著的提升,但仍然存在以下局限性:
- 1. GPT-3在文本合成任务中偶尔会出现语义上的重复,随着段落变长,连贯性下降,同时还存在自相矛盾和不相关的句子。而对于"常识物理"问题,例如"奶酪放进冰箱是否会融化",GPT-3表现困难。
- 2. GPT-3存在结构和算法上的限制,GPT-3专注于自回归语言模型的上下文学习行为,模型未包括双向架构或其他训练目标,这种设计决策可能导致在实际受益于双向性的任务上性能较差。
- 3. GPT-3的训练目标对每个token赋予相同的权重,缺乏对于预测中什么是最重要和什么是次要的概念。
- 4. GPT-3缺乏与其他领域(如视频或现实世界的物理交互)相关联的背景知识和大量上下文信息,知识的缺失会对模型性能造成影响。
- 5. GPT-3的训练效率较低,还有很大的提升空间。
- 6. GPT-3少样本学习面临的一个不确定性是,在推理过程中难以确定模型到底是“从零开始”学习新任务,还是仅仅在区分和识别训练期间学到的任务。
- 7. 由于GPT-3的庞大参数规模,不论是训练还是推理部署过程都具备高昂的成本和不便之处,这或许对目前这种规模的模型在实际应用中带来一定的挑战。
- 8. GPT-3训练数据中的偏见可能导致模型生成的内容变得刻板化或带有偏见。
总结
GPT-3是一个拥有1750亿个参数的语言模型,与15亿参数的GPT-2相比,GPT-3更像是一个暴力出奇迹的结果。GPT-3在Zero-shot、One-shot和Few-shot 的设置下,在众多自然语言处理任务中展现出强大的性能。本文详细探讨了GPT-3 的基本原理以及其所面临的局限性。尽管GPT-3 存在一些限制,但它的出现印证了大规模语言模型有可能成为发展适应能力强、通用的语言系统的重要组成部分。在当前大模型盛行的时代背景下,GPT-3的工作仍具备极大的价值。