南充市建设局官方网站,芒市网站建设,wordpress主题怎么使用,一级网站建设我自己的原文哦~ https://blog.51cto.com/whaosoft/14010384
#UPSCALE
这里设计了一个通用算法UPSCALE#xff0c;可以剪枝具有任意剪枝模式的模型。通过消除约束#xff0c;UPSCALE将ImageNet精度提高2.1个点。
paper地址#xff1a;https://arxiv.org/pdf/2307.08…我自己的原文哦~ https://blog.51cto.com/whaosoft/14010384
#UPSCALE
这里设计了一个通用算法UPSCALE可以剪枝具有任意剪枝模式的模型。通过消除约束UPSCALE将ImageNet精度提高2.1个点。
paper地址https://arxiv.org/pdf/2307.08771.pdf
codehttps://github.com/apple/ml-upscale
随着神经网络规模和复杂度的增长推理速度在下降。为了应对这一点通道剪枝这样的压缩技术通过删除权重的通道来删除参数。但是对于模型的多分支段来说删除通道可能会引入推理时的内存复制操作。这反过来会增加推理延迟以至于剪枝后的模型比未剪枝的模型慢。为了应对这一点剪枝方法通常会约束某些通道一起剪枝。这可以完全消除内存复制但如本文所示它大大降低了精度。作为变通方法本文的思路是在导出时重新排序通道以减少内存复制并提高精度。基于这一思路本文设计了一个通用算法UPSCALE可以剪枝具有任意剪枝模式的模型。通过消除约束本文将ImageNet精度提高2.1个点。进一步地通过重新排序通道与基准相比UPSCALE将推理速度提高了2倍。本文的工作为更广泛的剪枝算法打开了大门。 Introduction
深度神经网络模型对越来越多的实际应用来说是必不可少的但是与此同时神经网络架构也在逐年增长规模和复杂度。这对具有推理时间约束的许多使用场景来说成为一个大问题这使得模型压缩技术变得必要。
通道剪枝是最有效的模型压缩方法家族之一它通过删除卷积或全连接权重的整个通道来减少推理时延迟。尽管其效果显著但是通道删除过程本身在多分支网络段并不简单且常被忽视。这导致两种不可取的通道剪枝选择:1) 按照约定增加约束结果是会降低精度2) 消除约束但会增加推理延迟。
首先没有约束时导出网络的多分支段尤其复杂。在这些段中不同分支的层可能都使用相同的输入特征图并同时剪枝不同的通道。这会导致不兼容的维度更重要的是在推理时网络必须执行内存复制以确保张量在内存中是连续的。这些内存复制非常耗费延迟以至于剪枝后的模型可能比未剪枝的模型更慢(图2)。 其次为了应对这一点早期工作通过建立约定来增加约束具体是约束段的所有分支剪枝相同的通道。这些约束简化了导出因此现代剪枝工作更关注剪枝哪些通道而不是如何在导出时删除它们。尽管在结构化剪枝方面取得了显著进步但这些约束降低了精度。直观地约束限制了可能的剪枝模式集合限制了剪枝的有效性(图3)。 为了解决这个问题本文有两个思路:1) 重排序通道可以使张量的子集保持连续2) 张量的连续切片“免费”使用不需要内存复制。简而言之这允许本文放弃常规的剪枝约束以获得更高的精度。此外通过消除内存复制这允许精度收益以较小的延迟代价获得。
这些思路产生了一个通用的导出算法“UPSCALE”它可以剪枝具有任意剪枝模式的模型。这支持更广泛的剪枝算法类因为它使未约束剪枝的模型延迟更加适中在某些情况下几乎完全消除冗余内存复制。本工作做出以下三点贡献:
比较不同约束对精度的影响涵盖各种剪枝启发式方法、架构和稀疏度水平。不受约束的剪枝提高了ImageNet的后训练剪枝精度平均提高2.1个点。一个通用的导出工具UPSCALE与基准相比将推理时间提高2倍以上。这个可插拔工具使未来研究人员可以抽象出导出问题。据本文所知本文是第一个开发可以支持不受约束剪枝模式的导出工具的。将内存复制最大化抽象为图形这可能为进一步的延迟优化打开新的方向。
Related Work
结构化与非结构化剪枝。现有的剪枝工作可以分为非结构化方法和结构化方法。非结构化方法通过阈值和零化单个权重值而结构化方法在不同粒度层面施加稀疏模式来进行结构约束从剪枝成块到删除整个通道。后者称为通道剪枝其优势不依赖于定制稀疏矩阵原语。其优势来自于在导出时删除卷积权重通道以减少推理时的资源消耗。
通道剪枝策略。除了其独特的优势外通道剪枝还引入了一个独特的挑战:复杂拓扑的通道删除尤其困难特别是当网络的多个分支使用或生成共享张量时。为了应对这一点先前的工作增加约束限制网络复杂部分的可能剪枝模式。大多数结构化剪枝工作关注剪枝的其他方面而不是导出包括剪枝的启发式方法、量化粒度、掩码学习技术等。值得注意的是这些工作忽视了两个导出相关的挑战:1)大多数工作在训练时使用零一掩码来模拟剪枝而不会最终删除通道这意味着多分支段的导出挑战从未出现。2)大多数工作用FLOPs作为延迟的代理这意味着如果这些工作删除约束内存复制的延迟影响从未被发现。这两种做法组合起来隐藏了导出相关的挑战。为了补救这一点本文直接研究导出以允许更广泛的剪枝算法类展示现有的剪枝启发式方法可以通过简单地消除这些约束来获得更高的精度。
Method
先前的研究主要关注剪枝策略这些策略在训练期间通过“零化”通道来模拟剪枝模式。本文的工作与这一研究方向无关而是专注于如何导出无限制的剪枝模式。
卷积核中的输入通道和输出通道都可以被剪枝剪枝前者称为“输入剪枝”即将剪枝掩码放在卷积层之前剪枝后者称为“输出剪枝”即将剪枝掩码放在卷积层之后。为了方便起见本文将重点放在无限制的输入剪枝上不失一般性地可以参考附录F中的明确描述来了解无限制的输出剪枝。本文还经验性地观察到输入剪枝通常优于输出剪枝图A.15A.16这激发了本文对输入剪枝的关注。
请注意在本方法部分中本文明确指定“卷积”以便于理解。然而本文的算法可推广到任何输入通道数量独立于输出通道数量的操作例如全连接层。 Step 1 - Reduce to a Segment
本文的算法将网络架构划分为多个段(segments)图4中的步骤1非正式地说是一组可以独立于网络的其余部分进行剪枝的层。一个段包括a产生输出的卷积层称为“producers”以及b消耗这些张量的卷积层称为“consumers”。
为了确定segments从任意一个producers开始。找到该producers的所有consumers然后找到这些consumers的所有producers。重复迭代直到两个集合都收敛。详见算法1的更准确的公式表述。 例如在图4步骤1中从producersA开始。找到A的consumers{BD}。找到它们的producers{AC}。找到它们的consumers{BD}。注意到本文的consumers集合已经收敛因此本文的段已经完成。现在这个segments可以独立于网络的其余部分进行剪枝将剪枝网络的问题简化为剪枝单个segments的问题。详见图A.14中的更多示例。
Why Memory Copies Occur
简而言之当consumers剪枝不同的通道时会出现内存复制。为了解决这个问题先前的方法只是将所有consumers约束为剪枝相同的通道如图2中的“Constrained”。由于两个consumers都被约束为剪枝相同的通道因此导出实现是微不足道的只需删除所有consumers剪枝的producers输出通道即可。
然而现在考虑图2中的无约束情况“Inefficient”。假设consumers II剪枝的通道consumers III没有剪枝。在导出时无法删除II剪枝的通道因为III仍然需要它。相反在推理期间本文会选择producers的输出 - 将II所需的每个未剪枝的通道复制到一个新的张量中 - 然后将其传递给II。这种方法是导出无约束剪枝模型的基准方法。不幸的是基准方法中的内存复制会在推理时间产生显著的延迟成本以至于这个剪枝模型的延迟比原始未剪枝模型更高图7。
本文的关键见解是连续的切片是“免费的”。换句话说每个consumers取输入张量的一个切片而不是将通道复制到一个新的张量中。因此本文设计了一个算法可以重新排序producers的输出通道和consumers的输入通道图2“Ours”第3.6节。现在本文将讨论如何计算这个重新排序。
Formulate as a Graph
为了简化说明本文将在接下来的内容中研究consumers保留的通道而不是它剪枝的通道。
为了规范化本文的目标将本文的约束条件形式化为一个无向图图4第2步本文图中的每个节点代表一个consumers保留的通道集。如果两个节点共享一个或多个保留的通道则它们之间共享一个无向边。每个节点的奖励是保留的通道数每个边的奖励是共享保留通道数的负数。本文很快就会解释为什么要这样做。有了这个图可以将内存复制最大化目标规范化。
目标是找到一条路径 - 或者换句话说一个节点序列由于每个节点都是一个consumers节点的序列表示一系列consumers。反过来每个consumers序列都有一个零复制的通道顺序。例如假设本文有两个consumers节点序列为A、B。零复制通道顺序可以通过首先排序仅由A保留的通道然后是A和B共享的通道最后是仅由B保留的通道。这种顺序可以确保零内存复制因为A和B的输入已经在内存中是连续的。本文可以无限期地为任意数量的consumers继续这个过程只要consumers按顺序排列即可。总之路径可以转化为零复制的通道顺序。更多例子可以参见附录B。
目标是找到一个无环路径假设路径中的第一个和最后一个节点共享通道。现在问题在于将共享通道放在通道顺序的开头还是结尾无论哪种方式至少一个consumers的输入都将在内存中非连续分布。更一般地序列中的非相邻consumers不能共享通道。换句话说没有两个不相邻的节点可以共享一条边 - 或者更简洁地说路径必须是无环的否则在推理期间将需要为共享通道引入额外的内存复制。
目标是找到最大奖励的无环路径如前所述路径中的所有通道都需要零复制因此为了最小化内存复制本文需要最大化路径中包含的通道数。之前本文定义了节点和边的奖励使得路径奖励等于路径中包含的通道数。因此最终最大化包含通道数就是最大化路径奖励。
本文最终的正式目标是找到最大奖励的无环路径maximum reward acyclic path。关于如何通过这样做来最小化内存复制的端到端示例请参见附录C或图A.10。
How to Find Maximum Reward Acyclic Path
本文首先计算最大奖励路径的奖励简称为“mrp”。为了计算图 G 的 MRP(G) 奖励本文遍历所有节点 s ∈ G并计算从节点 s 开始的最大奖励路径的奖励 f(s)。 现在本文的目标是定义 f(s)。为此考虑节点 s 的所有邻居n ∈ A[s]其中 A 是邻接矩阵。直观地说mrp 的奖励 f(s) 是所有邻居节点 f(n) : n ∈ A[s] 的最大奖励路径的最大奖励 (a)以及到其邻居节点的奖励 Re[s n]其中 Re 是边缘奖励矩阵表示共享通道的数量。这可以用以下递归关系总结 其中 Rn 是节点奖励矩阵表示consumers保留的通道数量。这可以找到最大奖励路径但它不能处理无环约束。请注意mrp 路径 p 是通过动态规划优化目标即方程式1获得的节点序列。
处理无环约束将最大奖励无环路径缩写为“mrap”。为了处理无环约束定义一个节点集 I其中包括所有无效节点。无效节点包括 (a) 已经遍历的节点包括当前路径中的节点以及 (b) 邻近路径的节点即与路径中的节点共享边缘的节点。如果从不遍历邻近路径的节点则路径保证是无环的。重新定义子问题为 f(sI)即从源节点 s 开始且不包括节点 I 的 mrap 的奖励。
然后可以修改原始目标为以下目标。初始无效集 I 是路径中唯一的节点即 {s}。 然后修改递归关系为以下关系。为方便起见将仅从 s 到 n 而避免无效集 I 的旅行的定义因子g(s n I) 提取出来。 简而言之方程式 4 在考虑要遍历的邻居节点时排除所有无效节点。在考虑每个邻居节点时通过添加邻居节点本身 {n} 和源节点的邻居 A[s] 来扩展无效集 I。
Step 3 - Compute Channel Order From Graph
注意最大奖励无环路径 p 可以通过动态规划解决优化问题即方程式 3得到表示为 p ← MRAP(G)。此外mrap 路径 p 可能不包含所有节点例如如果所有节点都在一个环中。因此继续在剩余节点 MRAP(G-p) 上寻找路径直到没有更多节点为止。
在前一步骤中找到路径然后被转换为最终的通道顺序。如第 3.3 节和图 4情况 2所示假设有两个consumers A、B。排序通道仅由 A 保留然后通道由 A 和 B 共享然后通道仅由 B 保留。例如如果 A 保留 1、3B 保留 2、3则先排序A 的专有通道1然后是共享通道3最后是 B 的专有通道2生成最终顺序1、3、2。
更一般地将 mrap 路径中的排序节点表示为 p [n1n2n3...]。首先取所有仅由第一个节点保留的通道将其表示为 n˜1。第一个节点只应与第二个节点共享通道因此这等价于计算集合减法 更一般地将“唯一”于节点 i 的通道表示为 n˜i。第 i 个节点只应与前 ni-1 和后 ni1 个节点共享通道因此取差集以查找所有“唯一”于节点 ni 的通道。 然后取第一个和第二个节点共享的所有通道n1 ∩ n2。然后取第二个节点的“唯一”通道 n˜2。然后取第二个和第三个节点共享的通道n2 ∩ n3。对于路径中的所有节点继续这样做。总排序如下所示 当路径耗尽时继续使用以下路径中的节点排序。一旦所有路径耗尽排序就完成了。此通道排序在 Algorithm 1 中被总结为一个置换矩阵 Π。请参见图 4步骤 3或图 A.11 的示例。
Step 4 - Reorder Weights
然后使用上一步中的通道排序对producers和consumers中的通道进行重新排序。首先通道顺序直接决定了该段中所有producers的输出通道顺序。更正式地对于模型权重 W 和producers索引 pi 的列表本文将通道重新排序表示为 W[pi]Π。其次对于每个consumers相应地重新排序consumers的输入通道即W[ci]Π。请参阅算法 1 中的完整算法、附录 G 中的说明或图 4 中的示例步骤 4。
Generalized Method
一些节点是其他节点的子集。例如consumersA保留123consumersB保留1、2consumersC保留2、3。A是父节点B、C 是子节点。尽管A、B、C形式本文图中的一个循环可以实现零内存复制适应所有三个consumers的解决方案。简单地将通道排序为 1、2、3。这与本文的非循环路径相矛盾要求。为了解决这个问题引入两个修改(1)拒绝循环时忽略父子边路径以及 (2) 如果路径中的子节点包含所有父节点节点通道然后将父节点的奖励添加到路径的奖励。有关此子集的扩展描述案例及其解决方案参见附录 D。
多个producers。上面的算法假设有只有一个producer。为了处理多个producers发现哪些渠道在各个producers之间是相互对应的。假设producers A 和 B 的输出简单相加。在这个在这种情况下A 的通道 1 相当于 B 的通道 1。A 的通道 2 相当于 B 的通道 2所以等等。知道了这一点可以简化为单个producers案例作为 A 的过滤器自动排序提供 B 的过滤器的排序。
然后运行本文的方法假设卷积 A 是唯一的producer。之后当重新排序producers的权重时即步骤 4通过上述提到的同等通过映射 Πi将原始排列 Π 映射为每个producers。然后按 W[pi 排序权重]ΠiΠ。为了更多详细描述和示例参见附录E。
实验
本文进行了大量的实验来表明相比于有约束剪枝无约束剪枝可以显着提高准确率特别是对于较大的和具有复杂拓扑的模型。对于这些无约束剪枝模型本文证明UPSCALE 在推理时间上优于基线导出的延迟 - 事实上在没有 UPSCALE 的情况下剪枝后的模型延迟实际上增加了这使得 UPSCALE 成为必要导出方法。先前所有的方法都利用约束剪枝在本文的实验中消除了这些限制取而代之的是使用 UPSCALE 导出。 对于训练后设置无约束剪枝相比有约束剪枝将 ImageNet top-1 准确率提高高达 76.7% 。本文的目标是评估从有约束切换到无约束剪枝时的精度影响。为了简单起见本文使用以前用于有约束剪枝的剪枝算法通过删除零一掩码来实现无约束剪枝。评估效果受约束或无约束剪枝本文进行实验时没有微调使用训练后剪枝1采用模型在 ImageNet 上进行预训练(2) 应用各种剪枝启发式方法使用不同的稀疏度级别进行训练 (3) 查看 ImageNet top-1验证准确性。本文以间隔稀疏参数2.5% 从 0% 到 100% 并测试 5 种剪枝策略15 架构。
虽然这些剪枝策略是为有约束剪枝而设计的但本文发现在所有设置中无约束剪枝实现的精度与有约束剪枝相当或更好平均获得了 2.1 个百分点的更优。对于一些情况特别是对于复杂的拓扑结构和较大的模型图 3无约束剪枝可以获得显著的精度提升ImageNet 精度平均提高了 21.7 个百分点DenseNet121L1在所有稀疏度水平上平均提高或在特定稀疏度水平上提高了高达 76.7 个百分点EfficientNetV2-SmallLAMP12.5%。这说明无约束剪枝在适当的情况下可以提供额外的好处。本文在图 6 中总结了结果并在图 A.22 和图 A.23 中报告了完整的结果。附录 A 中的微调初步结果也显示了相当大的5 个百分点精度差距。 相对于无约束剪枝模式的基准导出使用 UPSCALE 导出剪枝模型的延迟可以提高高达 52.8% 。这个基准在第 3.2 节中有描述。为了独立评估本文的重排序算法的有效性本文采取以下步骤1对在 ImageNet 上预训练的模型进行训练后剪枝2导出带有和不带有 UPSCALE 的未受限制剪枝模型3对导出的模型的延迟进行基准测试。UPSCALE 可以平均减少所有设置的导出模型的延迟达 8.6%并在所有稀疏度水平上获得显著的延迟优势最高可达到 24.9%SqueezeNet1-1L1平均值为所有稀疏度水平ResNet18FPGM达到 52.8% 的延迟降低。需要注意的是导出未受限制的剪枝模型而没有使用 UPSCALE 实际上会增加延迟相对于原始的未剪枝模型来说在相同的设置中UPSCALE 能够实现更适当的延迟降低。 本文在图 7 和图 3 中总结了结果并在图 A.24 中报告了完整的结果。需要注意的是本文的算法中没有可以控制性能的超参数因此本文在所有模型上均匀地运行本文的算法以获得这种性能。本文还绘制了理论上的零内存复制解决方案的延迟说明任何未受限制的剪枝导出所能达到的最大延迟降低本文观察到 UPSCALE 常常表现得近乎最优延迟几乎与零内存复制延迟相匹配。
设置。本文使用一张 V100 GPU配备 32 GB RAM。为了计时导出模型本文在提供的模型上运行现有的剪枝策略使用 UPSCALE 进行导出然后使用 PyTorch 的 jit trace 生成一个不含 Python 的可执行文件。然后使用 PyTorch 内置的分析工具对这个跟踪模型进行基准测试包括 CUDA “activities” 和跟踪张量内存分配。需要注意的是该工具会自动处理预热例如在启动定时运行之前运行多个正向传递。本文所有的延迟测量是 100 次运行的总和并报告平均值和标准差。所有的精度都是在 ImageNet ILSVRC 2015Russakovsky 等人2015验证数据集上报告的。
结论
本文引入了无限制通道剪枝导出UPSCALE来更通用地支持剪枝导出UPSCALE 可以直接应对剪枝现代神经网络的主要挑战即内存和延迟效率问题。此外本文提出了一个框架和一个近似解决方案以减少推理时的内存复制从而减轻效率低下的问题。最终结果是一个通用的剪枝导出库扩大了现有和新的剪枝算法可操作的范围允许导出任何剪枝模式并使得无限制剪枝成为传统受限制剪枝的有力竞争对手。 #Cumulative Reasoning
姚期智领衔提出大模型「思维」框架逻辑推理正确率达98%思考方式更像人类了
一出手瞄准的就是“让大模型像人一样思考”这个方向——
不仅要让大模型一步步推理还要让它们学会“步步为营”记住推理中间的所有正确过程。
具体来说这篇新论文提出了一种叫做累积推理Cumulative Reasoning的新方法显著提高了大模型搞复杂推理的能力。
要知道大模型基于思维链等可以进行问题推理但面对“要拐好几个弯”的问题还是容易出错。
累积推理正是在此基础上加入了一个“验证者”及时判断对错。由此模型的思考框架也从链状和树状变成了更复杂的“有向无环图”。
这样一来大模型不仅解题思路更清晰还生出了一手“玩牌”的技巧
在代数和几何数论等数学难题上大模型的相对准确率提升了42%玩24点成功率更是飙升到98%。
据清华大学交叉信息研究院介绍共同一作张伊凡解释了这篇论文的出发点 卡尼曼认为人类的认知处理过程包括两个系统“系统1”是快速、本能和情感化的“系统2”是缓慢、深思熟虑、合逻辑的。 目前大语言模型的表现与“系统1”更为接近这也或许是它不擅长应对复杂任务的原因。 从这个角度出发设计的累积推理效果比思维链CoT和思维树ToT更好。
那么这种新方法究竟长啥样我们一起展开看看。
突破思维链树“瓶颈”
累积推理的核心在于改进了大模型思维过程的“形状”。
具体来说这个方法用到了3个大语言模型
提议者 (Proposer)不断提出新命题即基于当前思维上下文建议下一步是什么。验证者 (Verifier)核查提议者的命题准确性如果正确就将它添加到思维上下文中。报告者 (Reporter)判断是否已经能得到最终解决方案来确定是否结束推理过程。
推理过程中“提议者”先给出提案“验证者”负责评估“报告者”决定是否要敲定答案、终止思考过程。 CR推理示例
有点像是团队项目里的三类角色小组成员先头脑风暴出各种idea指导老师“把关”看哪个idea可行组长决策什么时候完成项目。
所以这种方法究竟是怎么改变大模型思维“形状”的
要想理解这一点还得先从大模型思维加强方法“鼻祖”思维链Chain of Thought,CoT说起。
这个方法在2022年1月由OpenAI科学家Jason Wei等人提出核心在于给数据集中的输入加一段“逐步推理”文字激发出大模型的思考能力。 选自GSM8K数据集
基于思维链原理谷歌也快速跟进了一个“思维链PLUS版”即CoT-SC主要是进行多次思维链过程并对答案进行多数投票majority vote选出最佳答案进一步提升推理准确率。
但无论思维链还是CoT-SC都忽略了一个问题题目不止有一种解法人类做题更是如此。
因此随后又出现了一种名叫思维树Tree of Thought,ToT的新研究。
这是一种树状检索方案允许模型尝试多种不同的推理思路并自我评估、选择下一步行动方案必要时也可以回溯选择。 从方法中可以看出思维树比思维链更进一步让大模型思维“更活跃”了。
这也是为什么玩24点时思维链加成的GPT-4成功率只有4%但思维树成功率却飙升到74%。
BUT无论思维链、CoT-SC还是思维树都有一个共同的局限性 它们都没有设置思维过程中间结果的储存位置。 毕竟不是所有的思维过程都能做成链或者树人类想东西的方式往往还要更复杂。
这次的累积推理新框架在设计上就突破了这一点——
大模型的整体思维过程不一定是链或树还可以是一个有向无环图DAG嗯有神经突触内味了 图中的边都有方向并且不存在任何循环路径每个有向边是一个推导步骤
这也就意味着它可以将所有历史上正确的推理结果存储于内存中以便在当前搜索分支中探索。相比之下思维树并不会存储来自其它分支的信息
但累积推理也能和思维链无缝切换——只要将“验证者”去掉就是一个标准的思维链模式。
基于这种方法设计的累积推理在各种方法上都取得了不错的效果。
做数学和搞逻辑推理都在行
研究人员选择了FOLIO wiki和AutoTNLI、24点游戏、MATH数据集来对累积推理进行“测试”。
提议者、验证者、报告者在每次实验中使用相同的大语言模型用不同的prompt来设定角色。
这里用作实验的有GPT-3.5-turbo、GPT-4、LLaMA-13B、LLaMA-65B这些基础模型。
值得一提的是理想情况下应该使用相关推导任务数据专门预训练模型、“验证者”也应加入正规的数学证明器、命题逻辑求解器模块等。
1、逻辑推理能力
FOLIO是一阶逻辑推理数据集问题的标签可以是“true”、“False”、“Unknown”AutoTNLI是高阶逻辑推理数据集。
在FOLIO wiki数据集上与直接输出结果Direct、思维链CoT、进阶版思维链CoT-SC方法相比累积推理CR表现总是最优。
在删除数据集中有问题的实例比如答案不正确后使用CR方法的GPT-4推理准确率达到了98.04%并且有最小1.96%的错误率。 再来看AutoTNLI数据集上的表现
与CoT方法相比CR显著提高了LLaMA-13B、LLaMA-65B的性能。
在LLaMA-65B模型上CR相较于CoT的改进达到了9.3%。 2、玩24点游戏能力
ToT最初论文中用到的是24点游戏所以这里研究人员就用此数据集来做CR和ToT的比较。
ToT使用固定宽度和深度的搜索树CR允许大模型自主确定搜索深度。
研究人员在实验中发现在24点的上下文中CR算法和ToT算法非常相似。不同点在于CR中算法每次迭代最多产生一个新的状态而ToT在每次迭代中会产生许多候选状态并过滤、保留一部分状态。
通俗来讲ToT没有上面提到的CR有的“验证者”不能判断状态a、b、c正误因此ToT比CR会探索更多无效状态。 最终CR方法的正确率甚至能达到98%ToT为74%且平均访问状态数量要比ToT少很多。
也就是说CR不仅有更高的搜索正确率也有更高的搜索效率。 3、数学能力
MATH数据集包含了大量数学推理题目包含代数、几何、数论等题目难度分为五级。
用CR方法模型可以将题目分步骤拆解成能较好完成的子问题自问自答直到产生答案。
实验结果表明CR在两种不同的实验设定下正确率均超出当前已有方法总体正确率可达58%并在Level 5的难题中实现了42%的相对准确率提升拿下了GPT-4模型下的新SOTA。 论文链接https://arxiv.org/abs/2308.04371 #xxx #xxx #xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx