LLM的上下文学习
在这篇文章中,我们为 GPT-3 等大型语言模型中的上下文学习提供了贝叶斯推理框架,并展示了我们框架的经验证据,突出了与传统监督学习的区别。 这篇博文主要借鉴了上下文学习的理论框架,来自将上下文学习解释为隐式贝叶斯推理和实验,来自重新思考示范的作用:是什么让上下文学习起作用?
1、上下文学习的奥秘
GPT-3 等大型语言模型 (LM) 在互联网规模的文本数据上进行训练,以预测给定前面文本的下一个标记。 这个简单的目标与大规模数据集和模型相结合,产生了一个非常灵活的 LM,它可以“读取”任何文本输入,并以此为条件“写入”可能出现在输入之后的文本。 虽然训练过程既简单又通用,但 GPT-3 论文发现大规模会导致一种特别有趣的涌现行为,称为上下文学习。
什么是上下文学习? 上下文学习在最初的 GPT-3 论文中得到普及,作为一种使用语言模型来学习仅给出几个示例的任务的方法。 在上下文学习期间,我们给 LM 一个提示(Prompt),该提示由演示任务的输入输出对列表组成。 在提示的末尾,我们附加了一个测试输入,并允许 LM 仅通过对提示进行条件化并预测下一个标记来进行预测。 要正确回答下面的两个提示,模型需要阅读训练示例以弄清楚输入分布(财经或一般新闻)、输出分布(正/负或主题)、输入-输出映射(情感或主题分类)和格式。
上图是上下文学习的两个示例,其中语言模型 (LM) 获得了训练示例列表(黑色)和测试输入(绿色),并被要求预测(橙色)要填充的标记/单词并写在空白处。
上下文学习能做什么?
在许多基准 NLP 基准测试中,上下文学习与使用更多标记数据训练的模型相比具有竞争力,并且在 LAMBADA(常识句子完成)和 TriviaQA(问答)上是最先进的。 也许更令人兴奋的是上下文学习使人们能够在短短几个小时内启动的一系列应用程序,包括根据自然语言描述编写代码、帮助设计应用程序模型以及概括电子表格功能:
上下文学习允许用户为新用例快速构建模型,而无需担心为每个任务微调和存储新参数。 它通常只需要很少的训练示例就可以使原型正常工作,而且即使对于非专家来说,自然语言界面也很直观。
为什么上下文学习令人惊讶? 上下文学习不同于传统的机器学习,因为它没有对任何参数进行优化。 然而,这并不是独一无二的——元学习方法(meta-learning)已经训练了从示例中学习的模型。 神秘之处在于 LM 没有接受过从示例中学习的训练。 正因为如此,预训练(它被训练做什么,这是下一个标记预测)和上下文学习(我们要求它做什么)之间似乎不匹配。
这似乎很神奇。 上下文学习如何运作?
2、上下文学习框架
我们如何才能更好地理解上下文学习? 首先要注意的是,像 GPT-3 这样的大型 LM 已经在具有广泛主题和格式的大量文本上进行了训练,从维基百科页面、学术论文和 Reddit 帖子到莎士比亚的作品。 我们假设对文本的训练允许 LM 对一组不同的学习概念进行建模。
我们提出了一个框架,其中 LM 使用上下文学习提示来“定位”先前学习的概念来完成上下文学习任务。 例如(见下图),在我们的框架中,LM 使用训练示例在内部确定任务是情感分析(左)或主题分类(右),并将相同的映射应用于测试输入。
什么是概念?
我们可以将概念视为包含各种文档级统计信息的潜在变量。 例如,“新闻主题”概念描述了词的分布(新闻及其主题)、格式(新闻文章的写作方式)、新闻与主题之间的关系以及词之间的其他语义和句法关系。 通常,概念可能是许多潜在变量的组合,这些潜在变量指定文档语义和语法的不同方面,但我们在这里通过将它们全部分组为一个概念变量来简化。
2.1 LM 如何在预训练期间学会进行贝叶斯推理?
我们表明,在具有潜在概念结构的合成数据上训练(使用next token prediction)的 LM 可以学习进行上下文学习。 我们假设在真实的预训练数据中会发生类似的效果,因为文本文档自然具有长期连贯性:同一文档中的句子/段落/表格行倾向于共享底层语义信息(例如,主题)和格式(例如,常见问题解答 页面在问题和答案之间交替)。 在我们的框架中,文档级潜在概念创造了长期连贯性,在预训练期间对这种连贯性进行建模需要学习推断潜在概念:
- 预训练:为了在预训练期间预测下一个标记,LM 必须使用来自先前句子的证据推断(“定位”)文档的潜在概念。
- 上下文学习:如果 LM 还使用提示中的上下文示例推断提示概念(提示中的示例共享的潜在概念),则发生上下文学习!
2.2 上下文学习的贝叶斯推理观
在我们进入贝叶斯推理观点之前,让我们设置上下文学习。
- 预训练分布(p):我们对预训练文档结构的主要假设是,文档是通过首先对潜在概念进行采样生成的,然后通过对潜在概念进行条件化来生成文档。 我们假设预训练数据和 LM 足够大,使得 LM 完全符合预训练分布。 正因为如此,我们将使用p表示 LM 下的预训练分布和概率。
- 提示分布:上下文学习提示是与一个测试输入连接在一起的 IID(独立同分布)训练示例列表。 提示中的每个示例都绘制为以相同提示概念为条件的序列,它描述了要学习的任务。
“定位”学习能力的过程可以看作是提示中每个示例共享的提示概念的贝叶斯推理。 如果模型能够推断出提示概念,那么它就可以用来对测试样例做出正确的预测。 在数学上,提示为模型(p)锐化概念的后验分布p(concept∣prompt)提供了证据。如果p(concept∣prompt)集中在提示概念上,模型有效地从提示中“学习”了概念:
理想情况下,p(concept∣prompt)专注于提示概念,提示中有更多的例子,通过边缘化来“选择”提示概念。
2.3 提示为贝叶斯推理提供了嘈杂的证据
解释中的逻辑飞跃是 LM 将从上下文示例中推断提示概念,即使提示是从提示分布中采样的,这可能与 LM 训练的预训练分布非常不同。 提示将独立的训练示例连接在一起,因此示例之间的转换在 LM(和预训练分布)下的概率非常低,并且可以在推理过程中引入噪声。
例如,连接关于不同新闻主题的独立句子可能会产生非常不典型的文本,因为没有一个句子具有足够的上下文。 有趣的是,尽管预训练和提示分布之间存在不匹配,但 LM 仍然可以进行贝叶斯推理,正如 GPT-3 中的经验所见。
我们证明,通过贝叶斯推理进行的上下文学习可以在简化的理论设置中从预训练数据中的潜在概念结构中出现,并使用它来生成一个合成数据集,其中出现了 Transformer 和 LSTM 的上下文学习。
上图中,绿色箭头表示来自训练示例的潜在提示概念的信号,而红色箭头表示来自示例之间低概率转换的噪声。
- 训练示例提供信号
我们可以将训练示例视为为贝叶斯推理提供信号。 特别是,训练示例中的转换(上图中的绿色)允许 LM 推断它们共享的潜在概念。 在提示中,绿色转换来自输入分布(新闻句子内的转换)、输出分布(主题词)、格式(新闻句子的句法)和输入-输出映射(新闻之间的关系) 和主题)都为贝叶斯推理提供信号。
- 训练示例之间的转换可能是低概率(噪声)
因为训练示例是 IID,将它们连接在一起通常会在示例之间产生不自然的低概率转换。 例如,在关于芬兰流通收入的句子之后看到关于 NFC 锦标赛的句子可能会令人惊讶(见上图)。 这些转换会在推理过程中产生噪音,并源于预训练和提示分布之间的不匹配。
- 上下文学习对某些噪声具有鲁棒性
我们证明,如果信号大于噪声,则 LM 可以成功进行上下文学习:当训练样本n趋向无穷时它将正确的测试输出。
我们将信号描述为其他概念与以提示为条件的提示概念之间的 KL 散度,并将噪声描述为来自示例之间转换的错误项。 直觉上,如果提示允许模型真正轻松地将提示概念与其他概念区分开来,那么就会有很强的信号。这也表明,在信号足够强的情况下,其他形式的噪音,例如删除信息源(例如,输入输出映射)是可以容忍的,特别是如果提示的格式没有改变并且输入输出映射 信息在预训练数据中。 这与传统的监督学习不同,如果输入输出映射信息被删除(例如,通过随机化标签),传统的监督学习将会失败。 我们将在下一节中直接研究这种区别。
- 用于上下文学习的小型测试平台(GINC 数据集)
为了支持该理论,我们构建了 GINC,一个合成预训练数据集和具有潜在概念结构的上下文学习测试平台。 我们发现在 GINC 上进行预训练会导致 Transformer 和 LSTM 出现上下文学习,这表明主要影响来自预训练数据中的结构。 Ablations指出潜在的概念结构(导致长期连贯性)对于 GINC 中上下文学习的出现至关重要。
3、经验证据
接下来,我们旨在通过一组实验为上述框架提供经验证据。
3.1 提示中的输入输出配对比之前想象的要重要得多
tl;dr:不需要用真实输出形成提示来实现良好的上下文学习性能。
在 Min 等人的论文中,我们比较了三种不同的方法:
- 无样本:仅测试输入上的 LM ,不提供样本。 这是典型的零样本推理,首先由 GPT-2/GPT-3 完成。
- 具有基本事实输出的样本:LM 基于一些上下文示例和测试输入的串联。 这是一种典型的上下文学习方法,默认情况下,提示中的所有输出都是基本事实。
- 随机输出上本:上下文示例和测试输入的 LM ,但现在,提示中的每个输出都是从输出集中随机抽样的(分类任务中的标签;多项选择中的一组答案选项) 任务)。
上图中,带有真实输出的提示(顶部)和带有随机输出的提示(底部)。
特别是,以前没有尝试过“Examples with random outputs”这种方法。 如果标记数据的输出是随机的,那么典型的监督学习将根本不起作用,因为任务不再有意义。
我们试验了 12 个模型,尺寸范围从 774M 到 175B,包括最大的 GPT-3(Davinci)。 模型在 16 个分类数据集和 10 个多选数据集上进行评估。
上图为无示例(蓝色)、具有真实输出的示例(黄色)和具有随机输出的示例(随机)之间的比较。 用随机输出替换真值输出对性能的影响比之前想象的要小得多,而且仍然比没有例子要好得多。
当每个输出被输出集中的随机输出替换时,上下文学习性能不会下降太多。
首先,正如预期的那样,使用带有真实输出的示例明显优于无示例。 然后,用随机输出替换地面实况输出几乎不会损害性能。 这意味着,与典型的监督学习不同,地面实况输出并不是真正需要获得良好的上下文学习性能,这是违反直觉的!
上图表示上下文示例连接的四个不同方面:输入输出映射、输入分布、输出空间和格式。
如果正确的输入输出映射具有边际效应,提示的哪些方面对于情境学习最重要?
一个可能的方面是输入分布,即示例中输入的基础分布(下图中的红色文本)。 为了量化其影响,我们设计了一种演示变体,其中每个上下文示例都包含一个从外部语料库中随机抽取的输入句子(而不是来自训练数据的输入)。 然后,我们将其性能与带有随机标签的演示进行比较。 直觉是,这两个版本的演示都没有保持正确的输入标签对应关系,而只是在 LM 条件是否符合正确的输入分布方面有所不同。
上图表示,输入分布很重要:当提示中的输入被外部语料库(CC 新闻语料库)的随机输入替换时,模型性能会显着下降。
结果表明,总体而言,以随机句子作为输入的模型的性能显着降低(绝对值降低高达 16%)。 这表明对正确的输入分布进行调节很重要。
上图标明,输出空间很重要:当示例中的输出被随机的英文 unigrams 替换时,模型性能会显着下降。
可能影响上下文学习的另一个方面是输出空间:任务中的输出集(类别或答案选择)。 为了量化其影响,我们设计了一种演示变体,其中包含与任务的原始标签(例如“wave”)无关的随机配对的随机英语 unigrams 的上下文示例。 结果表明,使用此演示时性能显着下降(绝对值高达 16%)。 这表明对正确的输出空间进行调节很重要。 即使对于多项选择任务也是如此,这可能是因为它仍然具有模型使用的特定选择分布(例如,OpenBookQA 数据集中的“螺栓”和“螺丝”等对象)。
3.2 与贝叶斯推理框架的连接
LM 不依赖提示中的输入-输出对应这一事实可能意味着 LM 在预训练期间可能已经接触到任务的输入-输出对应的某些概念,而上下文学习只是依赖于 他们。 相反,提示的所有组成部分(输入分布、输出空间和格式)都在提供“证据”,使模型能够更好地推断(定位)预训练期间学到的概念。
由于在提示中将随机序列连接在一起,随机输入输出映射仍然会增加“噪音”。 尽管如此,基于我们的框架,只要仍然有足够的信号(例如正确的输入分布、输出空间和格式),模型仍然会进行贝叶斯推理。 当然,拥有正确的输入输出映射仍然可以通过提供更多证据和减少噪音来提供帮助,尤其是当输入输出映射不经常出现在预训练数据中时。
3.3 在预训练期间,上下文学习性能与术语频率高度相关
拉泽吉等人在各种数字任务上评估 GPT-J,发现上下文学习性能与每个实例中的术语(数字和单位)在 GPT-J(The PILE)的预训练数据中出现的次数高度相关。
下图表明术语频率(x 轴)和上下文学习性能(y 轴)之间的相关性:
这在不同类型的数字任务(加法、乘法和单位转换)和不同的 k 值(提示中标记示例的数量)之间是一致的。 一个有趣的事实是,当输入没有明确说明任务时也是如此——例如,而不是使用“问:3 乘以 4 是多少? A:12”,用“问:3#4是什么? 答:12”。
3.4 与贝叶斯推理框架的连接
我们将这项工作视为另一个证据,表明上下文学习主要是关于定位在预训练期间学习的潜在概念。 特别是,如果特定实例中的术语在预训练数据中多次出现,则模型可能会更好地了解输入的分布。
根据贝叶斯推理,这将为定位潜在概念以执行下游任务提供更好的证据。 而 Razeghi 等人。 特别关注模型对输入分布的了解程度的一个方面——特定实例的词频——可能存在更广泛的变化集,例如输入-输出相关性的频率、格式(或文本模式) 及更多。
4、扩展途径
4.1 了解模型在“没见过的”任务上的表现
我们的框架表明该模型正在“本地化”或“检索”它在预训练期间学到的概念。 然而,Rong 在这篇博文中表明,该模型在将运动映射到动物、将蔬菜映射到运动等(下图)的不自然/看不见的合成任务上表现几乎完美。
此外,输入输出映射在这种情况下仍然很重要,因为模型从示例中学习了不自然的映射。 根据经验,一种可能性是情境学习行为可能会在合成任务中发生变化(而不是我们实验关注的真实 NLP 基准)——这需要进一步调查。
尽管如此,如果我们将一个概念视为许多潜在变量的组合,贝叶斯推理仍然可以解释某些形式的外推。 例如,考虑一个表示语法的潜在变量和另一个表示语义的变量。 贝叶斯推理可以组合推广到新的语义-句法对,即使模型在预训练期间没有看到所有的语义-句法对。 排列、交换和复制等一般操作在预训练期间很有用,并且可以在组合时帮助外推(例如,运动到动物案例中的标签排列)。 需要做更多的工作来模拟上下文学习如何处理没见过的任务。
4.2 与学习阅读任务描述的联系
可以在提示中使用自然语言的任务描述(或说明)来执行下游任务。 例如,我们可以在前面加上“Write a summary about the given article”来描述总结或“Answer a following question about the Wikipedia article”来描述问答。
在大规模、高质量的指令数据上进一步调整的语言模型被证明可以很好地执行未见过的任务。 根据我们的框架,我们可以通过提供对潜在提示概念的明确观察,将指定任务描述理解为改进贝叶斯推理。 扩展框架以合并任务描述可以告知其他更紧凑的指定任务的方法。
4.3 了解用于上下文学习的预训练数据
虽然我们提出上下文学习来自预训练数据中的长期连贯结构(由于潜在的概念结构),但需要做更多的工作来准确查明预训练数据的哪些元素对上下文学习有最大贡献 . 是否有一个关键的数据子集可以从中产生上下文学习,或者它是否是多种类型数据之间的复杂交互? 最近的工作给出了一些关于引发情境学习行为所需的预训练数据类型的提示。 更好地理解上下文学习的成分有助于构建更有效的大规模预训练数据集。
4.5 从模型架构和训练中捕捉效果
我们的框架仅描述了预训练数据对上下文学习的影响,但 ML 管道的所有其他部分都会产生影响。 模型规模就是其中之一——许多论文都展示了规模的好处。 正如 Wang 等人深入研究的那样,架构(例如,仅解码器与编码器-解码器)和目标(例如,随机LM 与掩码 LM)是其他因素。 未来的工作可能会进一步研究情境学习中的模型行为如何取决于模型规模以及架构和训练目标的选择。
5、结束语
在这篇博文中,我们提供了一个框架,其中 LM 通过使用提示“定位”它在预训练期间学习的相关概念来执行任务,从而进行上下文学习。
从理论上讲,我们可以将其视为以提示为条件的潜在概念的贝叶斯推理,这种能力来自预训练数据中的结构(长期一致性)。 我们将此与 NLP 基准的经验证据联系起来,表明当提示中的输出被随机输出替换时,上下文学习仍然有效。 虽然随机输出会增加噪声并移除输入-输出映射信息,但其他组件(输入分布、输出分布、格式)仍然为贝叶斯推理提供证据。
最后,我们详细说明了我们框架的局限性和可能的扩展,例如解释对未见任务的外推以及结合模型架构和优化的影响。 我们呼吁未来在理解和改进上下文学习方面开展更多工作。
bBimAnt翻译整理,转载请标明出处