深入探索CoT有效性和推理步长对于LLM性能的影响

思想链(CoT)对于提高大型语言模型(LLM)的推理能力具有重要意义。 然而,CoT 的有效性与提示中推理步骤的长度之间的相关性仍然很大程度上未知。 为了阐明这一点,多家研究机构(西北大学、罗格斯大学、利物浦大学、新泽西理工学院)联合进行了研究并进行了几次实证实验来探索其中的关系。我们设计了扩展和压缩 CoT 的例子中的基本原理推理步骤的实验,同时保持所有其他因素不变,然后得到了一些很有趣的结论。

image.png

 

论文题目: The Impact of Reasoning Step Length on Large Language Models 论文链接:https://arxiv.org/abs/2401.04925 论文后续还会持续更新,欢迎提出意见。

image.png

 

01. 大模型的推理性能的关键在什么地方?

大语言模型在自然语言处理任务上的惊艳表现引起了社会广泛的关注,特别是在经典 NLP 任务中。 其中的一个关键创新是思想链(CoT)技术,以其在多步骤问题解决中的功效而闻名。 这种反映人类顺序推理的技术在各种挑战中表现出了显着的有效性,包括跨领域、长度泛化和跨语言任务。 CoT 方法以其逻辑性、循序渐进的方法论,在复杂的问题解决场景中提供了至关重要的可解释性。

尽管 CoT 的方法发展的非常快并且取得了令人鼓舞的成果,但研究界尚未就 CoT 及其变体如何以及为何有效发挥作用的精确机制达成共识。 这种知识差距意味着提高 CoT 性能仍然是一个探索领域,很大程度上依赖于试错方法。 目前仍缺乏既定的系统方法来提高 CoT 的有效性,使得研究人员只能依赖猜想和实验。 这种情况凸显了该领域的一个重大机遇:对 CoT 的内部运作有更深入、更结构化的理解。 这样的进步不仅可以揭开当前过程的神秘面纱,还可以为该技术在各种复杂的 NLP 任务中更可靠、更高效的应用铺平道路。

我们的研究结果表明,在一定限度内,推理链的长度与大模型推理能力之间存在显着相关性。 有趣的是,当我们将误导性信息引入推理链时,性能仍然表现出改善。 这突显了一个关键的见解:关键因素似乎是思维链的长度,而不是其准确性。

我们有以下主要发现,希望能够帮助学术界更好地提高 CoT 性能。

  • 对于few-shot COT,步数和准确性之间存在直接的线性相关:这为优化复杂推理中的 CoT 提示提供了一种可量化的方法。 具体来说,延长提示中的推理步骤可以显着增强LLM跨多个数据集的推理能力。 即使在保留关键信息的情况下,缩短推理步骤也会显着降低模型的推理能力。
  • 如果保持必要的推理长度,即使是不正确的基本原理也可以产生有利的结果:例如,在数学问题等任务中,由于其面向过程的性质,中间数字的错误影响较小。
  • 增加推理步骤的优点是依赖于任务的:更简单的任务需要更少的步骤,而更复杂的任务可以从更长的推理序列中获得显着的收益。
  • 增加零样本 CoT 中的推理步骤也可以显着提高 LLM 准确性:为了验证这种方法,我们将最初的提示从“Let’s think step by step”更改为“Let’s think step by step, but you must think more step.” 这种修改导致大型模型的推理能力显着增强,在涉及数学问题的数据集中尤其明显。
  • 我们进行了定量分析,以确定模型大小和增强模型推理能力所需的额外推理步骤数量之间的最佳平衡。

02. 我们丰富推理步骤的方法

2.png

 

我们方法的关键就是不引入新信息,控制变量,只丰富步骤,并不带入额外知识。基于Zero-Shot-CoT和Auto-CoT的启发,我们期望CoT的流程能够成为一种标准化的模式,并通过在提示部分限制CoT的思维方向来得出正确的结果。我们方法的核心是模拟人类思维过程并重塑思维链条。

  • Think About The Word: 该策略是要求模型解释单词并重建知识库。 通常,一个单词有多种不同的含义,其效果是让模型跳出框框思考,并根据生成的解释重新解释问题中的单词。 此过程不会引入新信息。 在提示中,我们给出了模型正在考虑的单词的示例,模型会根据新问题自动为该过程选择单词。
  • Read the question again: 反复读题,减少其他文字对思路链条的干扰。 简而言之,我们让模型记住这个问题。
  • Repeat State: 与重复阅读类似,我们在经过一长串推理后对当前状态进行了小总结,旨在帮助模型简化其记忆并减少 CoT 中其他文本的干扰。
  • Self-Verification: 人类在回答问题时会检查他们的答案是否正确。 因此,在模型得到答案之前,我们添加了一个自我验证的过程,根据一些基本信息来判断答案是否合理。
  • Make Equation: 对于数学问题,Make Equation 可以帮助人类总结和简化记忆。 而对于一些需要假设未知数x的问题,建立方程是一个必不可少的过程。 我们模拟了这个过程,让模型尝试在数学问题中建立方程。

