文 | python

GPT-3等超大模型的兴起,也带来了 in-context learning (语境学习)的新范式。在语境学习中,模型并不使用梯度下降,根据监督样本调整参数;而是将监督样本的输入输出接起来作为prompt(提示词),引导模型根据测试集的输入生成预测结果。该方法的表现可以大幅超越零监督学习,并为少样本监督学习提供了新的思路。

之前监督学习中的研究经验告诉我们,训练集随机打乱通常对模型表现不会有明显影响。然而,这个结论在 in-context learning 下并不适用。作者发现,prompt中示例的顺序,对 in-context learning 的表现有很大影响,可以让模型表现在state-of-the-art到随机之间波动。这一规律,并不随着模型大小与样本量的多寡而变化。并且,较好的prompt样本的顺序,并没有规律可循。

那我们就无法选出最好的prompt顺序了么?作者表示,一方面,我们可以利用验证集来对prompt的顺序做挑选。然而,这违背了 in-context learning  的少样本学习的初衷。另一方面,作者发现大多数使模型失效的prompt顺序,会让模型预测的标签分布与真实分布有较大偏差。因此,作者根据少量样本,基于预训练语言模型,生成无标签数据。以自动生成的无标注数据作为验证集,以标签分布的熵值作为验证指标,挑选最优prompt顺序。作者提出的方法在11个文本分类上,取得了13%的相对提升。

本文为ACL 2022 outstanding paper, 作者主要来自UCL。

论文题目
Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity

论文链接
https://aclanthology.org/2022.acl-long.556

背景

大规模预训练语言模型的无监督预测:给定训练好的模型,输入测试数据的输入(x),直接通过语言模型预测输出(P(y|x))。如下图所示,其中mannual部分引入少量人工设计。蓝色是需要预测的标签部分。

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

而本文主要探究的,就是in-context learning中,引入的前缀里,标注数据的顺序(即上图的concatenation部分)对模型表现的影响。

prompt顺序很重要

下图展示了在SST-2(左)和subj(右)任务上,不同规模的GPT-2、GPT-3模型(横坐标,0.1B~175B)在不同的的prompt顺序下的表现。作者随机选取了4个监督样本,全排列的话,一共有4!=24种配列方式。每列绘制出了该模型在该任务下,24种prompt顺序的表现均值和error bar。可以看到,在SST-2中,2.7B的模型表现准确率可以在50%~85%的区间内波动。50%只是随机瞎蒙的准确率,85%已经接近监督学习下的最好成绩了。因此,prompt顺序十分重要。

更大模型难以完全避免模型表现随prompt顺序变化的波动。 SST-2任务(上图左)中,貌似随着模型增大,波动变小了很多。但在subj任务中(上图右),即使是175B的GPT-3模型,表现依然会随着prompt的顺序有很大的波动。

更多的展示样本也无法缓解模型表现随prompt顺序变化的波动。 下图展示了4种规模的GPT-2模型,在1~32个展示样本时的波动范围。可以看到,随着展示样本量的增加,模型表现普遍有所提升,但波动范围并没有明显缩小。

优质的展示样本的顺序,也没有什么明显的规律。 如果优质展示样本的顺序存在一定规律,那应该具有一定的可迁移性,即在不同模型下,性能都比较好。然而,这一规律并不存在。不同模型下优质的展示样本之间具有很大差异。下图显示的是不同展示样本顺序在不同模型的表现之间的斯皮尔曼秩相关系数。左图针对展示样本顺序(4!=24个),右图针对展示样本标签顺序(由于2正2负,一共有6种)。可以看出,不管是样本顺序,还是标签顺序,都不具备跨模型迁移能力。因此,优质的展示样本的顺序,也没有什么明显的规律。

但展示样本顺序和模型表现之间的关联就是纯随机的了么?并不是。作者发现,那些使模型表现很差的展示样本顺序,往往会让模型的预测出现很大偏差 ,比如二分类中,把所有样本都预测成其中某一个类别。如下图左所示,准确率51.6%和准确率85.2%的展示顺序,预测结果分布具有明显差异。

不过,简单地对预测结果的判定阈值做校准,虽然可以部分提升模型表现,但依然无法彻底解决模型表现随展示样本顺序之间的随机性问题 。如下图右所示,通过对表现较差的展示顺序的预测结果分布调整,平均准确率有所提升,但标准差反而更大了。

优化筛选Prompt顺序

那我们就拿prompt的顺序没有办法了么?作者表示,一方面,我们可以利用验证集对prompt顺序做挑选。然而,这违背了 in-context learning 的少样本学习的初衷。另一方面,我们可以基于“大多数使模型失效的prompt的顺序,会让模型预测的标签分布与真实分布有较大偏差”这一观察,根据少量样本,生成无标签数据。以自动生成的无标注数据作为验证集,以标签分布的熵值作为验证指标,挑选最优prompt顺序。

