累积推理技术提升准确率

累积,推理,技术,提升,准确率 · 浏览次数 : 3

小编点评

**摘要** 本文介绍了一种名为累积推理(Cumulative Reasoning,CR)的新方法,它可以提高大模型的推理准确率。CR方法基于累积地判断对错,使其能够从链状和树状的推理中获得更高效的解决方案。 **主要内容** * 従来的大模型推理基于思维链(CoT)、思维树(ToT)等技术,但面对“要拐好几个弯”的问题,还是容易出错。 * CR方法加入了一个“验证者”,及时判断对错,由此模型的思考框架也从链状和树状,变成了更复杂的“有向无环图”。 * CR方法通过3个大语言模型进行验证,每个模型在不同的推理问题上都取得了很高的准确率。 * CR方法可以将题目分步骤拆解成能较好完成的子问题,自问自答,直到产生答案。 **结论** CR方法是一种可以显著提高大模型推理准确率的方法。它比传统的思维链/树方法更有效,能够从链状和树状的推理中获得更高效的解决方案。

正文

转载:图灵奖得主姚期智领衔提出大模型「思维」框架!逻辑推理正确率达98%,思考方式更像人类了

前言

近日我国图灵奖得主姚期智院士团队发表首篇大语言模型论文,主要解决“让大模型像人一样思考”的问题,不仅要让大模型一步步推理,还要让它们学会“步步为营”,记住推理中间的所有正确过程。具体来说,这篇新论文提出了一种叫做累积推理(Cumulative Reasoning,CR)的新方法,显著提高了大模型搞复杂推理的能力。

论文:https://arxiv.org/pdf/2308.04371.pdf

image-20231013092537919

之前大模型的推理基于思维链(CoT)、思维树(ToT)等技术,但面对“要拐好几个弯”的问题,还是容易出错,累积推理正是在此基础上,加入了一个“验证者”,及时判断对错,由此模型的思考框架也从链状和树状,变成了更复杂的“有向无环图”。

结果是在代数和几何数论等数学难题上,大模型的相对准确率提升了42%;玩24点,成功率更是飙升到98%

突破思维链/树的瓶颈

累积推理的核心,在于改进了大模型思维过程的“形状”。

具体来说,这个方法用到了3个大语言模型

  • 提议者 (Proposer):不断提出新命题,即基于当前思维上下文,建议下一步是什么。
  • 验证者 (Verifier):核查提议者的命题准确性,如果正确就将它添加到思维上下文中。
  • 报告者 (Reporter):判断是否已经能得到最终解决方案,来确定是否结束推理过程。

推理过程中,“提议者”先给出提案,“验证者”负责评估,“报告者”决定是否要敲定答案、终止思考过程。

有点像是团队项目里的三类角色:小组成员先头脑风暴出各种idea,指导老师“把关”看哪个idea可行,组长决策什么时候完成项目。

image-20231013093401799

所以,这种方法究竟是怎么改变大模型思维“形状”的?

  • 思维链(Chain of Thought,CoT)

在2022年1月由OpenAI科学家Jason Wei等人提出,核心在于给数据集中的输入加一段“逐步推理”文字,激发出大模型的思考能力。

可以看作是在训练时,在准备的问答对中,回答加入了“逐步推理”,且最后推理结果也给出了“逐步推理”。

图片

  • 思维链Plus版(CoT-SC)

基于思维链原理,谷歌也快速跟进了一个“思维链PLUS版”,即CoT-SC,主要是进行多次思维链过程,并对答案进行多数投票(majority vote)选出最佳答案,进一步提升推理准确率。

存在问题:题目不止有一种解法,人类做题更是如此。

  • 思维树(Tree of Thought,ToT)

这是树状检索方案,允许模型尝试多种不同的推理思路,并自我评估、选择下一步行动方案,必要时也可以回溯选择。

图片

从方法中可以看出,思维树比思维链更进一步,让大模型思维“更活跃”了。这也是为什么玩24点时,思维链加成的GPT-4成功率只有4%,但思维树成功率却飙升到74%

共同局限:它们都没有设置思维过程中间结果的储存位置。

本文中的累计推理技术就认为,大模型的整体思维过程不一定是链或树,还可以是一个有向无环图(DAG)

image-20231013094429171

这也就意味着,可以将所有历史上正确的推理结果存储于内存中,以便在当前搜索分支中探索。(相比之下,思维树并不会存储来自其它分支的信息)。但累积推理也能和思维链无缝切换——只要将“验证者”去掉,就是一个标准的思维链模式。

基于这种方法设计的累积推理,在各种方法上都取得了不错的效果。

测试结果

研究人员选择了FOLIO wiki和AutoTNLI、24点游戏、MATH数据集,来对累积推理进行“测试”。

提议者、验证者、报告者在每次实验中使用相同的大语言模型(如GPT-3.5-turbo、GPT-4、LLaMA-13B、LLaMA-65B等),用不同的prompt来设定角色。

值得一提的是,理想情况下应该使用相关推导任务数据专门预训练模型、“验证者”也应加入正规的数学证明器、命题逻辑求解器模块等。

  • 逻辑推理能力

FOLIO是一阶逻辑推理数据集,问题的标签可以是“true”、“False”、“Unknown”;AutoTNLI是高阶逻辑推理数据集。

在FOLIO wiki数据集上,与直接输出结果(Direct)、思维链(CoT)、进阶版思维链(CoT-SC)方法相比,累积推理(CR)表现总是最优。

在删除数据集中有问题的实例(比如答案不正确)后,使用CR方法的GPT-4推理准确率达到了98.04%,并且有最小1.96%的错误率。

image-20231013095003021

