大模型实战篇:框架,万万想不到还能这样推理

前面我们分享了BasicReflection这种偏重反思的AIAgent设计模式,在面对复杂的问题时,就需要更强大的Self-discover设计模式来进行。这篇文章,作者的分享一定不能错过。

在上篇文章中,风叔结合原理和具体源代码,详细介绍了第一种偏重反思的AIAgent设计模式,即BasicReflection。

BasicReflection的思路非常朴素,使用成本较低,但是在实际应用中,BasicReflection面对一些比较复杂的问题时,需要Generator具备更强大的推理能力。

在这篇文章中,沿着“更强大的推理能力”这条优化路线,风叔将介绍Self-discover设计模式。这个设计模式非常有意思,相信看到最后,大家会发现令人惊奇的结果。

一、SelfDiscover的概念

Self-Discover是由Google的研究人员提出的一种AIAgent框架,可实现自动发现和构建推理结构,以解决各种推理任务。这种方法的核心是一个自发现过程,大模型实战篇:框架,万万想不到还能这样推理它允许大型语言模型在没有明确标签的情况下,自主地从多个原子推理模块(如批判性思维和逐步思考)中选择,并将其组合成一个推理结构。

Self-Discover框架包含两个主要阶段,自发现特定任务的推理结构、应用推理结构解决问题。如下图所示:

阶段一:自发现特定任务的推理结构

主要包含三个主要动作:选择(SELECT)、适应(ADAPT)和实施(IMPLEMENT)。

选择

:在这个阶段,模型从一组原子推理模块(例如“批判性思维”和“逐步思考”)中选择对于解决特定任务有用的模块。模型通过一个元提示来引导选择过程,这个元提示结合了任务示例和原子模块描述。选择过程的目标是确定哪些推理模块对于解决任务是有助的。

适应

:一旦选定了相关的推理模块,下一步是调整这些模块的描述使其更适合当前任务。这个过程将一般性的推理模块描述,转化为更具体的任务相关描述。例如对于算术问题,“分解问题”的模块可能被调整为“按顺序计算每个算术操作”。同样,这个过程使用元提示和模型来生成适应任务的推理模块描述。

实施

:在适应了推理模块之后,Self-Discover框架将这些适应后的推理模块描述转化为一个结构化的可执行计划。这个计划以键值对的形式呈现,类似于JSON,以便于模型理解和执行。这个过程不仅包括元提示,还包括一个人类编写的推理结构示例,帮助模型更好地将自然语言转化为结构化的推理计划。

阶段二:应用推理结构

完成阶段一之后,模型将拥有一个专门为当前任务定制的推理结构。在解决问题的实例时,模型只需遵循这个结构,逐步填充JSON中的值,直到得出最终答案。

二、SelfDiscover的实现过程

下面,风叔通过实际的源码,详细介绍SelfDiscover模式的实现方法,具体的源代码地址可以在文章结尾处获取。

第一步定义Select、Adapt和Implement

第一步要做的事情,是前面所讲的阶段一,定义好select、adapt和implement这三个过程。

首先,定义select。给Select的prompt是,“对于给定的任务,找出最相关的reasoningmodule,即确定通过什么方法来解决任务”

然后,定义adapt。给Adapt的prompt是,“在不需要给出完整解决方案的情况下,让大模型调整上一步得到的reasoningmodule,以更好地适应任务。”

接下来,定义implement。给Implement的prompt是,“在不需要给出完整解决方案的情况下,利用上一步得到的优化后的reasoningmodule,创建一个可执行的推理结构。”

第二步执行推理结构

第二步要做的事情,就是前面所讲的阶段二,应用这个推理结构获得最终答案

第三步提出问题,开始推理

第三步就是将这个过程进行推理实现,如下面的代码所示,这一步非常关键,大家可以逐条仔细看:

这段代码非常简单。首先,我们提出了39种reasoningmodules,即推理的具体方法,大家也可以自己提炼出一些推理方法,通过prompt告知给Agent。

然后,我们提出一个具体的推理任务:

“Lisa有10个苹果。她给了朋友3个苹果,然后从商店买了5个苹果。Lisa现在有多少个苹果?“