第一步是生成用来验证的无标注数据集 。作者简单地以每个prompt的顺序作为前缀,输入到预训练语言模型中,让模型解码出一系列的同分布数据。如下图所示。之所以使用预训练模型生成伪数据集,而非使用真实数据作为验证集,主要是出于少样本学习的考虑。

生成验证用数据集后,下一步就是确定评价指标来评估prompt的展示顺序的优劣 。作者考虑到生成的数据的标签并不准确,所以不使用通常有监督训练的验证集应用方式,而是设计了一种基于熵的无监督评价指标。主要基于大多数使模型失效的prompt的顺序,会让模型预测的标签分布相对较为极端,从而熵值较低的直觉。

作者设计了两种筛选指标,一种指标为全局熵指标(GlobalE)。即给定某种展示样本的顺序后,在生成数据上做预测,统计频率,作为每个类别的预测概率。而预测概率的熵值越大,认为该展示样本质量越高。

另一种指标为局部熵指标(LocalE)。该方法,利用对数据条目的预测概率,计算平均熵值。这一熵值越高,认为该展示样本质量越高。

实验结果

实验结果如下图所示。具体的实验细节在此不再赘述。下表中的Oracle是最优的展示样本顺序下的模型表现。

相对于不挑选prompt展示顺序的方法而言,使用GlobalE和LocalE的方法平均取得了13%与9.6%的提升。这表明,基于熵和无标注数据生成的选取方法是有效的。

在不同的prompt模板下,本文方法是鲁棒的。 换用4种不同的线性化输入样本的模板(下图左),模型表现的提升是稳定且一致的(下图右)。

结语

说实话,最开始看到小轶大人给我这个素材时我是不太愿意写的。主要是看到素材说明里“发现不同的顺序会导致结果不同”,“提出了一种生成更有效prompt的方法,在11个任务上相对提升13%”,感觉只是一篇※上雕花的工作。毕竟输入样本的顺序理论上并没有价值,这篇论文的提升可能只是发现了目前还不完善的一个方法(in context learning)的一个巧合点(展示顺序),并且产生了没有意义的提升。

不过读完后,感觉这篇论文还是有很多可取之处的,不愧是一篇outstanding paper。一方面,作者通过非常完善的实验,揭露出这种随顺序变化的不稳定性普遍存在于多种任务,不随模型规模与标注样本规模而变动。并且,波动范围极大,且不存在规律性。当然,如果只是做到这,这一只算是一份negative report,只是一篇还可以的短文。作者又从变化中寻找不变,发现了不同prompt顺序导致的预测结果标签分布上的规律,据此提出了基于熵的prompt筛选方法,并验证了效果。这就使得这篇工作变得有意思了起来。

这篇文章虽然发现现象并给出解决方案,但却缺乏这一现象背后的语言学理论/直觉上的分析。感觉作为一篇ACL(而非ICLR/IJCAI)的论文而言,是略有些不足的。究竟这些好的顺序,在语言学上有没有共性?这些好的顺序是如何产生的?是否会和预训练语料中的一些语言分布产生关联?为什么有些验证集数据对prompt样本顺序敏感?哪些数据敏感,哪些数据不敏感?敏感与不敏感的数据是否具有某种语言学特点?

除此之外,这篇文章还有一些问题可以继续深究。比如,这种不稳定性只在GPT系列的自回归语言模型中出现么?对于T5、BART一类的语言模型,是否依然存在这种问题?主实验测试集只采用256个样本是否会过少,从而增加不稳定性?如果使用大规模的测试集会观察到什么变化么?前面在SST-2上做的实验,放到所有11个任务上,结果是一致的么?作者提到,基于熵的方法对句对匹配任务的提升相对较低。那对于GPT-3试过的那些非分类任务,比如完形填空之类的,本文发现的规律是否还存在?不探究这些问题,也不会影响到这篇论文的完整性。但这些问题的答案,的确很令人好奇。

最后,还想吐槽一下这篇论文的写作格式。比如camera ready限制的是9页,这篇文章只放了8页,但表1字号很小,令人看着困难。以及像图6里配的字也太小了,看着费劲。后面附录的排版也逼死强迫症。当然,这些有点吹毛求疵了,但对一篇outstanding paper吹毛求疵一点大概也无可厚非吧~同学们如果对于一些写作格式上的建议感兴趣,可以参见本人之前的文章:吐血整理:论文写作中注意这些细节,能显著提升成稿质量,或其后续在github上整理的版本:
https://github.com/MLNLP-World/Paper-Writing-Tips

萌屋作者:python

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

作品推荐

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

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

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

  4. 恕我直言,你的模型可能并没看懂 prompt 在说啥

后台回复关键词【入群

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

