0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

In-context learning介绍

深度学习自然语言处理 来源:NLP日志 2023-04-21 10:02 次阅读

1 简介‍‍‍‍‍‍‍‍‍

随着大规模预训练语言模型(LLM)能力的不断提升,in-context learning(ICL)逐渐成为自然语言处理领域一个新的范式。ICL通过任务相关的若干示例或者指令来增强上下文,从而提升语言模型预测效果,通过探索ICL的性能来评估跟推断LLM能力也成为一种新的趋势。

58c4df04-df6c-11ed-bfe3-dac502259ad0.png

图1: In-context learning示例

2 介绍

In-context learning是一种学习范式,它允许语言模型通过以演示形式组织的若干个示例或者指令来学习任务。In-context learning的核心在于从任务相关的类比样本中学习,ICL要求若干示例以特定形式进行演示,然后将当前输入x跟上述示例通过prompt拼接到一起作为语言模型的输入。本质上,它利用训练有素的语言模型根据演示的示例来估计候选答案的可能性。简单理解,就是通过若干个完整的示例,让语言模型更好地理解当前的任务,从而做出更加准确的预测。

从定义上可以发现in-context learning跟其他相关概念的差异,比如prompt learning跟few-shot learning。Prompt learning是通过学习合适的prompt来鼓励模型预测出更加合适的结果,而prompt既可以是离散型,也可以是连续型。严格来讲,in-context learning可以视为prompt learning中的一小部分,如果将in-context learning中的若干示例的演示视作prompt的话。Few-shot learning指的是在给定少量监督数据下利用参数更新来学习最佳模型参数的训练方法,但in-context learning则不然,它不要求参数更新。

In-context learning有以下几个优势,

a)若干示例组成的演示是用自然语言撰写的,这提供了一个跟LLM交流的可解释性手段,通过这些示例跟模版让语言模型更容易利用到人类的知识。

b)类似于人类类比学习的决策过程,举一反三。

c)相比于监督学习,它不需要模型训练,减小了计算模型适配新任务的计算成本,更容易应用到更多真实场景。

3 方法‍‍‍‍‍‍‍‍

In-context learning可以分为两部分,分为作用于Training跟inference阶段

3.1 Training

在推理前,通过持续学习让语言模型的ICL能力得到进一步提升,这个过程称之为warmup,warmup会优化语言模型对应参数或者新增参数,区别于传统的finetune,finetune旨在提升LLM在特定任务上的表现,而warmup则是提升模型整理的ICL性能。

Supervised in-context training

通过构建对应的in-context的监督数据跟多任务训练,进行对应的in-context finetune,从而缩小预训练跟下游ICL的差距。除此之外,instruct tuning通过在instruction上训练能提升LLM的ICL能力。

Self-supervised in-context training

根据ICL的格式将原始数据转换成input-output的pair对数据后利用四个自监督目标进行训练,包括掩码语言,分类任务等。

Supervised training跟self-supervised training旨在通过引入更加接近于in-context learning的训练目标从而缩小预训练跟ICL之间的差距。比起需要示例的in-context finetuning,只涉及任务描述的instruct finetuning更加简单且受欢迎。另外,在warmup这个阶段,语言模型只需要从少量数据训练就能明显提升ICL能力,不断增加相关数据并不能带来ICL能力的持续提升。从某种角度上看,这些方法通过更加模型参数可以提升ICL能力也表明了原始的LLM具备这种潜力。虽然ICL不要求warmup,但是一般推荐在推理前增加一个warmup过程。

3.2 Inference

很多研究表明LLM的ICL性能严重依赖于演示示例的格式,以及示例顺序等等,在使用目前很多LLM模型时我们也会发现,在推理时,同一个问题如果加上不同的示例,可能会得到不同的模型生成结果。

Demonstration Selection

对于ICL而言,那些样本是好的?语言模型的输入长度是有限制的,如何从众多的样本中挑选其中合适的部分作为示例这个过程非常重要。按照选择的方法主要可以分为无监督跟有监督两种。

其中无监督的方法分为以下几种,首先就是根据句向量距离或者互信息等方式选择跟当前输入x最相似的样本作为演示例,另外还有利用自使用方法去选择最佳的示例排列,有的方法还会考虑到演示示例的泛化能力,尽可能去提高示例的多样性。除了上述这些从人工撰写的样本中选择示例的方式外,还可以利用语言模型自身去生成合适的演示示例。

至于监督的方法也有几种,第一种是先利用无监督检索器召回若干相似的样本,再通过监督学习训练的Efficient Prompt Retriever进行打分,从而筛选出最合适的样本。此外还有基于prompt tuning跟强化学习的方式去选择样本。

Demonstration ordering

挑选完演示示例后,如何对其进行排序也非常重要。排序的方法既有不需要训练的,也有根据示例跟当前输入距离远近进行排序的,也可以根据自定义的熵指标进行重排。

Demonstration Formatting

如何设计演示示例的格式?最简单的方式就是将示例们的x-y对按照顺序直接拼接到一起。但是对于复杂的推理问题,语言模型很难直接根据x推理出y,这种格式就不适用了。另外,有的研究旨在设计更好的任务指令instruction作为演示内容,上述的格式也就不适用了。对于这两类场景,除了人工撰写的方式外,还可以利用语言模型自身去生成对应的演示内容。

4 总结‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

上面关于in-context learning的介绍可能会让人感到些许困惑,instruction tuning也算是其中一种,但是instruction里不一定有演示示例,我个人想法也是如此,如果大多数instruction里也会提及对应的任务示例,但是不排除部分instruction只涉及到任务定义,所以前面将in-context learning跟任务示例强绑定可能就不太严谨了。但是大家能理解其中的含义即可,也没必要深究其中的某些表述。‍‍‍‍

