[LLM][Prompt Engineering]:大语言模型上下文学习-What、How、Why?

news2024/9/30 7:28:16

上下文学习

  • 上下文学习
    • 什么是上下文学习
    • 2. 示例的选择
      • 2.1 相关度排序
      • 2.2 集合多样性
      • 2.3 大语言模型
    • 3. 示例格式
      • 3.1 人工标注
      • 3.2 利用大语言模型自动生成
    • 4. 示例顺序
    • 5. 上下文学习为什么可以work
      • 5.1 能力来源
      • 5.2 ICL的能力
    • Reference

在GPT-3的论文中,OpenAI 研究团队首次提出上下文学习(In-contextlearning, ICL) 这种特殊的提示形式。


什么是上下文学习

上下文学习是使用由任务描述和(或)示例所组成的自然语言文本作为提示的提示策略。如下图所示,首先,通过自然语言描述任务,并从任务数据集中选择一些样本作为示例。其次,根据特定的模板,将这些示例按照特定顺序组合成提示内容。最后,将测试样本添加到提示后面,整体输入到大语言模型以生成输出。基于任务描述以及示例信息,LLM无需显式的梯度更新即可识别和执行新的任务

image-20240828181704225

给定由 k k k 个样本组成的示例数据集合 D k = { f ( x 1 , y 1 ) , . . . , f ( x k , y k ) } D_k=\{f(x_1,y_1), ...,f(x_k,y_k) \} Dk={f(x1,y1),...,f(xk,yk)},其中 f ( x k , y k ) f(x_k, y_k) f(xk,yk)为将样本转为提示的函数,可以是模型也可以是手工定义。给定任务描述 I I I、示例 D k D_k Dk以及新的输入 x k + 1 x_{k+1} xk+1,LLM基于给予的提示,生成答案 y k + 1 y_{k+1} yk+1
L L M ( I , f ( x 1 , y 1 ) , . . . , f ( x k , y k ) , f ( x k + 1 , ‾ ) ) → y k + 1 LLM(I,f(x_1,y_1), ...,f(x_k,y_k),f(x_{k+1}, \underline{})) \rightarrow y_{k+1} LLM(I,f(x1,y1),...,f(xk,yk),f(xk+1,))yk+1
img

如上图所示,以一个分类任务进行举例,从训练集中抽取了 k = 3 k=3 k=3个包含输入输出的实例,使用换行符"\n"来区分输入和输出。在预测时,可以更换测试样本输入(绿色部分),并在末尾留出空间让LLM生成。

在原始的GPT-3 论文中,作者将上下文学习的提示定义为任务描述和示例的组合,这两部分均为可选。按照这个定义,如果大语言模型仅通过任务描述(即任务指令)来解决未见过的任务(Zero-shot),也可以被看作是上下文学习的一种特例。

指令微调和上下文学习的区别:

  1. 指令微调需要对大语言模型进行微调,而上下文学习仅通过提示的方式来调用大语言模型解决任务。
  2. 指令微调还可以有效提升大语言模型在执行目标任务时的上下文学习能力,尤其是在零样本(Zero-shot)场景下(即仅依赖任务描述而无需额外的示例)。

2. 示例的选择

示例选择的目的是从含有大量样本的数据集中选取最有价值的示例,进而帮助LLM更为有效的激发模型效果。示例的选择原则:示例包含丰富的任务信息且与测试样本保持高度相关性。

2.1 相关度排序

基于 k k k 近邻(K-Nearest Neighbors,K-NN)的相似度检索算法:使用文本嵌入模型(如BERT)将所有候选样本映射到低维嵌入空间中,然后根据候选样本与测试样本的嵌入语义相似度进行排序,并选择出最相关的 k k k 个示例,最后将筛选出的示例作为上下文学习的示例集合。

Note:需要拿到全部或部分测试样本

2.2 集合多样性