再来看AutoTNLI数据集上的表现:与CoT方法相比,CR显著提高了LLaMA-13B、LLaMA-65B的性能;在LLaMA-65B模型上,CR相较于CoT的改进达到了9.3%。

image-20231013095132727

  • 玩24点游戏能力

ToT最初论文中用到的是24点游戏,所以这里研究人员就用此数据集来做CR和ToT的比较,ToT使用固定宽度和深度的搜索树,CR允许大模型自主确定搜索深度。

研究人员在实验中发现,在24点的上下文中,CR算法和ToT算法非常相似。不同点在于,CR中算法每次迭代最多产生一个新的状态,而ToT在每次迭代中会产生许多候选状态,并过滤、保留一部分状态。

通俗来讲,ToT没有上面提到的CR有的“验证者”,不能判断状态(a、b、c)正误,因此ToT比CR会探索更多无效状态。

image-20231013095416085

最终CR方法的正确率甚至能达到98%(ToT为74%),且平均访问状态数量要比ToT少很多,也就是说CR不仅有更高的搜索正确率,也有更高的搜索效率。

image-20231013095529747

  • 数学能力

MATH数据集包含了大量数学推理题目,包含代数、几何、数论等,题目难度分为五级。

用CR方法,模型可以将题目分步骤拆解成能较好完成的子问题,自问自答,直到产生答案。

实验结果表明,CR在两种不同的实验设定下,正确率均超出当前已有方法,总体正确率可达58%,并在Level 5的难题中实现了42%的相对准确率提升,拿下了GPT-4模型下的新SOTA。

image-20231013095735229

与累积推理技术提升准确率相似的内容:

累积推理技术提升准确率

转载:图灵奖得主姚期智领衔提出大模型「思维」框架!逻辑推理正确率达98%,思考方式更像人类了 前言 近日我国图灵奖得主姚期智院士团队发表首篇大语言模型论文,主要解决“让大模型像人一样思考”的问题,不仅要让大模型一步步推理,还要让它们学会“步步为营”,记住推理中间的所有正确过程。具体来说,这篇新论文提

2023-9-21 闲话

鲜花还是在博客园写吧。 感觉挺累的,想病个两三天回家睡觉。 推歌:竹ノ花 原曲之一是《东方求闻史记》的附赠曲,同样改编了本曲的二创还有《现梦 -genmu-》 都是挺让人伤感的歌曲呢,这首歌是凋叶棕为同名本子做的曲,讲的是稗田三代家主与男主的故事。 稗田家的家主 30 岁必死,然后转生,然后还有一堆

【算法】用c#实现计算方法中的经典降幂优化策略,减少计算复杂度

对于给定的数组[x1,x2,x3,…,xn],计算幂的累积:x1^(x2^(x3^(…^xn))的最后一位(十进制)数字。 例如,对于数组[3,4,2],您的代码应该返回1,因为3^(4^2)=3^16=43046721。 结果的增长得快得令人难以置信。例如,9^(9^9)有超过3.69亿个数字。你

kubelet gc 源码分析

代码 kubernetes 1.26.15 问题 混部机子批量节点NotReady(十几个,丫的重大故障),报错为: 意思就是 rpc 超了,节点下有太多 PodSandBox,crictl ps -a 一看有1400多个。。。大量exited的容器没有被删掉,累积起来超过了rpc限制。 PodSa

使用shell进行简单分析增量更新时间的方法

使用shell进行简单分析增量更新时间的方法 思路 产品里面更新增量时耗时较久, 想着能够简单分析下哪些补丁更新时间久 哪些相同前缀的补丁更新的时间累积较久. 本来想通过全shell的方式进行处理 但是有一部不太会用 就用上了excel的数据列处理 为了防止自己忘记, 这里简单总结一下. 获取所有的

大数据 - DWM层 业务实现

DWM 建表,需要看 DWS 需求。 DWS 来自维度(访客、商品、地区、关键词),为了出最终的指标 ADS 需求指标 DWT 为什么实时数仓没有DWT,因为它是历史的聚集,累积结果,实时数仓中不需要 DWD 不需要加工 DWM 需要加工的数据 统计主题 需求指标【ADS】输出方式计算来源来源层级

累加和为 K 的子数组问题

累加和为 K 的子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的子数组问题 CSDN:累加和为 K 的子数组问题 题目说明 数组全为正数,且每个数各不相同,求累加和为K的子数组组合有哪些, 注:数组中同一个数字可以无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的

累加求和 1~ n求和

a=1 ~ n 的求和 $$ \sum_{a=1}^n a $$ 公式:(首项 + 末项) * 项数/2 如果 a=1、 n = 10 => (1+10)10/2 = 55 Python 代码 a = 1 n = 101 # 常规方法 sum = 0 for i in range(a, n): su

行列式求值,从 $n!$ 优化到 $n^3$

前置知识 \(\sum\) 为累加符号,\(\prod\) 为累乘符号。 上三角矩阵指只有对角线及其右上方有数值其余都是 \(0\) 的矩阵。 如果一个矩阵的对角线全部为 \(1\) 那么这个矩阵为单位矩阵记作 \(I\)。 对于矩阵 \(A_{n,m}\) 和矩阵 \(B_{m,n}\) 满足 \

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(12)-Charles如何使用Repeat功能进行简单压力测试

1.前言 李四:“今天好累啊,点的我手指都疼了。我一直被要求给后端接口的同事重复发送请求来调试接口。” Charles:“哎呀,李四同学,你怎么能一条一条的手动发送呢 我可是有超级工具:负载测试。” 2.简介 Repeat英文的意思就是:重复,顾名思义:就是重复请求接口,可以单次请求,一次只请求一次