AI 文摘

值得一看的大模型RetICL检索式Fewshot上下文示例选择思路:兼看20230309大模型进展早报





作者: 老刘说NLP 来源: 老刘说NLP

今天是2024年3月9日,星期六,北京,天气晴。

我们先来看看20230309大模型进展早报,主要还是涉及到一些嵌入和数据方面的事情。

另一个是再来看看关于ICL(incontext learning)的工作,这个在大当前prompt工程中占据着十分重要的地位,社区也有在讲

我们再来讲讲ICL与RAG的结合,并介绍《In-context Learning with Retrieved Demonstrations for Language Models: A Survey》(https://arxiv.org/abs/2401.11624)这一工作,这个其实也算是ICL与RAG的一个很好的结合思想,其中有很多重合的点。

供大家一起参考并思考。

一、大模型ICL的选择性工作回顾

关于ICL(incontext learning)的工作,这个在大当前prompt工程中占据着十分重要的地位,这里的in context我们可以理解成示例,关于这一点,我们已经在前面多个文章加以了论述。

《再看大模型ICL推理范式中的prompt策略:从动态Few-shot到KNN选择再到Shuffling Ensemble》(https://mp.weixin.qq.com/s/qXfeLfByZ8IVLgqo754U-Q)

《再看面向NLP任务的大模型Prompt设计:PromptSource等代表性NLP开源Prompt数据集》(https://mp.weixin.qq.com/s/eWEjVhXfySppOQk_y6mduw)中说到,prompt是影响下游任务的关键所在,当我们在应用chatgpt进行nlp任务落地时,如何选择合适的prompt,对于SFT以及推理环节尤为重要。

《如何快速地设计并评估few shot示例的效果:OpenICL上下文示例学习框架推荐及实现源码》(https://mp.weixin.qq.com/s/D2Fbhs13IhpsLyCJoWSwGA)介绍了opencompass中预置的几个典型方法:基于BM25的检索方式、基于KNN的检索方式、随机采样方式等,当然也有zeroshot方式,即不带任何先验样本。

《大模型Fewshot推理如何选择更好的示例:兼顾多样性与相似性的迭代示例选择策略方案》(https://mp.weixin.qq.com/s/GWmti3EUBt2l2tbJALk8mQ)中介绍了迭代示例选择(IDS)的方案,IDS利用Zero-shot-CoT,迭代选择多样化但仍与测试样本密切相关的示例作为ICL示例。

实际上,大模型,已经展示了作为少样本上下文学习(ICL)的非凡能力,擅长在输入上下文中仅进行一些示例即可适应新任务,小样本上下文学习(ICL)是大模型(LLM)在实际任务输入的同时给出新任务的一些输入输出示例或示例时执行新任务的能力。重要的是,模型参数不必针对新任务进行微调。然而,该模型执行ICL的能力对选择少量示例很敏感。

而最近的一个趋势是,不是使用一组固定的示例,而是检索为每个输入查询量身定制的示例,示例检索的实施相对简单,利用现有的数据库和检索系统。这不仅提高了学习过程的效率和可扩展性,而且已被证明可以减少手动示例选择中固有的偏差

因此,最近的工作《In-context Learning with Retrieved Demonstrations for Language Models: A Survey》(https://arxiv.org/abs/2401.11624)进行了综述,讨论并比较了检索模型、检索训练程序和推理算法的不同设计选择,我们可以看看。

一、关于基于检索的上下文示例选择RetICL

基于检索的ICL(RetICL)在优化语言模型性能方面实现了范式转变,超越了静态的预定义示例集合,转向了动态的、上下文相关的方法。这项创新的核心是自适应示例选择的概念,其中专门的检索器为每个特定任务输入智能地策划量身定制的示例。

这种方法不仅始终胜过依赖随机或静态手工制作示例的方法,而且还表现出对各种影响因素的显着弹性。

RetICL的效果取决于其选择的示例的“相关性”和“有用性”,这一过程受到多种因素的复杂影响。这些包括检索器的性质(从一般的现成模型到微调的、特定于领域的变体)、检索语料库的来源和多样性、检索器的目标(侧重于相似性或多样性)以及整合多个示例的策略。

先说一个有趣的结论:许多研究表明,类似的示例比随机的示例要好,但仍然不知道为什么类似的示例是有帮助的,有的工作发现,与分类任务相比,生成任务更有益,一个可能的原因是检索到的示例可能与输入问题有相似的答案,而模型可能只是复制答案。然而,这样的解释并不能说明为什么在分类任务中检索到的示例比随机示例更好。 有一些假设认为,类似的示例有助于在LLM中定位知识,或者基于LLM进行隐式梯度下降的假设,然后类似的示例为输入查询提供了更有用的训练信号。

我们下面来看看一些有趣的点:

1、什么是好的示例?

LLM在小样本示例的选择、格式和顺序上的脆弱性,因此,可以归结为以下几种:

1)示例数量

大模型通常受益于更多的示例,但随着示例数量的增加,改进率通常会降低。与分类任务相比,生成任务已被证明从更多的示例中受益。为了增加示例的数量,一个挑战是LLM的最大上下文大小。虽然随着时间推移,LLM的上下文大小一直在增加,但对于具有长输入文本的数据集或具有许多类的分类数据集来说,它可能仍然存在问题。

2)示例格式

提示的格式和措辞可以在LLM的表现中发挥至关重要的作用。例如,简单地在提示中添加Let’s think step by step 可以使LLM一步一步地推理并解决更多的问题。又如,在提示中添加根据维基百科使它们更符合事实;除了文本格式外,示例中标签空间和输入文本的分布也非常重要。

3)示例顺序

示例顺序已被证明对模型性能有重大影响。例如,在某些任务上,模型性能可以从近乎随机到sota,具体取决于提示的顺序,也有的认为,提示末尾出现的答案更有可能被模型预测。

4)示例的多样性

小样本学习成功的另一个重要因素是示例的多样性。例如,Diverse Prompting,对于示例问题,LLM用于生成解决问题的不同方法,然后在提示中使用这些方法;也有建议选择一组不同的问题作为小样本示例。也有提出一个选择示例的公平性指标以鼓励选择不同的小样本示例,这些示例为无语义输入产生近乎均匀的预测分布。

2、如何进行检索?

我们先看看基于检索的ICL(RetICL)的一些定义,首先用检索到的示例来定义ICL。形式上,给定一个查询q∗和一个检索语料库C,示例检索器DR选择一组示例{d1,…,dk}∼C,其中每个示例是di=(qi,ai)。 这样一来,LLM输入序列变为(d1,…,dk,q∗),检索器的目标是选择能够最大限度地提高正确答案a∗概率的示例。

其次,我们来看看其检索目标,选择示例有两个主要检索目标,即相似性和多样性。 相似性涉及选择与查询最相似的示例,可以基于语言相似性(术语匹配或语义匹配)、结构方面(句子结构、推理结构等)或其他标准。

多样性包括避免重复示例、带来不同的观点以及最大限度地扩大示例对测试查询的覆盖率,包括涵盖其单词或句法结构。

但是,在这个方面,衡量多个示例的多样性比较具有挑战性,使用基于相似性的检索器可以提高特定数学推理任务的性能,这可能表明,将相似性和复杂性考虑结合起来可能是增强推理任务方法的一种有前途的策略。

接着,来看看一些检索策略,使用检索器收集k示例的各种策略,可以分为三种不同的方法。

1)One-hoc Retrieval。 这是最基本的检索策略。为了获得k个示例,给定一个查询,检索器会根据一些评分标准对示例进行排名,然后选择前k个示例。因此,每个示例都是独立于其他示例选择的。这种方法简单明了且快速,但这种方法可能不会产生k示例的最佳组合,因为这些示例可能是同质的。

2)Clustering Retrieval聚类检索 为了缓解One-hoc检索中的同质性问题,聚类检索方法将所有示例分为k个子组,旨在将类似的示例组合在一起。然后,给定一个查询,检索器从每个子组中选择最相似的示例,从而产生最终的k个示例集。聚类的核心原则是选择各种示例。

