文 | python

前言

随着GPT-3等超大模型的兴起,in-context learning 的形式也流行起来。在in-context learning中,模型不根据下游任务调整参数,而是将下游任务的输入输出接起来之后作为prompt,引导模型根据测试集的输入生成预测结果。该方法的表现可以大幅超越零监督学习,并给大模型高效运用提供了新的思路。

然而,in-context learning中,模型真的学习了下游任务么?作为prompt的训练样本,到底是如何让模型work的?

本文作者发现,in-context learning学习的并不是输入与标注之间的关联,而是通过展示数据形式,来激活预训练模型的能力。此外还有两个附带的结论:(1)在meta learning的环境下,in-context learning的这一特点更为明显;(2)因为标签不重要,所以可以用无标注领域内数据做in-context zero shot learning。

论文题目:
Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?

论文链接:
https://arxiv.org/abs/2202.12837

项目地址:
https://github.com/Alrope123/rethinking-demonstrations

背景

大规模预训练模型的无监督预测:对预训练好的语言模型,输入测试数据的输入(x),直接通过语言模型预测输出(P(y|x))。如下图所示。其中minimal是最简单的方式,mannual是加入人工设计的部分。蓝色是需要预测的标签部分。这篇论文中,作者默认采用Minimal的方式处理测试数据。

in-context learning,类似于上述的无监督预测,但在输入测试样例前输入少量标注数据。同样不需要参数调整,直接训练。相当于在无监督预测的基础上,引入如下前缀:

而本文主要探究的,就是in-context learning中,模型究竟从加入的这段前缀中学到了什么。

实验设置

本文主要探究了6种不同的预训练模型,其中,MetaICL采用了大量的下游任务以in-context learning的形式进行了元学习:

对于每个模型,作者采用了两种应用方式,即direct和channel:

作者一共探究了26个数据集,其中16个分类任务和10个多项选择任务。

在实验细节上,作者对于每个instance,展示了16个标注样例。每组设置(26个数据集6个预训练模型2组使用方式)用5个随机数种子跑了5遍。作者在 airseq 13B 和 GPT-3 两个大模型上,出于算力的考虑只做了6个数据集,和3个随机数种子。

由于实验较多,作者一般仅汇报各种均值。

模型没有学习标签

这篇文章的第一个结论是:in-context learning中,模型并没有学习输入和标签之间的对应关系。

通过给in-context的训练样本赋予随机标签,可以构建随机标注的设置。从下图中可以看出,无论是分类任务(上),还是多项选择任务(下),随机标注设置下(红)模型表现均和正确标注(黄)表现相当,且明显超过没有in-context样本的zero-shot 设置(蓝)。

这一点趋势,在改变随机标签的in-context样本比例,以及改变in-context样本数量时,都是保持的。选用人工设计的in-context展示形式(prompt),结论也不发生改变。

下图调整的是改变随机标签的in-context样本比例。

下图左边是Channel MetaICL,右边是 Direct GPT-J,K调的是展示样例的数目。

下图+T表示采用人工设计的in-context展示形式。

模型学习任务形式

这篇文章的第二个结论是:in-context learning中,模型学到(激活)了输入数据、预测标签的分布,以及这种数据+label的语言表达形式。

下图中,青绿色的柱子为用(从外部语料中)随机采样的句子替换输入句子的设置。可以看到,模型表现明显下降。因此,in-context learning中,展示样本和测试样本在语料分布上的一致性比较中央。猜测模型很可能学到了展示样本的语言风格。

下图中,青绿色的柱子为用随机词汇替代展示样本中的标签。可以看到,模型表现明显下降。因此,in-context learning中,展示样本中的标签内容与测试样本的标签内容的一致性是比较重要的。猜测模型很可能从展示样本中学到了标签词汇的分布。

下图中,分别用labels only(深紫)和no labels(深绿)来探索展示模式的差异对模型表现的影响。可以看到,模型相对于上面两图的OOD setting而言,都有了进一步的下降。这可以表明,除了领域内,输入和标签表达方式之外,in-context learning中模型还会学习这种输入输出的语言模式。

总结与讨论

模型有没有学习?

作者认为,传统意义上的学习指模型建模输入样本和输出样本之间的关联(P(y|x)或P(x,y)∝P(x|y))。在这种意义下,in-context learning并没有学习。

然而,模型可以通过展示样例,中的输入、输出、及输入+输出的语言表达风格来提升表现。在一定程度上,这种利用前缀输入激活大模型语言表达建模能力的方式也算是一种学习。

因此,这也表明:

大模型零监督能力远超预期

毕竟,学习表达形式、语言风格与标签形式,不需要标注数据的参与。大模型潜在地就具有了这种(分类)能力。

当然,反过来,也表明了in-context learning的局限在于,它不能真正建模输入和输出之间的关系,因此在一些输入输出之间的关系必然没有被无监督预训练任务所建模的下游任务而言,in-context learning很可能失效。

不过,看起来目前大多数传统NLP的任务都不会满足上述“失效”设定。

额外的一点启示

这篇文章的一作 Sewon Min 近期创作了很多相关主题的高质量工作,包括:

  • Noisy Channel Language Model Prompting for Few-Shot Text Classification ~ https://arxiv.org/pdf/2108.04106.pdf

  • MetaICL: Learning to Learn In Context ~ https://arxiv.org/pdf/2110.15943.pdf

平时有些同学做了很多实验,一到写论文就什么实验结果都想往论文里放。这里还是可以学习一下 Sewon Min。这三篇文章arxiv的时间跨度只有6个月,很多实验甚至是有overlap的,基本可以判断为一作同时在做的几项工作。作者从不同的角度去分割了这些实验,以不同的汇报方式,讲出了三个故事,每个故事看起来都完整且独立,看起来就很棒。