ACL‘22杰出论文:Prompt范式有bug!相关推荐

  1. 一文盘点NeurIPS'22杰出论文亮点!英伟达AI大佬一句话总结每篇重点,一并看透今年技术趋势...

    Pine 明敏 发自 凹非寺 量子位 | 公众号 QbitAI 15篇NeurIPS'22杰出论文重磅出炉,具体亮点都是啥? 来来来,大佬已经帮你总结好了! 师从李飞飞,现在在英伟达工作的大佬,用49 ...

  2. NeurIPS'22杰出论文奖:3项研究出自华人团队,AlexNet获时间检验奖

    Pine 发自 凹非寺 量子位 | 公众号 QbitAI 就在今天,NeurIPS 2022杰出论文奖公布了!与它一同公布的还有数据集和测试基准(Datasets & Benchmarks)最 ...

  3. 华人“霸榜”ACL最佳长短论文、杰出论文一作,华为、南理工等获奖

    作者 | 夕颜.一一 出品 | AI科技大本营(ID:rgznai100) 导读:7 月 31 日晚,自然语言处理领域最大顶会 ACL 2019 在佛罗伦萨进行到了第四天(7 月 29 日-8 月 1 ...

  4. 【ACL 2017 七大看点】北大、清华、中科院、复旦5 篇杰出论文

    国际计算语言学协会 (ACL,The Association for Computational Linguistics),是世界上影响力最大.最具活力的国际学术组织之一,其会员遍布世界各地.ACL ...

  5. ACL国际计算机语言协会2019,我校夏睿团队获得自然语言处理国际顶级会议ACL2019杰出论文奖...

    7月29日至31日,在意大利佛罗伦萨召开的第57届国际计算语言学年会(ACL2019)上,来自我校计算机科学与工程学院青年教授夏睿及其博士研究生丁子祥合著的论文"Emotion-Cause ...

  6. ACL 2021 | 腾讯AI Lab、港中文杰出论文:用单语记忆实现高性能NMT

    来源:机器之心本文约3200字,建议阅读7分钟 在 ACL 2021 的一篇杰出论文中,研究者提出了一种基于单语数据的模型,性能却优于使用双语 TM 的「TM-augmented NMT」基线方法. ...

  7. ACL/NAACL‘22 推荐系统论文梳理

    2022推荐系统论文梳理系列 推荐系统相关顶会整理 IJCAI'22 推荐系统论文梳理 ICML/ICLR'22 推荐系统论文梳理 WWW'22 推荐系统论文之序列推荐篇 WWW'22 推荐系统论文之 ...

  8. 伯克利摘得最佳论文,陈丹琦、杨笛一等华人团队获杰出论文,ACL2022奖项公布...

    视学算法报道 编辑:陈萍.杜伟 刚刚,NLP 领域国际顶会 ACL2022 公布获奖论文信息,其中加州大学伯克利分校的增量句法表示研究被评为最佳论文.此外,最佳主题论文.杰出论文也揭晓. ACL 是计 ...

  9. KDD‘22推荐系统论文梳理(24篇研究36篇应用论文)

    2022推荐系统论文梳理系列 推荐系统相关顶会整理 AAAI'22推荐系统论文梳理 IJCAI'22 推荐系统论文梳理 ICML/ICLR'22 推荐系统论文梳理 WWW'22 推荐系统论文之序列推荐 ...

最新文章

  1. 速算C语言程序设计,C语言程序设计课程设计-速算24.doc
  2. MVC模式与三层架构的区别
  3. 不能解决,复选框在request对象获取的信息后显示在用户信息里面为中文的选项名...
  4. Swoole之I/O操作
  5. 淮海工学院计算机宿舍住b几,淮海工学院本部2009-操作系统试卷B
  6. Spring事务管理(三)-PlatformmTransactionManager解析和事务传播方式原理
  7. 修复Sonar中常见的Java安全代码冲突
  8. 一文搞懂物联网Modbus通讯协议
  9. springcloud hystrix概述(一)
  10. 强烈的打击感jinbiguandan
  11. 波兰加密矿企GamerHash计划在韩国建立业务
  12. 作为移动开发者,你应该了解Baas(后端即服务)
  13. 瑞禧分享二维晶体表征介绍及定制SnPSe3晶体;CoBi4Te7 磁性拓扑绝缘体/CuInP2S6晶体;Nb2SiTe4晶体/Sb2TeSe2晶体等
  14. 解读2021年智源 AI 前沿报告:医疗领域最新进展
  15. Awesome-Windows
  16. Windows添加系统桌面常用图标
  17. 【CS基础】计组计网
  18. android 美团下拉菜单,Android仿美团分类下拉菜单实例代码
  19. matlab 时间坐标轴,matlab坐标轴范围
  20. 关于睡眠,你需要了解的3件事

热门文章

  1. 劝学篇翻译软件测试,曾国藩家书劝学篇原文及翻译
  2. Webpower:2016节日营销趋势
  3. 计算机编程基础学习笔记之-1.计算机组成原理
  4. Fluke ADPT连接器给福禄克万用表插上翅膀----交流电压测量
  5. 手机电池老化的表现,电池老化了还能修复吗?
  6. C++面向对象高级开发(侯捷)——堆、栈与内存管理
  7. css 实现跑马灯效果
  8. Laravel 开发 API 时的前置准备
  9. 2019计算机二级公共基础pdf,全国计算机等级考试二级公共基础最新.pdf
  10. 怎么降低虚拟内存的使用率