如何精准控制大模型的推理深度

news2025/4/19 6:42:03

论文标题

ThinkEdit: Interpretable Weight Editing to Mitigate Overly Short Thinking in Reasoning Models

论文地址

https://arxiv.org/pdf/2503.22048

代码地址

https://github.com/Trustworthy-ML-Lab/ThinkEdit

作者背景

加州大学圣迭戈分校

动机

链式推理能显著提升大模型求解复杂问题的能力,尤其是对于数学、代码等逻辑推理任务。然而,即便经过专门的强化训练的推理模型,在简单基准(如小学数学问题数据集 GSM8K)上仍未达到完美水平。

研究者发现,一个重要原因是模型有时会产生过短推理的链条——即推理步骤异常简短、抽象,草草几步就直接给出结论。这种不充分的“短路”思考往往伴随着性能下降:在较困难的数学基准(如 MATH-Level5)上,过短推理的答案准确率比正常情况降低了约 20%。可见,推理链的长度对问题求解效果起着至关重要的作用,如何避免模型过早停止思考成为值得关注的问题。

在这里插入图片描述

尽管已有很多工作通过强化学习鼓励模型进行长推理,但依然存在机理不明和干预困难的问题,作者对此进行了深入探究,以解决这两项挑战

相反地,之前也介绍过一篇解决大模型“过度推理”的文章:
Uncert-CoT: 计算不确定性判断是否启用CoT

本文方法

本文提出ThinkEdit,通过可解释的权重编辑来减少过短推理

一、提取推理长度方向

作者首先探究模型隐藏层中是否存在与推理长短对应的特征。一个很自然的思路是:准备一批测试集让LLM进行链式推理,将出现极长(超过1000token)和极短(低于100token)思维链的结果分为两组,然后对比分析二者的隐藏层差异。

具体地,作者考察了两类输出在Attention模块输出,以及MLP模块输出上的差异,直接将极长组的平均向量,减去极短组的平均向量作为“推理长度方向”

接下来需要验证这个“推理长度方向”是否能直接决定大模型的推理长度。验证方法很简单:直接把对应的隐藏层向量上添加此方向上的扰动,然后观察模型输出的准确率(左)和长度(右)变化,结果如下:

在这里插入图片描述
在这里插入图片描述

可见上述“推理长度方向”与模型输出长度强相关,并且具有良好的可控性,这让我们手动控制大模型思考链长度带来了希望。

二、识别关键注意力头

找到了决定推理长度的向量后,接下来需要寻找哪些模块对过短的推理“负主要责任”,方法也很直观:依次在每一层、每个注意力头上施加减少推理长度方向的扰动,输出长度变化越显著,则当前模块对短推理的贡献越大:

在这里插入图片描述

可视化的热力图显示,不到约2%的注意力头具有显著的短推理贡献值(这些头在图中呈现红色高值),并且它们主要集中在 Transformer 的中间层。这带来了一个好消息:我们或许只需对模型很小一部分参数进行干预,就能有效减少过短推理。作者也进行了验证试验:如果临时禁用这些“短推理头”,模型在产生短推理的情况下准确率会有非凡提升,同时整体性能也略有改善

三、编辑注意力头权重

在锁定了主要的短推理注意力头后,研究者提出了 ThinkEdit 方法,即直接修改这些头的权重参数,消除它们推动短推理的倾向。具体地,作者使用了一个投影矩阵,将需要修改的隐向量投影到与上述“推理长度方向”无关的空间中:

在这里插入图片描述

上述操作比直接往W中补充方向向量更有效:由于投影空间与V正交,今后无论输入是什么,这个注意力头都不会再产生影响推理长度的分量,而只能贡献其他与此不相关的变化。

实验结果

一、性能测试

在各类数学问题测试集上,应用ThinkEdit后的模型的准确率都有明显提升:

在这里插入图片描述

二、推理长度变化

推理长度的下限也如预期明显增加
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【力扣hot100题】(078)跳跃游戏Ⅱ

好难啊,我愿称之为跳崖游戏。 依旧用了两种方法,一种是我一开始想到的,一种是看答案学会的。 我自己用的方法是动态规划,维护一个数组记录到该位置的最少步长,每遍历到一个位置就嵌套循环遍历这个位置能到达的位置&a…

WES与WGS数据线粒体DNA数据分析及检测工具

1. 线粒体DNA的异质性 传统的全外显子组测序(WES)和全基因组测序(WGS)的二代测序(SGS) 数据分析流程,能够识别多种类型的基因改变。但大多数用于基因变异分析和注释的工具,在输出文…

word表格间隔设置

1.怎么解决word表格间隔达不到我们想要的要求 其实很简单, 我们直接在word表格里面, 全选表格中里面的内容。接着,我们选择自动调整---->根据内容自动调整表格,即可达到我们想要的要求

SpringBoot 接口限流Lua脚本接合Redis 服务熔断 自定义注解 接口保护

介绍 Spring Boot 接口限流是防止接口被频繁请求而导致服务器负载过重或服务崩溃的一种策略。通过限流,我们可以控制单位时间内允许的请求次数,确保系统的稳定性。限流可以帮助防止恶意请求、保护系统资源,并优化 API 的可用性,避…

I/O进程4