萌屋作者:python

北大毕业的NLP博士。日常写点论文,码点知乎,刷点leetcode。主要关注问答、对话、信息抽取、预训练等方向。力扣国服第一python选手(经常掉下来)。知乎 ID 是 Erutan Lai, leetcode/力扣 ID 是 pku_erutan,欢迎没事常来逛逛。

作品推荐

  1. 恕我直言,你的实验结论可能严重依赖随机数种子!

  2. AllenAI 发布万能问答系统 MACAW!各类题型样样精通,性能大幅超越 GPT-3!

后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

恕我直言,你的模型可能并没看懂 prompt 在说啥相关推荐

  1. 迷失lost结局什么意思_《lost》《迷失》大结局,没看懂的进,详细讲解

    北京时间公园2010年5月24日,lost迷失终于迎来了完美大结局,没看懂的进来,我给你们细细讲解. 作为一个从第一季的第一集就开始追lost迷失的忠实观众,在历经5年多的时间和望穿秋水的等待后,美剧 ...

  2. 新海诚没有参与制作的作品_由新海诚创作,却成为冷门的一部动漫,至今都没看懂...

    原标题:由新海诚创作,却成为冷门的一部动漫,至今都没看懂 由新海诚创作,却成为冷门的一部动漫,至今都没看懂.新海诚我们都很熟悉,他的作品<你的名字><天气之子>等等都给我们留下 ...

  3. 第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜 / 队友玄学出法, 还没看懂)

    第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜 / 队友玄学出法, 还没看懂) 题目来源:第46届icpc 沈阳 J-Luggage Lock 题意: 给出两个四位数的密码锁a和 ...

  4. Linux教程 第十一课 Linux进程管理及作业控制(几本没看懂)

    Linux教程 第十一课 Linux进程管理及作业控制(几本没看懂) ----------------------------------------------------------------- ...

  5. 《寒战》看完整部电影的最大感觉竟然是没看懂

    自己向来是不喜欢唱赞歌的所以,作为警匪片.即便<寒战>现在几乎是一边倒的赞美之声,也不会随声附和,只能写下自己的真实观感.先说好的方面,影片的制作确实非常认真,局面很大,剑拔弩张的气氛坚持 ...

  6. 计算机系学霸表白,各专业学霸的表白方式,第一眼竟没看懂!

    原标题:各专业学霸的表白方式,第一眼竟没看懂! 说到表白,只会说我爱你?I love you?想跟你一起生孩子?噢漏,实在太太太肤了!来看看各专业学霸们是怎么表白的,这些成天忙着征服星辰大海的读书人耍 ...

  7. 可视化理解卷积神经网络 - 反卷积网络 - 没看懂

    参考这篇文章: http://blog.csdn.net/hjimce/article/details/50544370 文章里面有不少很有意思的内容.但是说实话,我没怎么看懂. 本篇博文主要讲解20 ...

  8. 蓝猫三千问计算机病毒防护动画,蓝猫淘气三千问:怀疑小时候的自己,根本没看懂这部硬核科普动画...

    #国漫# 不知道在诸位小伙伴的心目中,最喜欢的一部童年记忆中的动画是哪一部,当然大家可以有很多选择,但是对于笔者来说,自己童年的时候观看的最为特别的一部动画非他莫属<蓝猫淘气三千问>.这是 ...

  9. 99.99%的人没看懂《蜗居》画龙点睛的一笔:马克(转载)

    <蜗居>中那个老外马克是干什么职业的?为什么和宋思明关系那么好,又为什么最后照顾海藻?有人说那是洋雷锋,--只能说明他们根本没有看懂<蜗居>中画龙点睛的一笔. 其实马克的职业应 ...

最新文章

  1. 增加内核的ceph模块的日志打印
  2. 一周一论文(翻译)——[Acta 1996] The Log-Structured Merge-Tree (LSM-Tree)
  3. 前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;
  4. XML Schema基本数据类型及数据限定
  5. Kafka学习之(四)PHP操作Kafka
  6. mysql 表 日志_查看mysql的日志
  7. 测试进阶必备,这5款http接口自动化测试工具真的很香
  8. 1156 Sexy Primes (20 point(s)) PAT 素数
  9. 计算机组成--虚拟存储器
  10. 利用Python画直方图
  11. Kibana查询耗时
  12. 利用二进制位求平均值
  13. win10修改ntp服务器地址,修改win10 ntp服务器地址
  14. 【AI测试】人工智能测试整体介绍
  15. (转)Java学习书籍推荐
  16. Java中如何创建一个文件或者文件夹
  17. 信息安全技术——Many Time Pad攻击实验
  18. 《孙子兵法》【行军第九】
  19. 转-【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
  20. android底部弹出滚轮,Android-PickerView-master

热门文章

  1. HighCharts解析之xAxis——x轴的样式
  2. [转载]MVVM、MVVMLight、MVVMLight Toolkit之我见
  3. 让窗体接受拖放, 并获取拖过来的文件信息 - 回复 海浪问 的问题
  4. C++类中成员变量的初始化总结
  5. Moblin MID开发学习笔记 - application launcher安装过程
  6. 生活中的计算机趣味知识大全,五个有趣的电脑小知识
  7. php 解压dat,电脑微信dat文件怎么打开
  8. python 批量处理文件_python批量处理文件或文件夹
  9. 自带flash的浏览器_解决Flash插件已被屏蔽的问题(谷歌、火狐、IE、Edge)
  10. selenium firefox驱动_Python3+selenium配置常见报错解决方案