LLM的上下文学习中示例样本的作用研究

《Learning vs Retrieval: The Role of In-Context Examples in Regression with LLMs》

链接:https://arxiv.org/pdf/2409.04318

文章探讨了大型语言模型(LLMs)在回归任务中是如何利用上下文示例进行学习(Learning)和知识检索(Retrieval)的,并提出了一个评估框架来分析这两种机制。

文章的贡献包括:

  1. 证明了 LLMs 可以有效从现实数据集的回归示例中学习。
  2. 提出了一个结合学习和知识检索的 ICL 机制假设。
  3. 引入了一个评估框架,允许跨不同 LLMs、数据集和提示配置系统地比较 ICL 机制。
  4. 提供了如何平衡内部知识检索和从上下文示例中学习的全面分析,并提供了提示工程工具来控制它们。

设计思路和方法论

文章的核心观点是,LLMs 在上下文学习(In-Context Learning, ICL)中的行为不是单纯的学习或检索知识,而是介于两者之间的一个谱系,这个谱系可以根据多种因素进行调整。为了验证这一观点,作者设计了一系列实验,主要关注回归任务,并使用不同的提示(prompt)配置来操纵 LLMs 依赖内部知识检索和从上下文示例中学习的程度。

实验设计

实验使用了三个主要的 LLMs:LLaMA 3 70B、GPT-3.5 和 GPT-4,并在三个回归数据集上进行测试:Admission Chance、Insurance Cost 和 Used Car Prices。这些数据集被分割为包含 100 个实例的上下文子集和包含 300 个实例的测试子集。

提示配置

作者设计了四种提示配置来与模型交互:

  1. 命名特征(Named Features):提示中包含特征的实际名称和目标变量。
  2. 匿名特征(Anonymized Features):提示中特征名称被替换为通用名称。
  3. 随机真实值(Randomized Ground Truth):提示中保持命名特征,但将真实值替换为随机生成的数字。
  4. 直接问答(Direct QA):没有上下文示例,直接询问模型估计目标变量。
评估指标

使用均方误差(MSE)作为主要的比较指标,并计算决定系数 R^2 和平均绝对误差(MAE)作为补充。

技术细节

知识检索评估(Direct QA)

首先,作者评估了 LLMs 在没有任何上下文示例的情况下,仅依赖其知识检索能力的性能。这为理解上下文示例如何调节 LLMs 的性能和 ICL 机制提供了基准。

学习和检索的相互作用

通过比较不同提示配置下的性能,作者发现:

  • 随机真实值配置:性能最差,表明 LLMs 确实从提供的示例中学习。
  • 命名特征与匿名特征配置:命名特征配置通过添加特征名称鼓励使用领域知识,通常优于匿名特征配置。
知识检索补偿 ICL 示例

当真实值被随机化时,更多的上下文示例会降低性能。这表明增加上下文示例的数量会促使模型从示例中学习,而不是仅仅检索知识。

更多特征鼓励知识检索

与上下文示例的数量不同,特征的数量被证明可以改善 LLMs 中的学习和知识检索。添加更多特征主要增强了知识检索方面,而不是对学习的贡献。

结论

文章的结论是,LLMs 在 ICL 中的行为是一个复杂的谱系,可以根据任务和数据的特性进行调整。通过精心设计的提示,可以优化 LLMs 的性能,使其在学习和知识检索之间达到最佳平衡。

欢迎关注微信公众号:nlp之路,关注后发送LLM,免费领取LLM电子书

### 大型语言模型的上下文学习(ICL)训练和推理方法 #### 上下文学习概述 上下文学习是一种无需额外参数更新即可使大型语言模型适应新任务的技术。这种方法利用少量示范样例作为提示,帮助模型理解和完成特定的任务[^2]。 #### ICL的工作原理 在上下文学习过程中,输入给模型的数据不仅包含待处理的新样本,还包含了若干已经标注好的示例。这些已知的例子被用来构建一个自然语言形式化的指导说明,使得LLM能够依据此模式推断并生成对于未知实例的回答。由于这种机制不涉及权重调整或反向传播过程,所以可以快速部署至不同应用场景中去[^3]。 #### 训练阶段特点 尽管被称为“无监督”,但实际上,在预训练阶段,大规模的语言建模任务本身就已经赋予了模型丰富的背景知识。当涉及到具体的下游应用时,则不再需要传统的微调流程;相反,只需提供恰当构造的前缀文本就能激活相应的功能模块。这意味着执行任何新的分类、问答或其他类型的NLP子领域工作都变得异常简便高效[^1]。 #### 推理阶段操作指南 为了实现有效的上下文学习效果,设计良好的提示至关重要。理想情况下,应该精心挑选那些最能代表目标任务特征的案例加入到前置序列里,并确保它们按照一定逻辑顺序排列以便于理解。此外,还可以尝试改变问题表述方式或者增加辅助信息来优化最终输出质量。下面给出一段Python代码用于模拟如何设置这样的环境: ```python def setup_in_context_learning(model, examples, new_example): prompt = "" # 添加已有示例形成上下文 for example in examples: prompt += f"Input: {example['input']}\nOutput: {example['output']}\n\n" # 加入需预测的新实例 prompt += f"Input: {new_example}" return model.generate(prompt) # 假设有一个名为model的对象表示我们的大模型 examples = [ {"input": "What is 2+2?", "output": "The answer is 4."}, {"input": "Who wrote 'Romeo and Juliet'?", "output": "It was written by William Shakespeare."} ] print(setup_in_context_learning(model, examples, "How many sides does a triangle have?")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值