In-Context Learning玩法大全
卷友们好,我是rumor。
虽然ChatGPT在大众眼里的热度可能已经过去了,但它prompt出了我的焦虑,于是最近一直在补大模型相关的工作。比起小模型,大模型有一个很重要的涌现能力(Emergent ability)就是In-Context Learning(ICL),也是一种新的范式,指在不进行参数更新的情况下,只在输入中加入几个示例就能让模型进行学习,如下图中用ICL做情感分析任务的栗子:
忽略大模型的贵,这个范式具备不少优势:
输入的形式是自然语言,可以让我们可以更好地跟语言模型交互,通过修改模版和示例说明我们想要什么,甚至可以把一些知识直接输入给模型
这种学习方式更接近人类,即通过几个例子去类比,而不是像精调一样从大量语料中统计出规律
相比于监督学习,ICL不需要进行训练,降低了模型适配新任务的成本,同时也提升了
language-model-as-a-service
这种模式的可行性
是不是开始觉得有些香了,甚至想动手试一试?但又觉得跟自己以前会玩的精调有很大区别,不知道从何下手炼丹?
下面就给大家推荐一篇北大出品的综述,可以在一定程度上减少大家入门ICL的痛苦:
题目:A Survey for In-context Learning
链接:https://arxiv.org/abs/2301.00234
这篇文章非常系统地从精调、推理两个方向上给出了ICL的几种优化方法,接下来我们一一学习:
通过精调优化ICL效果
虽然预训练后的语言模型已经初步具备ICL能力,但预训练的MLM目标和下游ICL目标还是存在gap的,怎样精调才能把模型预热(warmup)、提升ICL效果是一个重要的研究方向。注:这里的「精调」、「预热」不是为了让模型适配某个下游任务,而是让模型具备更好的通用ICL能力
有监督ICL训练
第一类方法非常直觉,既然要消除gap,我直接在有监督的ICL数据上训练不就好了?MetaICL[1]就直接把很多任务整合成了ICL的形式精调模型,在52个数据集上取得了比肩直接精调的效果。
另外还有部分研究专注于Instruction tuning,构建更好的任务描述让模型去理解,而不是只给几个例子(demonstration),比如LaMDA-PT[2]、FLAN[3]。
自监督ICL训练
有监督的数据毕竟是有限的,于是开始有研究者思考能不能借鉴预训练的方式,自监督地进行ICL训练。比如MetaAI的一篇工作[4]就很巧妙地把语言模型的一些任务转化成了ICL形式:
从上述两种训练方法来看,语言模型的ICL能力还有不少提升空间,因此建议大家使用ICL前最好先进行模型预热。不过也不用太多数据,因为上述的研究显示,随着预热的数据增多,模型的提升会到达一个瓶颈。
在推理阶段优化ICL效果
作者把推理阶段的优化方法分为Prompt设计和打分函数(Scoring Function)设计两种。
Prompt设计
作为激发大模型能力的输入,Prompt对ICL的效果影响很大。作者认为可以从组织方式和格式来进行Prompt的设计。组织方式是指如何选择数据样本并排序,格式是指怎么去写Prompt。
对于数据样本的选取,可以有以下方法:
无监督:比如直接通过文本表示、互信息选取相近的结果;也有研究通过perplexity或者其他指标进行选取;甚至可以直接让语言模型自己生成[5]。
有监督:既然选取不同的样本能得到不同的效果,那可以直接构造监督模型,去判别效果更好的样本;甚至有研究把样本选择建模成序列决策任务,把最终效果当作reward,用强化学习去做[6]。
对于数据样本的排序,目前的研究并不多,有两个思路:
基于一些距离度量,把跟输入相近的排在后面(靠近输入)。
在Lu等人[7]的研究中,他们找到了信息熵和ICL效果的联系,因此根据熵来决定最佳排序。
对于Prompt的格式,常见有两种:指令(Instruction)和推理步骤(Reasoning Steps)说明。
Instruction:任务的指令描述非常依赖人工,不过也可以尝试让语言模型自动生成描述并选择。
Reasoning Steps:对于更复杂的任务,可以人工显示地把推理步骤写出来,比如Chain-of-thought(CoT),来启发模型的推理能力。除了纯人工撰写外,还有以下方法:
让模型自己生成推理步骤
Multi-stage ICL:分多个步骤来完成任务,每一步都设计不同的子问题,让模型一步步解答。比如Self-Ask[8]这篇工作甚至让模型自己问自己。再比如Least-to-Most Prompting这篇工作先让模型把大问题拆成多个子问题,再挨个回答。
从上述Prompt设计的工作来看,作者认为有以下可以探索或注意的点:
目前大多数样例选择的策略都是围绕单个样本展开的,但语料级别的选择还没有人研究过。
对于
k
个样本,搜索空间是k!
,怎样找到最优解还是一个很有挑战的问题虽然增加CoT可以提升推理效果,但怎样优化CoT还有待研究
人工去写prompt的消耗还是很大的,可以尽量依靠语言模型去生成
打分函数(Scoring Function)
目前有几种方法:
Direct[9]:直接取答案的条件概率,这种方法的缺点是只能衡量固定模式的答案(答案y在输入x后面)
Perplexity:再用语言模型过一遍句子,这种方法可以解决上述固定模式的问题,但计算量增加了
Channel[10]:评估
P(x|y)
的条件概率(用贝叶斯推一下),这种方法在不平衡数据下表现较好
这三种方法的对比如下:
目前关于如何用打分策略来校准偏差、降低模型敏感度的研究还是比较少,有兴趣的同学可以探索。
还有什么会影响ICL表现?
除了上述提到的方法外,作者还调研到一些LM预训练阶段影响ICL效果的因素,比如:
预训练语料的多样性比数量更重要,增加多种来源的数据可能会提升ICL表现[11]
用下游任务的数据预训练不一定能提升ICL表现,并且PPL更低的模型也不一定表现更好[12]
当LM到达一定规模的预训练步数、尺寸后,会涌现出ICL能力[13],且ICL效果跟参数量正相关[14]
为什么ICL有效果?
目前的一些研究猜测有以下原因:
跟训练数据的分布相关:比如训练数据有很多样例[15],也有学者认为ICL可能是隐式的Bayesian inference[16]
跟学习机制相关:有学者猜测LM可能自己就具备学习的能力,在做ICL的时候学到了这些知识[17],或者隐式直接精调了自己[18]
跟Transformer中的模块相关:有学者发现Transformer里的某些注意力头会通过拷贝固定的模式来预测下一个token[19]
上述大部分研究虽然都有数据来证实自己的猜想,但还是停留在很简单的任务或者小模型上,对于为什么ICL会有效还有待进一步的解释。
之后的研究方向
新的预训练策略:毕竟目前LM的预训练目前跟ICL并不完全一致
把ICL能力蒸馏到更小的模型
在语言模型上进行知识增强和更新
对于样例的鲁棒性
总结
对于大模型小样本的新数据集和落地应用,作者也介绍了不少新工作,推荐大家去原文查看。
关于为什么大模型会涌现出那么多能力,个人更倾向第一种,即模型本身就从训练数据中学到了这些,Prompt只不过是把这个能力激发,告诉模型怎么做而已。但为什么模型必须要达到一定尺寸才能具备ICL?目前还没看到好的解答,23年马上GPT4也要推出了,这个世界会越来越魔幻。
参考资料
[1]
MetaICL: Learning to Learn In Context: https://aclanthology.org/2022.naacl-main.201/
[2]
LaMDA: Language Models for Dialog Applications: https://arxiv.org/abs/2201.08239
[3]
Finetuned Language Models are Zero-Shot Learners: https://openreview.net/forum?id=gEZrGCozdqR
[4]
Improving In-Context Few-Shot Learning via Self-Supervised Training: https://aclanthology.org/2022.naacl-main.260/
[5]
Self-Generated In-Context Learning: Leveraging Auto-regressive Language Models as a Demonstration Generator: https://arxiv.org/abs/2206.08082
[6]
Active Example Selection for In-Context Learning: https://arxiv.org/abs/2211.04486
[7]
Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity: https://aclanthology.org/2022.acl-long.556/
[8]
Measuring and Narrowing the Compositionality Gap in Language Models: https://doi.org/10.48550/arXiv.2210.03350
[9]
Language models are few-shot learners.: https://arxiv.org/abs/2005.14165
[10]
Noisy Channel Language Model Prompting for Few-Shot Text Classification: https://aclanthology.org/2022.acl-long.365/
[11]
On the Effect of Pretraining Corpora on In-context Learning by a Large-scale Language Model: https://aclanthology.org/2022.naacl-main.380/
[12]
On the Effect of Pretraining Corpora on In-context Learning by a Large-scale Language Model: https://aclanthology.org/2022.naacl-main.380/
[13]
Emergent abilities of large language models.: https://arxiv.org/abs/2206.07682
[14]
Language models are few-shot learners.: https://arxiv.org/abs/2005.14165
[15]
Data distributional properties drive emergent in-context learning in transformers.: https://arxiv.org/abs/2205.05055
[16]
An explanation of in-context learning as implicit bayesian inference: https://arxiv.org/abs/2111.02080
[17]
What can transformers learn in-context? A case study of simple function classes.: https://arxiv.org/abs/2208.01066
[18]
Transformers learn in-context by gradient descent.: https://arxiv.org/abs/2212.07677
[19]
In-context learning and induction heads: https://arxiv.org/abs/2209.11895
我是朋克又极客的AI算法小姐姐rumor
北航本硕,NLP算法工程师,谷歌开发者专家
欢迎关注我,带你学习带你肝
一起在人工智能时代旋转跳跃眨巴眼
「2023,请对我好一点」
In-Context Learning玩法大全相关推荐
- 电商平台营销活动玩法大全、拓客、吸粉、裂变、引流、团购返现、限时折扣、找人代付、砍价代付、多人拼团、优惠套餐、秒杀折扣、满减优惠、电商营销、电商推广、商品促销、营销红包、Axure原型、rp原型
电商平台营销活动玩法大全.拓客.吸粉.裂变.引流.团购返现.限时折扣.找人代付.砍价代付.多人拼团.优惠套餐.秒杀折扣.满减优惠.电商营销.电商推广.商品促销.营销红包.Axure原型.rp原型 Ax ...
- ChatGPT玩法大全火了,一键复制就能get同款效果:脱口秀张口就来,还能扮演哈利波特...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 Pine 发自 凹非寺 量子位 | 公众号 QbitAI 正值风头的 ...
- 美容院微信小程序玩法大全
2019独角兽企业重金招聘Python工程师标准>>> 附近的小程序:基于门店位置,展示在周边五公里范围内的微信用户手机上!能让周围潜在顾客迅速发现.进店体验.顾客通过附近小程序找到 ...
- 乐高无限最好玩的服务器联机打怪,乐高无限游戏玩法大全多种模式任你选择
乐高无限自公测以来还是蛮受大家的欢迎的,乐高无限玩法多样性丰富多彩,玩法很多你们都知道是什么么,接下来让我们简单了解一下乐高无限的多样游戏玩法吧. 1.生存模式 这个模式大家应该都熟悉,也是最常玩的一 ...
- 电商平台营销活动玩法大全
营销玩法可以实现 (1)吸粉.老客带新客,提高下单转化率 (2)提升复购新利器 (3)引导客户邀请朋友一起拼团购买 (4)玩心跳的新型卖货,引流提销量 (5)好友瓜分优惠券,带来更多流量 (6)清库存 ...
- 抖音服装类怎么运营变现;超详细抖音服装玩法大全。丨国仁网络资讯
前两天,朋友和我聊了个话题,我很吃惊.知道服装这行难做,没想到这么难. 库存积压.店租逐年上涨.服装同质化严重.竞争大,都是实体服装老板的痛,压得人喘不过气.旺季能赚点钱,淡季就亏店租.人工工资,一年 ...
- Spring 自定义注解玩法大全,从入门到…
在业务开发过程中我们会遇到形形色色的注解,但是框架自有的注解并不是总能满足复杂的业务需求,我们可以自定义注解来满足我们的需求. 根据注解使用的位置,文章将分成字段注解.方法.类注解来介绍自定义注解. ...
- @aspect注解_Spring自定义注解玩法大全,从入门到放弃
在业务开发过程中我们会遇到形形色色的注解,但是框架自有的注解并不是总能满足复杂的业务需求,我们可以自定义注解来满足我们的需求. 根据注解使用的位置,文章将分成字段注解.方法.类注解来介绍自定义注解. ...
- 16GB内存神奇玩法大全
去年的内存价格还高高在上,为了节省预算很多消费者在配机时都只购买2GB内存,不过到了今年年初,内存的价格就开始有所松动,终于在五六月的时候,内存价格出现了比较明显的下滑,自此一泻千里--如今,单条4G ...
最新文章
- Linux下使用Opencv打开笔记本摄像头
- 这个3月我有3场见面会,不知道你来不来?
- mini2440 u-boot linux 内核启动,u-boot.2012.10——mini2440(二、启动流程分析)
- 决胜秋招!分享128 道 Python 精选面试题!
- C++ 输出调试信息 类似MFC的TRACE等宏
- 安卓线程同步面试_Android面试题
- ansible软件部署
- 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
- 小程序代理创业成功的五个条件
- Visual Studio 2019下用 C# 实现 Hill2 二阶希尔密码 的加密、解密 GUI界面
- 【微信小程序学习】小程序API
- matlab编辑器背景颜色,matlab编辑器颜色风格设置
- Java后端开发的浪漫~情人节表白/告白代码(小白快速搭建项目)
- Java程序-自制班级随机选人程序
- 在线简洁Logo制作
- 《GTA5》揭秘游戏背后的故事
- php 豆瓣api_豆瓣的账号登录及PHP api操作
- 食品安全溯源区块链解决方案探索
- Python+Selenium实现12306模拟登录
- 机器人xacro设计+gazebo/rviz启动