03. 实验

image.png

 

4.png

 

  1. 我们使用 GPT-3.5-turbo-1106 比较了来自三类推理任务的八个数据集的准确性。 所有结果均是三次随机运行的平均值。 我们的 SOTA 结果基于每个数据集最佳性能步骤的实验结果。
  2. 得益于我们标准化了思想链流程,可以量化由于 CoT 演示原理步骤的增加而带来的准确性的提高。 我们发现,在有效的 CoT 过程中,即添加最多六个步骤的额外思维过程,所有数据集中的大型语言模型推理能力都会得到提高。 换句话说,我们发现准确率和 CoT 复杂度之间存在一定的线性关系。
  3. 我们做了以下尝试。 将提示中的某个步骤改为错误答案,看看是否影响思路。 因此,对于这个实验,我们将所有提示更改为携带一个错误。 对于算数类题,即使其中一个提示结果出现偏差,对推理过程中的思维链的影响也是微乎其微的,所以我们认为大语言模型更多地了解了思维链 解决算术类问题时,提示中的模式比单一计算要多。 对于类似Coin数据集中的逻辑问题,其中一个提示结果的偏差往往会带来整个思路的支离破碎。 我们使用 GPT-3.5-turbo-1106 完成了这个实验,并根据之前实验得出的每个数据集的最佳步数保证了性能。
  4. 我们进行了推理步骤压缩实验,并采用实验设置中概述的技术来压缩来自基线自动思想链(Auto-CoT)和少样本思想链的示例中的推理过程 (Few-Shot-CoT),旨在减少推理步骤的数量。 结果如图所示。 结果显示,它们的性能显着下降,回归到与零样本方法所达到的水平基本相当的水平。 它进一步表明增加 COT 基本推理步骤可以提高 COT 性能,反之亦然。

04. 结论和未来的工作

在这项工作中,我们为理解和优化大语言模型的 CoT 做出了关键贡献,特别是在复杂推理任务领域。 我们对自然语言处理中的 CoT 技术(特别是 GPT-3、GPT-3.5 和 GPT-4 等大型语言模型)进行了广泛的研究,得出了重要的见解。 我们发现推理链的长度与这些模型的性能之间存在显着的相关性。 有趣的是,较长的推理链可以提高模型性能,即使它们包含误导性信息。 这表明,对于有效解决问题而言,链条的长度比其事实准确性更为重要。 这些发现为完善 CoT 策略提供了宝贵的指导,强调了推理长度在复杂 NLP 任务中的重要性。

我们的下一步是通过分析LLM推理的长推理步骤和短推理步骤以及大模型内部的神经元过程。我们的目标是确定较长的推理步骤是否与更广泛的神经元参与相关。 为了说明这一点,我们打算使用可视化技术来分析长推理步骤和短推理步骤之间的激活模式。


关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/372470.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【UE 材质】扇形材质

目录 效果 步骤 (1)控制扇形的弧宽度 (2)控制扇形的角度 (3)完整节点 效果 步骤 (1)控制扇形的弧宽度 创建一个材质,混合模式设置为“Additive”,着色…

【Java 数据结构】String进阶