尽管 k k k近邻检索算法简单易行,但是它通常独立地评估每个示例的相关性,而忽略了示例集合的整体效果。为了弥补这一不足,我们可以采取基于集合多样性的示例选择策略。这种策略旨在针对特定任务选择出具有代表性的、信息覆盖性好的示例集合,从而确保所选示例能够反应尽可能多的任务信息,从而为大语言模型的推理提供更丰富、更全面的信息。在选择过程中,除了考虑样本与目标任务的相关性,同时也要考虑与已选样本的相似性,需要综合考虑相关性与新颖性的平衡。在实现中,可以采用经典启发式的MMR 算法(Maximum Margin Ranking)以及基于行列式点过程的DPP 算法(DeterminantalPoint Process),从而加强示例集合的多样性。

2.3 大语言模型

  1. 将大语言模型作为评分器对候选样本进行评估,选择出优质的示例。
  2. 通过计算在加入当前示例后大语言模型性能的增益来评估示例的有效性
  3. 根据大语言模型的评分结果选择出少量的正负示例用于训练一个分类器,该分类器通过正负示例能够学习到如何准确地区分和筛选出高质量示例,从而更准确地来指导后续的示例选择过程。

3. 示例格式

3.1 人工标注

  1. 定义好输入与输出的格式,添加详细的任务描述, 帮助大语言模型更好地理解当前示例所要表达的任务需求。下图示例展示了人工标注的示例格式的例子。最简单的示例格式只需要显式标识出输入与输出,让大语言模型自动学习到输入与输出之间的语义映射关系。
  2. 在提示内部加入相关的任务描述有助于模型更精准地理解任务的要求,从而生成更准确的答案。
  3. 为了更好地激发大语言模型的推理能力,可以在输出中加入思维链
image-20240829111520789

3.2 利用大语言模型自动生成

借助大语言模型的上下文学习能力,进而大规模扩充新任务的示例模版。具体来说,首先人工标注一部分的示例模板作为种子集合加入到大语言模型的输入中。然后,利用大语言模型强大的少样本学习能力,指导其为新任务生成相应的示例模版。最后,对这些生成的示例模版进行筛选与后处理,使之符合任务要求。

4. 示例顺序

在上下文学习中,大语言模型往往会受到位置偏置的影响,表现为对示例顺序具有一定的敏感性。因此,设计合理的示例顺序也是上下文学习中需要考虑的一个问题,旨在为所选择的示例找到最有效的排序方式以提升模型性能。确定大语言模型的最优的示例顺序通常分为两个步骤:产生示例的候选顺序评估示例顺序的有效性。

  • 产生示例顺序:
    • 首先最为直接的方法是给出所有示例的排列组合,从中随机选择一个示例组合作为示例顺序。这种随机选择的方式,产生的方差较大。
    • 根据示例与测试样本之间的语义相似度进行排序,然后将与测试样例相似度更高的示例放在更靠近测试样本的位置。这种方法可以加强大语言模型在推理过程中对于语义相关的示例进行利用,从而提升模型性能。
  • 顺序质量评估:
    • 直接测试大语言模型基于该示例顺序的任务性能,以此作为当前示例顺序的评分。
    • 采用模型对于预测结果的不确定性作为评估指标。具体来说,计算基于该示例顺序大语言模型预测分布的熵值,选择熵值较低的示例顺序作为较为有效的顺序。熵值越低,意味着模型预测分布越不均匀,则模型预测的置信度更高。

5. 上下文学习为什么可以work

5.1 能力来源

预训练阶段主要有两个关键因素对大语言模型上下文学习能力产生影响:**预训练任务和预训练数据。**这两方面分别关注如何设计训练任务和如何选择训练数据来提升模型的上下文学习能力。

  1. 预训练任务:上下文学习的概念最初在GPT-3 的论文中被正式提出,论文通过相关实验发现上下文学习能力随着模型规模的增大而增强。随着预训练技术的改进,后续研究发现(MetaICL),即使是小规模的模型,通过设计专门的训练任务(如根据示例和输入来预测标签),进行继续预训练 或微调,也能够获得上下文学习能力。
  2. 预训练数据. 通过混合不同领域的预训练数据,增强预训练语料的多样性可以提高大语言模型的上下文学习能力。此外,预训练数据的长程依赖关系也是改善模型上下文学习能力的重要因素。通过将前后相关的文本直接拼接进行训练,模型能够更好地理解文本之间的关联性,从而提升上下文学习的能力。

