In Context Learning 详解#(转载)
大型语言模型(LM)能够通过对几个输入标签对进行条件调节,并对新的输入进行预测,仅通过推理就可以进行明文学习来执行新的任务。然而,对于模型是如何学习的,以及演示的哪些方面有助于最终任务的性能,人们知之甚少。在这篇论文中表明,事实上,不需要在演示中随机替换标签,这几乎不会影响一系列分类和多choce任务的性能,在包括GPT-3在内的12个不同模型中始终如此。相反发现演示的其他方面是最终任务性能的关键
背景知识
In context learning 提出在 GPT-3 之后,那么什么是In Context Learning呢?我们这里来给大家详细的讲解一下:"in context learning"(上下文学习)是指在特定上下文环境中学习的机器学习方法。它考虑到文本、语音、图像、视频等数据的上下文环境,以及数据之间的关系和上下文信息的影响。在这种方法中,学习算法会利用上下文信息来提高预测和分类的准确性和有效性。例如,在自然语言处理中,上下文学习可以帮助机器学习算法更好地理解一个句子中的词语含义和关系。在计算机视觉中,它可以帮助机器学习算法更好地识别图像中不同物体之间的关系。
好的,那么针对于语言模型来讲,是什么意思呢?实际上是在模型预测的时候,加入足够多的背景知识,或者任务描述,然后来进行预测即可。不是很懂?我们来举个例子:
1. Few shot(示例出现多个)):6+7=13,6+6=12,5+5=10,8+9=?
2. One shot(示例出现一个)): 5+5=10,8+9=?
3. Zero shot(示例没有出现)): 8+9=?
这个就是简单的in context learning 示例,我们可以看到,在模型预测的时候,分别给出了不同数目的示例来进行预测。我们需要注意的是,这一步骤是没有任何学习的,并没有梯度回传,你可以把它理解成为一个非常详细的prompt,让模型学习到内在的逻辑,进而进行预测。
那么回到本文的主题,ICL (In Context Learning) 为什么就会起到作用呢?为什么加了这种,让模型就能自发的学习到任务呢?我们从论文:Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? 展开讲解。
背景介绍
大型语言模型(LM)能够通过对几个输入标签对进行条件调节,并对新的输入进行预测,仅通过推理就可以进行明文学习来执行新的任务。然而,对于模型是如何学习的,以及演示的哪些方面有助于最终任务的性能,人们知之甚少。在这篇论文中表明,事实上,不需要在演示中随机替换标签,这几乎不会影响一系列分类和多choce任务的性能,在包括GPT-3在内的12个不同模型中始终如此。相反发现演示的其他方面是最终任务性能的关键驱动因素,包括它们提供了以下几个例子:
(1)标签空间
(2)输入文本的分布
(3)序列的整体格式。
总之,论文的分析提供了一种新的方式来理解上下文学习是如何以及为什么工作的,同时也提出了关于可以学习多少的新问题通过单独的推理从大型语言模型中提取。
实验设置
由于这个论文并非提出idea解决问题的那种论文,所以我们直接从实验部分看起即可。实验部分首先列举了使用了的language model,总共是六个,其中包含了gpt-3大模型,其参数为175B,是非常庞大的语言模型。
测试数据集
论文在26个数据集上进行了评估,包括情感分析、释义检测、自然语言推理、仇恨言论检测、问答和句子完成等任务。所有的数据集都是分类和多项选择任务。论文之所以使用这些数据集,是因为它们
(1)是真正的低资源数据集,训练样本少于10K个;
(2)包括GLUE 和SuperGLUE 的经典基准测试;
(3)涵盖了科学、社交媒体、金融等各种领域。
标签数据
在我们进行ICL的过程当中,势必需要标签的输入,那么论文为了考察标签的重要程度,分成了三种不同的标签数据:
(1) 无标签:没有任何的标签,直接输入输出即可。
(2) 正确标签。
(4)随机标签:把标签和数据打乱。
那么各种标签数据的结果如何呢?论文中给出了详细的结果,见下图。
其中蓝色列是无标签,正确标签是橘红色,随机标签是红色。看结果会分析出一个很有意思的观点,那就是红色的部分比橘红色的,没有低多少,也就意味着即使label是随机打乱的,对于结果的影响也很小,这点是为什么呢?
论文中的解释是:这强烈表明,模型能够恢复任务的预期输入-标签对应关系;然而,这并不是直接从演示中的配对中获得的。船长的理解是这样,因为这部分ICL并不是有梯度更新的,所以让模型理解一个标签的含义不太切合实际,但是呢,这点确可以让模型知道,标签的大概范围,例如有多少种之类的。
消融实验
本部分论文有很多篇幅在讲这个部分,感兴趣可以看原文来了解一下。
讨论&&结论
模型在推理的时候,是否正在学习呢?
如果采用学习的严格定义:根据训练数据捕捉输入-标签对应关系,则我们的发现表明,LM在测试时不会学习新任务,这点在随机的label种有所体现。我们的分析表明,模型可能会忽略演示定义的任务,而是使用来自预训练的先验知识。然而,学习新任务可以更广泛地解释:它可能包括适应特定的输入和标签分布以及演示所建议的格式,并最终更准确地进行预测。按照这个学习的定义,模型通过演示学习了任务。实验表明,模型确实利用了演示的方面,并取得了性能提升。
LM的容量
模型在不依赖演示中的输入-标签对应关系的情况下执行下游任务。这表明模型仅通过语言建模目标学习了(隐含的)输入-标签对应关系,例如将积极评价与词“积极”相关联。
一方面,这表明语言建模目标产生了极强的zero-shot容量,即使从朴素的零样本准确性并不总是明显。另一方面,这表明上下文学习可能无法解决其输入-标签对应关系尚未包含在LM中的任务。这引出了一个研究问题:如何在上下文学习无法解决的NLP问题上取得进展:无论是需要更好的方法来提取LM中已存储的输入-标签映射,还是需要更好的LM目标变体来学习更广泛的任务语义,或者通过有标签数据的微调来提供显式监督。
Zero-Shot显著提高效果
一个关键发现是,在不使用任何标记数据的情况下,通过将每个未标记的输入与随机标签配对并将其用作演示,几乎可以达到k-shot性能。这意味着零样本基准水平比以前预想的要高得多。未来的工作可以通过放宽对未标记训练数据的假设来进一步提高零样本性能。
对于这篇论文来说,船长认为有很多可以学习的地方,他指出了几个比较好的研究方向,例如如何提升LM的Zero Shot性能等等,对我们理解什么是ICL也有很大的帮助。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)