【论文笔记】Self-Prompted CoT:自发思维链框架


写在前面

  • 文章标题:Self-prompted Chain-of-Thought on Large Language Models for Open-domain Multi-hop Reasoning
  • 论文链接:【1】
  • 代码链接:【2】
  • 仅作个人学习记录用

1. 开放域 | 多跳 | 推理 | 问答

理解文章所提出Self-Prompted CoT框架之前,首先理解相关的关键概念:

1.1 多跳问答(MHQA)

多跳问答(Multi-hop Question Answering, MHQA)是一种针对多模态、多语义层次的问答任务的人工智能技术。在多跳问答中,系统需要通过一系列的跳转来从多个可能的答案中选择一个最合适的答案。多跳问答的主要目的是解决单一模态下无法准确回答某些问题的情况,例如需要结合不同类型的信息和知识来回答问题。传统的多跳问答依靠crowdsourcing知识图谱,过程通常包括以下几个步骤:

  1. 问题表示:将问题表示为一种适合计算机处理的形式,如三元组或图结构。
  2. 知识图谱构建:构建一个包含实体、属性及其关系的知识图谱,以便回答问题。
  3. 信息检索:在知识图谱中进行信息检索,找到与问题相关的信息。
  4. 答案选择:根据检索到的信息,使用一定的策略选择一个最合适的答案。

而现在的多跳问答数据集研究则倾向于采用自动化生成
例如:

1.2 开放域文本问答(ODQA)

开放域问答(Open-domain question answering, ODQA)是指在自然语言处理中,针对一个给定的问题,系统需要从多个数据源中提取信息,并给出一个合理的答案。与传统的机器阅读理解(MRC)不同,开放域文本问答(ODQA)在给定问题的同时,不提供段落或者文档,而是需要在整个大型知识语料库中寻找答案,回答事实性问题。因此,ODQA需要先根据问题检索出相关文档,然后聚焦到段落,再阅读给出答案,最近研究又在候选答案上排序,从而进一步精化答案。此外,针对复合、复杂问题,在检索阅读的过程中,可能需要多跳推理,根据桥接信息去寻找最终答案。目前主流的做法有两种:

  1. 流水线(pipeline):检索、阅读、候选答案排序等各模块独立划分明显,一般各模块需要单独设计、处理
  2. 端到端(seq to seq):各模块融合在整个模型中,统一训练(中间会有特别设计的训练策略),例如使用LLMs进行问答。

1.3 开放域多跳推理(ODMR)

开放域多跳推理(Open-domain multi-step reasoning, ODMR)是指在自然语言处理中,计算机需要理解一个句子或一段话中的多个概念,并将它们联系起来进行推理。这种推理不是简单的基于规则或统计模型的推理,而是需要对语言中的概念进行理解和抽象。

例如问题:“美国第一任总统的妻子是谁?”

这是一个典型的多跳推理问答问题。首先,我们知道乔治·华盛顿是美国第一任总统,然后我们需要找到与美国总统相关的关系,例如“总统的妻子”。然后,我们可以沿着这个关系边找到乔治·华盛顿的妻子,即玛莎·华盛顿。

2. LLM相关

2.1 思维链(Chain-of-Thought Prompting)

可以查看:【学习记录】Prompt Engineering:ICL、CoT 以及更多

2.2 基于LLM生成的模型增强

一些学者在推理过程中指导LLMs为ICL生成演示,如促使LLMs生成可靠的QA对,如自我提示的语境演示。本文的工作致力于将第二条研究路线扩展到ODMR,利用ODMR数据集中的CoT作为语境的演示。与之前的工作相比,本文的工作挖掘了自激励LLMs的潜力,其框架设计更为复杂,可以解决最多的问题。

3. 自发思维链框架(Self-Prompted CoT)

SP-CoT有三个关键阶段:

3.1 基于自我生成的二跳QAs

图1第一阶段促使LLM迭代地生成带有上下文、问题、答案和解释的二跳QA四元组(2-hop QA quadruplets),如上图所示。文章作者设计了一个二跳的常识问答生成流水线,包括以下4个步骤:

Step 1(第一跳段落生成):为了保证常识性知识的全面覆盖,文章作者在Trivia QA统计的基础上,手工设计了29个多样化的主题。对于每个主题,作者要求LLM命名一定数量的关键词。对于每个收集到的关键词 k 1 k_1 k1,作者要求LLM生成一个Wiki风格的段落 p 1 p_1 p1。尽管有一些事实错误,但这些生成的段落包含了足够的事实信息,可以作为QA生成的上下文。

Step 2(第一跳QA生成):考虑到常识性问题的答案很可能是命名实体,作者利用Spacy2和NLTK库抽取 p 1 p_1 p1段中的命名实体作为候选答案。对于每个候选答案 a 1 a_1 a1,作者要求LLM根据段落 p 1 p_1 p1提出一个答案为 a 1 a_1 a1的问题 q 1 q_1 q1。为了保证 q 1 q_1 q1的质量,我们采用了核实过程,即在给定上下文 p 1 p_1 p1的情况下,要求LLM回答生成的问题 q 1 q_1 q1,以检查生成的答案 a 1 ′ a'_1 a1是否与 a 1 a_1 a1一致。一旦生成的QA对通过核实,我们提示LLM为其写一个简短的解释 e 1 e_1 e1。注意,候选答案必须排除关键字 ( a 1 ≠ k 1 ) (a_1\not=k_1) (a1=k1) ,因为第1跳的答案将成为第2跳的关键字 ( k 2 = a 1 , k 2 ≠ k 1 ) (k_2=a_1,k_2\not=k_1) (k2=a1,k2=k1)。除此之外,一个有效的解释必须包含答案 ( a 1 ∈ e 1 ) (a_1∈e_1) (a1e1)

Step 3(第二跳段落生成):在第一跳答案作为关键词用于第二跳段落生成之前,作者使用Spacy过滤掉某些标签为 (QUANTITY, ORDINAL, CARDINAL, PERCENT, MONEY, DATE, TIME) 的答案,这些标签对于Wiki风格的段落生成是不可行的。给定关键字 k 2 k_2 k2,重复 Step 1 中描述的相同提示来生成文章 p 2 p_2 p2

Step 4(第二跳QA生成):在生成的段落 p 2 p_2 p2中提取候选答案,同时在首跳QA中阻塞关键字 k 1 k_1 k1和答案 a 1 a_1 a1(又称 k 2 k_2 k2),以避免循环图。对于每个候选答案 a 2 a_2 a2,作者要求LLM生成一个问题 q 2 q_2 q2,其中包含首跳答案 a 1 a_1 a1,并且可以由候选答案 a 2 a_2 a2回答。作者在 Step 2 中对 q 2 q_2 q2 的质量进行了相同的双重检查,并确保第2跳问题 q 2 q_2 q2包含第1跳答案 a 1 ( a 1 ∈ q 2 ) a_1 (a_1∈q_2) a1(a1q2)进行连接推理。然后重复 Step 2 中相同的提示,生成解释 e 2 e_2 e2

3.2 通过组合实现多跳QAs & 构建ODMR数据集

在这里插入图片描述第二阶段利用连接的二跳QA四元组构造多跳推理链,如上图所示。同时文章作者提出了一种自动构建ODMR数据集的方法,该方法通过2 - 4跳来构建ODMR数据集(用作CoT演示库,SP-CoT会自适应地从ODMR数据集中选择最相关的示例作为CoT演示),包括以下4个步骤:

Step 1(推理链组合):为了连接更多的问题,作者遵循可组合性准则,即两个单跳QA对 ( q 1 , a 1 ) (q_1,a_1) (q1,a1) ( q 2 , a 2 ) (q_2,a_2) (q2,a2)是可组合成为一个多跳问题 Q Q Q的,其中如果 a 1 a_1 a1是一个命名实体,并且它在 q 2 q_2 q2中被提及,则 a 2 a_2 a2作为有效答案。当二跳问答对生成时,这样的标准已经满足,作者使用这个标准来连接更多的问题。采用6个2 - 4跳的推理图构建了6种类型的多跳推理链 (如下图),并确保在每条推理链中:1) 中间问题 q i q_i qi的答案 a i a_i ai会出现,并且会出现在其下一跳问题 q i + 1 q_{i+1} qi+1中,以避免捷径;2) 最后一个问题的答案不会出现在任何中间问题中。