由此,LLM具备了以下能力:

  1. 知识积累:预训练阶段,模型会接触到大量的无标注或弱标注数据,从而学习到丰富的语言知识、常识和上下文信息。这些积累的知识和信息为ICL提供了坚实的基础,使得模型能够利用上下文信息做出更准确的预测。

  2. 泛化能力:预训练过程使模型具备了较强的泛化能力,即模型能够将在预训练阶段学到的知识和技能应用到新的、未见过的任务和数据上。这种泛化能力是ICL得以实现的关键,因为ICL正是利用了模型在预训练阶段学到的知识来进行少量样本学习。

  3. 参数初始化:预训练为模型的参数提供了良好的初始化值。在ICL过程中,模型不需要对参数进行大量的更新,而只需要根据少量标注样本进行微调,即可快速适应新的任务。这种快速的适应能力是ICL的一个重要优势。

5.2 ICL的能力

  1. 利用上下文信息:LLMs能够充分利用输入序列中的上下文信息来做出决策。例如,在文本分类任务中,模型可以通过分析整个句子的语境来判断句子的情感倾向。
  2. 设计提示模板:对于特定的任务,LLMs可以通过设计任务相关的指令形成提示模板。这些提示模板可以包含少量标注样本,用于指导模型生成预测结果。
  3. 少样本学习:LLMs在只有少量标注数据可用时仍能表现出良好的性能。通过利用预训练阶段学到的知识和泛化能力,模型可以在少量样本上快速学习并适应新的任务。
  4. 性能提升:实验表明,ICL方法的表现大幅度超越了Zero-Shot-Learning(示例样本为0的特殊ICL),为少样本学习提供了新的研究思路。在多个自然语言处理任务上,采用ICL方法的LLMs相比传统的微调方法取得了更好的性能。

Reference

https://www.cnblogs.com/ting1/p/18254665

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习示例1-全零通道的 MNIST 数据训练模型

一、代码示例 from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.datasets import mnist import numpy as np(train_images, train_labels), _ = mnist.load_data() train_images = train_images.reshape((60000, 28 * 28)) train_ima…

基于FPGA的OV5640摄像头图像采集