day4 九、信号灯集 1.概念 信号灯(semaphore),也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制;System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号灯。 通过信号灯集实现共享内存的同步操作。 2.编程…

【语法】C++的list

目录 为什么会有list? 迭代器失效: list和vector的迭代器不同的地方: list的大部分用法和vector都很像,例如push_back,构造,析构,赋值重载这些就不再废话了,本篇主要讲的是和vecto…

【Ai/Agent】Windows11中安装CrewAI过程中的错误解决记录

CrewAi是什么,可以看之下之前写的 《初识CrewAI多智能代理团队协框架》 (注:这篇是基于linux系统下安装实践的) 基于以下记录解决问题后,可以再回到之前的文章继续进行CrewAI的安装 遇到问题 在windows系统中安装 CrewAi 不管是使用 pip 或者…

OSPF的数据报文格式【复习篇】

OSPF协议是跨层封装的协议(跨四层封装),直接将应用层的数据封装在网络层协议之后,IP协议包中协议号字段对应的数值为89 OSPF的头部信息: 所有的数据共有的信息字段 字段名描述版本当前OSPF进程使用的版本(…

【力扣刷题实战】Z字形变换

大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:Z字形变换 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C) 兄弟们共勉 !!! 每篇前言 博客主页:小卡…

力扣题解:142. 环形链表 II

在链表学习中,我们已经了解了单链表和双链表,两者的最后一个结点都会指向NULL;今天我们介绍的循环列表则不同,其末尾结点指向的这是链表中的一个结点。 循环链表是一种特殊类型的链表,其尾节点的指针指向头节点&#…

latex模板文件

LaTeX 是一款广泛应用于学术领域的​​文档排版系统​​,尤其以其在数学公式、科学符号和复杂技术文档排版中的强大能力著称。虽然它本身并非专门的“数学软件”,但在处理数学相关内容时表现尤为出色。 1. LaTeX 的核心特点​ 数学公式支持​​&#xff…

BLE 协议栈事件驱动机制详解

在 BlueNRG-LP 等 BLE 系统中,事件驱动是控制状态转移、数据交互和外设协作的基础。本文将深入讲解 BLE 协议栈中事件的来源、分发流程、处理结构与实际工程实践策略,帮助你构建稳定、可维护的 BLE 系统。 📦 一、BLE 事件的来源分类 BLE 协议栈中的事件严格来自协议栈本身…

Rust 之四 运算符、标量、元组、数组、字符串、结构体、枚举

概述 Rust 的基本语法对于从事底层 C/C 开发的人来说多少有些难以理解,虽然官方有详细的文档来介绍,不过内容是相当的多,看起来也费劲。本文通过将每个知识点简化为 一个 DEMO 每种特性各用一句话描述的形式来简化学习过程,提高学…

fuse-python使用fuse来挂载fs

winfsp 安装winfsp,https://winfsp.dev/ fusepy python安装fusepy #!/usr/bin/env python3 import os import stat from fuse import FUSE, FuseOSError, Operationsclass Passthrough(Operations):def __init__(self, root):self.root root# 辅助函数:将挂载点…

基于ueditor编辑器的功能开发之增加自定义一键排版功能

用户有自己的文章格式,要求复制或者粘贴进来的文章能够一键排版,不需要手动调试 这个需求的话咱们就需要自己去注册一个事件啦,这里我没有修改源码,而是在编辑器初始化之后给他注册了一个事件 我的工具列表变量 vue组件中data中…

VS Code Markdown渲染配置

VS code markdown preview enhanced插件渲染配置 mac: commandshiftP命令输入Markdown Preview Enhanced: Customize CSS,并点击在打开的style.less配置文件添加一下配置 /* Please visit the URL below for more information: */ /* https://shd101wyy.github.…

数据结构篇:线性表的另一表达—链表之单链表(上篇)

目录 1.链表的引入 1.1 链表的概念 1.2 next的意义 2.链表的分类 3.单链表的实现 3.1 单链表实现接口 3.1.1 插入节点函数封装 3.1.2 尾插 3.1.3 头插 3.1.4 报错的根本问题 3.1.5 头删 3.1.6 尾删 4.小结 1.链表的引入 根据顺序表的一些缺陷…

SpringBoot企业级开发之【用户模块-获取用户详细信息】

接口文档的要求: 了解一下token令牌头是怎么用的 我们直接放到前端交互的controller类下,在声明的方法中加入参数为String token且加入注解RequestHeader(name"Authorization【你自己设定的token】") 设计思路: 实战开发: control…

Mockito如何对静态方法进行测试

在 Mockito 中,直接对静态方法进行模拟是困难的,因为 Mockito 的设计理念是优先通过依赖注入(DI)管理对象,而静态方法破坏了这种设计(难以解耦)。不过,从 Mockito 3.4.0 版本开始,通过 mockStatic 方法支持了对静态方法的模拟(需配合 mockito-inline 依赖)。 从 Mo…

Navicat 17 for Mac 数据库管理

Navicat 17 for Mac 数据库管理 一、介绍 Navicat Premium 17 for Mac是一款专业的数据库管理工具,适用于开发人员、数据库管理员和分析师等用户。它提供了强大的数据管理功能和丰富的工具,使用户能够轻松地管理和维护数据库,提高数据处理效…