在这里插入图片描述

Step 2(重复控制):通过基于规则的组合,ODMR数据集具有相当相似的推理链,其中有重复的中间问题。为了保证数据集的多样性和简洁性,作者通过一个预设的重复度来过滤推理链,这个重复度是由同一推理类型中同时存在于其他推理链中的问题的数量来定义的。

Step 3(二进制问题生成):MHQA数据集还包括一般疑问句,这些疑问句应该由"是"或"否"来回答,而不是一个命名实体。因此,作者利用LLM将部分推理链的最后一个QA ( q n , a n ) (q_n, a_n) (qn,an) 改造为二进制问题,并手工设计了4个语境演示。对于每种推理类型,作者分别随机抽取10 %的推理链进行正向问题和负向问题的生成。然后,作者将生成的二进制问题和它之前的问题跳一起重新构造一个新的推理链,并将其添加到数据集中。

Step 4(多跳问题生成):现在需要生成多跳问题,以前生成的问题链作为它们的中间推理步骤。对于每一个问题链,将下一跳问题 q i + 1 q_{i+1} qi+1中的一个中间问题 q i q_i qi的答案 a i a_i ai迭代替换为 [ q i ] [q_i] [qi],直到最后一个问题 q n q_n qn替换为止,该问题表示一个关系从句。然后,作者利用LLM将其改造成一个自然的多跳问题,其中包含4个手工设计的语境演示。

3.3 构建自适应上下文演示

本阶段是为了从生成的ODMR数据集中采样多跳问题作为语境演示。

之前的一些工作已经表明,基于聚类的方法受益于演示的多样性。作者采用基于聚类的检索方法对输入问题的语境示例进行自适应采样。首先,通过 Sentence-BERT 编码将所有问题投影到一个高维隐空间。假设需要n个语境演示,给定一个测试问题 Q Q Q,使用 k-means 将问题嵌入聚类成n个簇,并从每个簇中自适应地检索与 Q Q Q余弦相似度最高的问题。

接下来构建推理链,对于每个抽样的例子,依次串联每一跳的解释,以 ‘Step { i }:’ 开头,构建完成推理链。

3.4 整体框架图

在这里插入图片描述
SP - CoT的整体框架,包括ODMR数据集的自动生成,自适应的CoT选择采样器和通过ICL的自适应推理。紫色标示的文本指的是问题,红色标示的是先前生成的CoT,橙色标示的是答案,绿色标示的是新生成的内容。

4. 实验

具体实验不在此叙述。实验结论总结如下:

  1. ICL的性能很大程度上取决于演示采样的质量。而RetrieveInCluster是表现最好的策略,这正是本文实验中采用的策略。提供更多的语境演示则从经验上提高了ICL的性能。
  2. Self-Prompted CoT在明晰性、简明性、可理解性和直观性方面引出了高质量的推理步骤。即Self-Prompted CoT生成的CoT更清晰、简洁且全面,中间答案的回忆正确率达到了50%。
  3. Self-Prompted CoT被证明是普遍有效的,它显著地提高了所有四种LLM在所有四个基准上的性能。通过Self-Prompted CoT,不管引发高质量的中间推理步骤,小规模(13B)的LLMs的性能都可以提升到与直接提示10倍大的LLMs相当的水平。

限制如下:

  1. Self-Prompted CoT利用了LLMs强大的指令跟踪能力。这种能力对于小规模的LLMs(7B/13B)很容易通过指令微调获得。然而,早期提出的一些LLMs在发布之前由于缺乏相应的训练,可能表现出较差的跟随人类指令的能力。因此,Self-Prompted CoT可能无法提升此类LLM的性能。
  2. 考虑到LLMs可能产生不精确的信息,Self-Prompted CoT产生数据集的过程也可能导致不精确的QA对的出现以及错误的解释。尽管加入了双重检查机制以确保数据完整性,但不可避免地存在一定的错误和不准确之处。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值