然后大模型会自动选出最合适的推理方法。实践中发现,大模型选择了方法9和10。

第1阶段选择:选定模块:

9.我如何将这个问题分解成更小、更易于管理的部分?这个问题可以分解成两个部分:首先,计算Lisa在送出一些苹果后有多少个苹果,其次,计算她购买更多苹果后有多少个苹果。这种方法简化了问题并使其更容易解决。

此外,10.批判性思维:这种风格涉及从不同角度分析问题、质疑假设以及评估可用的证据或信息。它侧重于逻辑推理、基于证据的决策以及识别思维中的潜在偏见或缺陷。批判性思维在解决问题中始终很重要,因为它有助于确保解决方案基于合理的推理和证据。在这种情况下,它可以帮助确认问题被正确解释并且解决方案合乎逻辑且准确。

因此,9和10都是此问题的相关推理模块。

接下来,针对目标任务,大模型自动优化推理方法的描述。

第1阶段适应:改编模块:

1.分解问题:问题可以分解为两个较小的任务:

a)计算Lisa送给朋友3个苹果后还有多少个苹果。

b)计算Lisa从商店购买5个苹果后还有多少个苹果。

通过将问题分解为这些较小的任务,解决问题会变得更容易。

2.

批判性思维:运用批判性思维确保问题得到正确解释,解决方案合乎逻辑且准确。这包括:

a)确认问题得到正确理解(Lisa从10个苹果开始,赠送3个,然后购买5个)。

b)确保正确遵循操作顺序(在添加购买的苹果之前减去赠送的苹果)。

c)仔细检查计算以确保准确性。

通过运用批判性思维,您可以确信解决方案基于合理的推理和证据。

然后,大模型自动给出了具体的推理结构。

第1阶段实施:推理结构:

1.分解问题:

a)计算Lisa送给朋友3个苹果后还剩下多少个苹果:

-Lisa一开始有10个苹果

-她送出了3个苹果

-从最初的苹果数量中减去送出的苹果数量

b)计算Lisa从商店购买5个苹果后还剩下多少个苹果:

-送出3个苹果后,Lisa还剩下一定数量的苹果(来自任务a)

-然后她又买了5个苹果

-将购买的苹果数量加到剩余的苹果数量中

批判性思维:

a)确认问题理解正确:

-她又买了5个苹果

b)确保操作顺序正确:

-首先,减去送出的苹果

-然后,加上苹果购买

c)仔细检查计算结果:

-确认减去的苹果数量正确

-确认添加了的苹果数量正确

通过遵循此推理结构,您可以通过将问题分解为较小的任务、运用批判性思维和仔细检查计算结果来解决问题。最终答案应准确且基于合理的推理。

最后,执行推理结构,得出最终结果

最终答案:Lisa现在有12个苹果。

至此,SelfDiscover的原理和流程就介绍完了。

风叔在尝试这个case之前,完全没想到大模型还能在给定的推理方法中,自主选择最合适特定的问题的推理方法,并完成推理结构和推理语言的输出,这项能力确实是让风叔眼前一亮。通过这种推理方式,未来Agent就能解决更加多样化的问题,因为任何类型的问题,总能有其对应的推理和思考方式。

总结

整个Self-Discover的关键在于,它允许模型在没有人类干预的情况下,自主地生成适合特定任务的推理结构。这样不仅提高了模型的推理能力,而且提高了推理过程的可解释性。通过这种方式,模型能够更有效地处理复杂和多样化的任务。

本篇文章提到的例子,虽然结构很清晰,但不足之处在于没有使用Tools。对于需要使用搜索工具、数学工具等外部工具的场景,我们也可以让大模型在adapt环节给出适合解决目标任务的外部工具,然后在后续过程中执行。

在下一篇文章中,风叔将介绍另一种优化BasicReflection的方式,增加强化学习,Reflexion。

题图来自Unsplash,基于CC0协议。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

允霆科技

允霆科技网是一家以科技创新为核心,为客户提供各类科技新闻、科技资讯、科技产品评测、科技解决方案等科技行业服务的高科技企业。

最近发表