字符串常量池 1. 创建对象的思考2. 字符串常量池(StringTable)3. 再谈String对象创建 1. 创建对象的思考 下面两种创建String对象的方式相同吗? public static void main(String[] args) {String s1 "hello";String s2 "hello";String s3 …

JVM 性能调优 - Java 中的四种引用(4)

为什么会有四种引用 我们先回顾下在 Java 虚拟机内存体系(1) 中提到了的垃圾回收算法 1、引用计数法 原理:给对象添加一个引用计数器,每当有一个地方引用它,计数器的值就加一。每当有一个引用失效,计数器的值就减一。当计数器值为零时,这个对象被认为没有其他对象引用,…

070:vue+cesium: 利用canvas设置径向渐变色材质

相关API参考: https://cesium.com/learn/cesiumjs/ref-doc/ColorMaterialProperty.html 第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. …

centos间文件传输

scp /home/vagrant/minio zx192.168.56.34:/home/zx /home/vagrant/minio 是你要传输的文件而且是当前机器登录用户有权限操作的文件 zx是目标机器的用户192.168.56.34是目标机器的地址 /home/zx是要传到这个文件夹下 要确保zx有/home/zx这个文件夹的操作权限 本质就是ssh文…

[leetcode] 27. 移除元素

文章目录 题目描述解题方法双指针java代码复杂度分析 相似题目 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O ( 1 ) O(1) O(1) …

分布(一)利用python绘制直方图

分布(一)利用python绘制直方图 直方图(Histogram)简介 直方图主要用来显示在连续间隔(或时间段)的数据分布,每个条形表示每个间隔(或时间段)的频率,直方图的…

2024年考PMP还有什么用?

PMP 是项目管理专业人士资格认证的意思,也是项目管理领域通用的证书, 做项目的基本都会去考。 要说 PMP 有啥作用? 个人感觉 PMP 证书更多的是跳槽、转行的敲门砖的作用,因为现在很多公司都要 PMP 证书,有了可以加分…

VS Code+Live Server插件开发游戏并结合内网穿透分享好友异地访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程,我们将通过VS Code实现远程开发MENJA小游戏,并通过cpolar内网穿透发布到公网,分…

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

fastapi 链接数据库,并报错问题

还有一个重点需要下载 pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simplefrom fastapi import FastAPI import uvicorn from student.urls import student_id_mysql from sqlalchemy …

【sentinel流量卫兵配置持久化到Nacos】

sentinel流量卫兵配置持久化到Nacos 概述: 一、添加配置二、配置说明限流规则配置:降级规则配置:热点规则配置:授权规则配置:系统规则配置: 三、服务整合 概述: 控制台配置的参数,默…

2024/2/4学习记录

微信小程序 网络数据请求 出于安全性方面的考虑,小程序官方对数据接口得请求做出了俩个限制 只能对 https 类型的接口必须将接口的域名添加到信任列表中 需要去这里设置 域名只支持 https 协议域名不能使用 ip 地址 或者localhost域名必须经过 ICP 备案 服务器域…

【C++】基础语法:深浅拷贝

前言 在学习拷贝构造函数的时候遇到了深浅拷贝这个知识点 就写篇文章记录一下 (引用的部分不用太在意 是查的 (需要前提知识:知道默认拷贝构造函数是什么 知道默认拷贝构造函数和构造函数的关系、知道析构函数的写法和用处 浅拷贝 浅拷贝&…

周报(20240204)

日期:2024.1.29 - 2024.2.4 本周工作: 1. 阅读论文 本周主要对这篇文献进行了阅读: 《用可学习的跳跃连接缩小U-Net中的语义差距:以医学图像分割为例》 背景 医学图像分割和随后对目标对象的定量评估为疾病诊断和治疗规划提…

在Vue中如何动态绑定class和style属性

在Vue中,动态绑定class和style属性是我们经常遇到的需求。这个功能允许我们根据不同的条件来动态改变元素的样式,让我们的应用更加灵活和富有交互性。在本篇博客文章中,我将带你深入探索在Vue中如何实现这一功能。 首先,让我们了…

c++中使用ifstream对文件按照行间隔或者符号间隔来读取

简单的文本存取与读取在的程序中是比较常见的,一般为了读取的时候便于区分数据,我们常常会用空格或者空行来隔开数据字段,所以对于读取文件的操作我们肯定会有些具体的需求比如按照行读取或者按照词来读取(或者说是以空格来间隔数…

函数调用栈是什么

今天在力扣leetbook上看《图解算法数据结构》中的空间复杂度这一小节,看到如下这句话: “程序调用函数是基于栈实现的,函数在调用期间,占用常量大小的栈帧空间,直至返回后释放。” 这句话的意思是,在程序中…

SQL必知必会笔记(13~16章)

第十三章 创建高级联结 1、别名:缩短SQL语句,允许在一条Select语句中多次使用相同的表 SELECT A.Name, A.Maths, A.English FROM transcript AS A INNER JOIN student_id As B ON A.Name B.Name; 2、Oracle数据库中没有AS关键字,直接在表名或…

【计算机学院寒假社会实践】——服务走进社区,共绘幸福蓝图

为深入贯彻落实志愿者服务精神,扎实推进志愿者服务质量,2024年1月28日,曲阜师范大学计算机学院“青年扎根基层,服务走进社区”社会实践队队员周兴睿在孙宇老师的指导下,来到山东省滨州市陈集街道社区开展了为期一天的“…