Prompt工程 - 上下文学习
概述
上下文学习(In-Context Learning, ICL) 是一种通过构造特定的Prompt,来使得语言模型理解并学习下游任务的范式,这些特定的Prompt 中可以包含演示示例,任务说明等元素。
按照示例数量的不同,上下文学习可以呈现出多种形式:
- 零样本(Zero-shot)上下文学习、
- 单样本(One-shot)上下文学习
- 少样本(Few-shot)上下文学习
示例选择
在上下文学习中,示例在引导大语言模型理解任务中扮演着重要作用,其内容和质量直接影响着学习效果。
合理选择演示示例对提升上下文学习性能至关重要。演示示例选择主要依靠相似性和多样性:
- 相似性是指精心挑选出与待解决问题最为相近的示例。
- 多样性则要求所选的示例涵盖尽量广的内容,扩大演示示例对待解决问题的覆盖范围。
接下来对基于相似性和多样性的三类示例选择方法展开介绍:
- 直接检索
- 给定一组候选示例,直接检索的方法依据候选示例与待解决问题间的相似性对候选示例进行排序,然后选取排名靠前的K个示例(Top K)。
- 聚类检索
- 为缓解直接检索中存在的样例趋同的问题,聚类检索方法采用先聚类后检索的方法来保证检索结果的多样性。
- 迭代检索
- 直接检索和聚类检索在相似性和多样性之间往往顾此失彼。为了兼顾相似性多样性,迭代检索策略应运而生。
性能影响因素
通过精心设计示例选择策略,上下文学习的效果可以得到显著提升。但是,除了示例选择以外,上下文学习的性能仍受到多种因素的共同影响。这些因素涉及括预训练数据、预训练模型,以及演示示例等多个方面。
- 预训练数据的影响
- 预训练数据是上下文学习能力的来源,深刻影响着上下文学习的性能。
- 领域丰富度(预训练数据的所覆盖的领域的丰富度直接影响模型的领域泛化能力。)
- 任务多样性(预训练数据中的任务多样性是提升上下文学习性能的重要因素。)
- 训练数据的分布特性(训练数据中存在突发性分布和罕见类别时,能够增强模型的上下文学习能力。)
- 预训练数据是上下文学习能力的来源,深刻影响着上下文学习的性能。
- 预训练模型的影响
- 主要体现在模型参数规模上,此外架构和训练策略等也是重要因素。
- 演示示例的影响
- 演示示例的格式(不同的任务对于示例格式的要求不同。)
- 输入-输出映射的正确性 (对于一个包含输入、输出的示例,大语言模型旨在从中学习到输入-输出映射,以完成目标任务。)
- 示例数量及顺序(增加演示示例的数量通常能够提升上下文学习性能,但随着示例数量的增多,性能提升的速率会逐渐减缓)