3)Iterative Retrieval迭代检索 与检索策略独立获取每个示例不同,在迭代检索中,检索器会根据查询和以前检索到的示例来选择示例,此过程从单个查询开始,检索器会为该查询找到一个最佳示例。 然后对查询进行扩充(例如,与示例相结合)以检索下一个示例,此步骤迭代执行k次以收集k个示例,总体思路是选择可以相互补充的示例。

最后,我们来看看一些常用的检索方案。

比较显而易见的是基于关键词的相似性BM25,其同时考虑了关键词频率和文档长度,但由于它完全依赖于术语频率和文档长度,这种方法可能会忽略语义和句子结构等关键方面,在某些情况下可能导致不准确,此外,BM25缺乏在下游任务中进行微调的能力,与可以针对特定下游任务进行微调和定制的神经模型相比,不太具备竞争力。

另一个是句子嵌入相似性 ,在这种方法中,使用现成的句子嵌入模型将查询和文档编码到相同的密集嵌入空间,然后计算相似性分数(例如余弦相似度)以对每个查询最相关的文档进行排名,例如Sentence-BERT(SBERT)。

此外,还有一些基于微调方式的检索。

3、后期的一些发展方向?

从原始文本中检索示例许多研究都假设有带标注的样本可以用作检索语料库。然而,当面对一项新任务时,通常不存在这样的训练数据集。虽然目前又一些方案是从维基百科等开放式语料库创建伪示例,但所提出的方法仅限于分类任务。

因此,目前关于数据合成就逐步受到关注,例如,假设一组可用的未标记查询(没有真值标签),并使用LLM生成思维链和答案,然后应用自洽性来选择高质量的示例以形成伪示例池, 将这种方法与示例检索器相结合可能会带来更好的性能。

总结

本文主要围绕ICL这一工作进行了介绍,其中所涉及到的一些方法,以及一些定性的实验结论都值得看看。

参考文献

1、https://arxiv.org/abs/2401.11624

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具