1.OV5640简介 OV5640是OV(OmniVision)公司推出的一款CMOS图像传感器,实际感光阵列为:2592 x 1944(即500w像素),该传感器内部集成了图像出炉的电路,包括自动曝光控制(AEC…

基于深度学习的单目标跟踪系统

基于深度学习的单目标跟踪,效果吊打传统算法,3060显卡上达到实时,代码python和c两个版本都有。 基于深度学习的单目标跟踪系统是一种先进的计算机视觉技术,它可以实现实时的、高精度的目标跟踪。与传统的基于特征匹配或模板匹配的…

实现A-Z滑动检索菜单

写个这小玩意真麻烦 <template><div id"letterPeo"><!-- <button click"getasd">获取</button>--><div class"letter"><div v-for"(item, index) in letter" :key"index" clas…

高速接口IO片上SSN分析方法

Gbps信号在当今的高速IO设计中非常常见。由于封装和板上的寄生电感&#xff0c;高速信号在高频下汲取电流&#xff0c;导致大的电源尖峰或骤降。像DDR5这样的并行总线接口有20多个高速IO一起切换&#xff0c;导致同时切换噪声&#xff08;SSN&#xff09;。SSN的不期望的产物是…

苹果手机怎么恢复微信聊天记录?原来这4个方法这么好用

苹果手机的微信聊天记录不见了怎么办&#xff1f;想要解决这个问题&#xff0c;可以先了解一下导致聊天记录消失的原因有哪些。 误触手机&#xff1a;我们有时误触到某个按钮&#xff0c;也可能恢复导致聊天记录消失。卸载微信&#xff1a;卸载微信后&#xff0c;重新安装再打…

国密起步5:GmSSL3交叉编译arm64

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 之前已经建立好了交叉编译环境…

让 Jenkins 到极狐GitLab 的迁移变得更加简单

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;可以私有化部署&#xff0c;对中文的支持非常友好&#xff0c;是专为中国程序员和企业推出的企业级一体化 DevOps 平台&#xff0c;一键就能安装成功。安装详情可以查看官网指南。 文章原文可以点击极狐GitLab 官方资源中心查…

利用短信群发平台时提升短信营销打开率的关键因素

尽管众多企业依赖短信群发平台作为营销手段&#xff0c;但短信的实际打开率往往不尽如人意。以下是几个显著影响短信营销效果的关键因素及其优化策略&#xff1a; 1. 谨慎选择用词&#xff0c;规避敏感词汇 现代智能手机普遍配备了智能拦截功能&#xff0c;对包含特定敏感词汇…

C++宏展开

感觉自己一直对C的宏展开没有细致地研究过&#xff0c;这两天深入地学习了一下&#xff0c;做个笔记。 文章目录 宏展开基本规则宏嵌套展开补充说明参考资料 首先明确宏展开&#xff0c;是在预处理阶段进行的&#xff0c;进入编译期就是宏展开之后的代码了&#xff0c;所以不会…

基于Flask的新冠疫情信息可视化查询系统【案例模板】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 本项目是一个案例学习项目&#xff0c;可以作为新手进行学习系统的框架&#xff0c;本项目有数据库…

Git 学习

一、基本使用 1. 基本理论 Git 是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的项目&#xff1b;版本控制是一种记录一个或者若干个文件内容变化&#xff0c;以便来查阅特定版本修订情况的系统 集中化版本控制系统&#xff1a;SVN, CV…

单片机使用cJSON的坑

文章目录 问题解决办法方法一方法二 问题 单片机USAR串口通信我想用json&#xff0c; 我不想用 分隔符的方式。感觉性能够&#xff0c;还有就是方便理解。 mcu型号 : AT32F415系列 雅特力的。 cJSON库: https://github.com/DaveGamble/cJSON/tree/master 只要把 cJSON.h 和 c…

云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件

一、Harbor部署 1.验证python版本 [rootdocker2 ~]#python --version 2.安装pip [rootdocker2 ~]# yum -y install python2-pip #由于版本过低&#xff0c;需要对其进行一个升级 #更新pip [rootdocker2 ~]#pip install --upgrade pip 3.指定版本号 [rootdocker2 ~]# p…

geodatatool(地图资源工具)下载高德数据及数据共享

利用geodatatool&#xff08;地图资源工具&#xff09;3.8&#xff08;新&#xff09;下载高德POI数据&#xff1a; 选择类型如下&#xff1a; 数据效果如下&#xff0c;由于用的免费的key&#xff0c;所以可能数据下载还不完全&#xff0c;但已经很多了&#xff1a; 下载数据…

小模型大智慧!港大重磅开源EasyRec,推荐系统进入语言模型时代

在当今的信息时代&#xff0c;我们每天都被海量信息所包围&#xff0c;不断面临各种选择。从网上购物、音乐播放到视频推荐&#xff0c;推荐系统已经成为我们生活中不可或缺的一部分。那么&#xff0c;这些系统是如何运作的&#xff1f;它们又是如何在信息的洪流中帮助我们找到…

《使用 LangChain 进行大模型应用开发》学习笔记(一)

前言 本文是 Harrison Chase &#xff08;LangChain 创建者&#xff09;和吴恩达&#xff08;Andrew Ng&#xff09;的视频课程《LangChain for LLM Application Development》&#xff08;使用 LangChain 进行大模型应用开发&#xff09;的学习笔记。由于原课程为全英文视频课…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#xff08;KNN分类器&#xff09; 文章目录 一、基本原理原理流程举个例子总结 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#x…

Android 优化之 查找so 文件的来源

序言 有时候我们需要优化apk的包体积大小。比如下面这样的。一个so文件大小有10M。但是我们并不知道so文件是那个库引入的。所以需要研究一下。 方法 在参考网上现有方法&#xff0c;加上自己测试以后。有了下面的成功。而且在gradle 8.4.2都可以成功。相信大家都可以成功。…

MathType常见问题汇总

文章目录 MathType常见问题汇总一、如何将MathType内嵌到WPS工具栏中&#xff1f;二、在word中&#xff0c;如何批量修改所有MathType公式的字体以及大小格式&#xff1f;三、如何解决插入MathType公式后的行间距发生改变&#xff1f;参考 MathType常见问题汇总 一、如何将Mat…