毋庸置疑,在大规模语言模型能力快速提升的今天,in-context learning的热度还将持续一段时间,如何通过构建合适的in-context来进一步激发语言模型在特定任务下的表现是值得思考的问题,如果能让语言模型自身去写对应的任务示例或者指令,让模型自己指导自己执行任务,不就进一步解放生产力了嘛。细品下autoGPT,不也是ai自己指导自己完成任务嘛。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • icl
    icl
    +关注

    关注

    0

    文章

    28

    浏览量

    17166
  • 语言模型
    +关注

    关注

    0

    文章

    435

    浏览量

    10051

原文标题:In-context learning综述篇

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LEARNING_ROBOTICS_USING_PYTHON

    LEARNING_ROBOTICS_USING_PYTHON
    发表于 09-28 11:44

    Learning ROS for Robotics Programming - Second Edition

    Learning ROS for Robotics Programming - Second Edition
    发表于 09-28 11:45

    Ensemble Learning Task

    学习地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearningTask
    发表于 07-07 07:06

    基于双估计器的Speedy Q-learning算法

    Q-learning算法是一种经典的强化学习算法,更新策略由于保守和过估计的原因,存在收敛速度慢的问题。 SpeedyQ-learning算法和 Double Q-learning算法
    发表于 05-18 15:51 2次下载

    追溯ChatGPT各项能力的起源

    上下文学习 (in-context learning) : 遵循给定任务的几个示例,然后为新的测试用例生成解决方案。很重要的一点是,GPT-3虽然是个语言模型,但它的论文几乎没有谈到“语言建模
    的头像 发表于 02-17 10:05 818次阅读

    把ChatGPT加入Flutter开发,会有怎样的体验?

    与以往的统计模型不行,ChatGPT 不是那种「一切都从语料统计里学习」的 AI,相反 ChatGPT 具备有临场学习的能力,业内称之为 in-context learning ,这也是为什么 ChatGPT 可以在上下文中学习的原因。
    的头像 发表于 03-06 09:43 660次阅读

    一文解析In-Context Learning

    本文主要以实验为主,探究以上影响 ICL 的因素。 实验设置 作者采用 12 个模型进行了实验。我们包括 6 种语言模型(表 1),所有这些模型都是仅限解码器的 dense LM。LMs 的大小从 774M 到 175B 不等。
    发表于 03-22 15:21 1439次阅读

    In-context learning如何工作?斯坦福学者用贝叶斯方法解开其奥秘

    In-context learning允许用户为新用例快速构建模型,而无需为每个任务微调和存储新参数。它通常只需要很少的训练示例就可以使模型正常工作,而且即使对于非专家来说,也可以通过直观的自然语言来进行交互。
    的头像 发表于 04-11 14:07 1084次阅读

    大模型LLM领域,有哪些可以作为学术研究方向?

    随着全球大炼模型不断积累的丰富经验数据,人们发现大模型呈现出很多与以往统计学习模型、深度学习模型、甚至预训练小模型不同的特性,耳熟能详的如Few/Zero-Shot LearningIn-Context Learning、Ch
    的头像 发表于 05-29 14:36 790次阅读
    大模型LLM领域,有哪些可以作为学术研究方向?

    In-Context-Learning在更大的语言模型上表现不同

    最近,在语言模型领域取得了巨大的进展,部分是因为它们可以通过In-Context- Learning ( ICL)来完 成各种复杂的任务。
    的头像 发表于 06-12 14:35 463次阅读
    In-<b class='flag-5'>Context-Learning</b>在更大的语言模型上表现不同

    首篇!Point-In-Context:探索用于3D点云理解的上下文学习

    随着基于广泛数据训练的大模型兴起,上下文学习(In-Context Learning)已成为一种新的学习范式,在自然语言处理(NLP)和计算机视觉(CV)任务中表现出了巨大的潜力。
    的头像 发表于 07-13 14:41 419次阅读
    首篇!Point-In-<b class='flag-5'>Context</b>:探索用于3D点云理解的上下文学习

    基于Tansformer架构的ChatGPT原理解析

    学习(In-Context Learning)、思维链(Chain of Thought,CoT)等概念也随之进入大众视野。市面上甚至出现了提示工程师这个职业,专门为指定任务编写提示模板。
    发表于 09-04 14:36 330次阅读
    基于Tansformer架构的ChatGPT原理解析

    关于GO CONTEXT机制实现原则

    Context接口没有提供方法来设置其值和过期时间,也没有提供方法直接将其自身撤销。也就是说,Context不能改变和撤销其自身。那么该怎么通过Context传递改变后的状态呢?
    的头像 发表于 11-16 16:15 180次阅读

    基于单一LLM的情感分析方法的局限性

    LLM的发展为情感分析任务带来的新的解决方案。有研究人员使用LLM,在上下文学习(in-context learning, ICL)的范式下,仅使用少量的训练示例就能够实现与监督学习策略旗鼓相当的性能表现。
    的头像 发表于 11-23 11:14 389次阅读
    基于单一LLM的情感分析方法的局限性

    无监督域自适应场景:基于检索增强的情境学习实现知识迁移

    本文对比了多种基线方法,包括无监督域自适应的传统方法(如Pseudo-labeling和对抗训练)、基于检索的LM方法(如REALM和RAG)和情境学习方法(如In-context learning)。
    发表于 12-05 14:14 201次阅读
    无监督域自适应场景:基于检索增强的情境学习实现知识迁移