如何精准控制大模型的推理深度
论文标题
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后的模型的准确率都有明显提升:

二、推理长度变化
推理长度的下限也如预期明显增加

相关文章:
如何精准控制大模型的推理深度
论文标题 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 作者背景 加州大学圣迭戈分校 动机 链式推理能显…...
【力扣hot100题】(078)跳跃游戏Ⅱ
好难啊,我愿称之为跳崖游戏。 依旧用了两种方法,一种是我一开始想到的,一种是看答案学会的。 我自己用的方法是动态规划,维护一个数组记录到该位置的最少步长,每遍历到一个位置就嵌套循环遍历这个位置能到达的位置&a…...
Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
题目描述 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 考察二…...
LangChain入门指南:调用DeepSeek api
文章目录 1. 什么是LangChain?2. 核心组件3. 为什么选择LangChain?4. 实战案例安装简单chat案例流式交互Prompt模板 5. 简单总结 1. 什么是LangChain? 定义:LangChain是一个用于构建大语言模型(LLM)应用的…...
WES与WGS数据线粒体DNA数据分析及检测工具
1. 线粒体DNA的异质性 传统的全外显子组测序(WES)和全基因组测序(WGS)的二代测序(SGS) 数据分析流程,能够识别多种类型的基因改变。但大多数用于基因变异分析和注释的工具,在输出文…...
word表格间隔设置
1.怎么解决word表格间隔达不到我们想要的要求 其实很简单, 我们直接在word表格里面, 全选表格中里面的内容。接着,我们选择自动调整---->根据内容自动调整表格,即可达到我们想要的要求...
SpringBoot 接口限流Lua脚本接合Redis 服务熔断 自定义注解 接口保护
介绍 Spring Boot 接口限流是防止接口被频繁请求而导致服务器负载过重或服务崩溃的一种策略。通过限流,我们可以控制单位时间内允许的请求次数,确保系统的稳定性。限流可以帮助防止恶意请求、保护系统资源,并优化 API 的可用性,避…...
设计模式 --- 观察者模式
设计模式 --- 观察者模式 什么是观察者模式观察者模式典型应用 --- C#中的事件使用观察者模式实现事件处理机制 什么是观察者模式 观察者模式(Observer Pattern)是一种行为型设计模式,用于在对象之间建立一对多的依赖关系。当一个对象&#x…...
电商核心指标解析与行业趋势:数据驱动的增长策略【大模型总结】
电商核心指标解析与行业趋势:数据驱动的增长策略 在电商领域,数据是决策的核心。从流量监测到用户行为分析,从价格策略到技术赋能,每一个环节的优化都离不开对核心指标的深度理解。本文结合行业最新趋势与头部平台实践࿰…...
I/O进程4
day4 九、信号灯集 1.概念 信号灯(semaphore),也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制;System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号灯。 通过信号灯集实现共享内存的同步操作。 2.编程…...
【语法】C++的list
目录 为什么会有list? 迭代器失效: list和vector的迭代器不同的地方: list的大部分用法和vector都很像,例如push_back,构造,析构,赋值重载这些就不再废话了,本篇主要讲的是和vecto…...
【算法笔记】并查集详解
🚀 并查集(Union-Find)详解:原理、实现与优化 并查集(Union-Find)是一种非常高效的数据结构,用于处理动态连通性问题,即判断若干个元素是否属于同一个集合,并支持集合合…...
【Ai/Agent】Windows11中安装CrewAI过程中的错误解决记录
CrewAi是什么,可以看之下之前写的 《初识CrewAI多智能代理团队协框架》 (注:这篇是基于linux系统下安装实践的) 基于以下记录解决问题后,可以再回到之前的文章继续进行CrewAI的安装 遇到问题 在windows系统中安装 CrewAi 不管是使用 pip 或者…...
OSPF的数据报文格式【复习篇】
OSPF协议是跨层封装的协议(跨四层封装),直接将应用层的数据封装在网络层协议之后,IP协议包中协议号字段对应的数值为89 OSPF的头部信息: 所有的数据共有的信息字段 字段名描述版本当前OSPF进程使用的版本(…...
[leetcode]查询区间内的所有素数
一.暴力求解 #include<iostream> #include<vector> using namespace std; vector<int> result; bool isPrime(int i) { if (i < 2) return false; for (int j 2;j * j < i;j) { if (i % j 0) { …...
【力扣刷题实战】Z字形变换
大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:Z字形变换 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C) 兄弟们共勉 !!! 每篇前言 博客主页:小卡…...
【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-添加地雷到网格
添加地雷到网格 文章目录 添加地雷到网格1、概述2、更新Globals.h3、在随机单元格中放置地雷4、更新单元格以接收地雷5、渲染地雷图像6、开发助手7、完整代码8、总结在本文中,我们将更新游戏以在网格中随机放置地雷,并在单元格被清除时渲染它们。 1、概述 在我们扫雷游戏教程…...
Fortran 中读取 MATLAB 生成的数据文件
在 Fortran 中读取 MATLAB 生成的数据文件,可以通过以下几种方法实现,包括使用开源工具和手动解析: 1. 使用开源工具:MATFOR MATFOR 是一个商业/开源混合工具(部分功能免费),提供 Fortran 与 M…...
Kubernetes 入门篇之网络插件 calico 部署与安装
在运行kubeadm init 和 join 命令部署好master和node节点后,kubectl get nodes 看到节点都是NotReady状态,这是因为没有安装CNI网络插件。 kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Not…...
力扣题解:142. 环形链表 II
在链表学习中,我们已经了解了单链表和双链表,两者的最后一个结点都会指向NULL;今天我们介绍的循环列表则不同,其末尾结点指向的这是链表中的一个结点。 循环链表是一种特殊类型的链表,其尾节点的指针指向头节点&#…...
latex模板文件
LaTeX 是一款广泛应用于学术领域的文档排版系统,尤其以其在数学公式、科学符号和复杂技术文档排版中的强大能力著称。虽然它本身并非专门的“数学软件”,但在处理数学相关内容时表现尤为出色。 1. LaTeX 的核心特点 数学公式支持ÿ…...
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中…...
内核态切换到用户态
内核态切换到用户态 是操作系统中 CPU 执行模式的一种切换过程,涉及从高权限的内核态(Kernel Mode)切换到低权限的用户态(User Mode)。以下是详细解释: 1. 什么是内核态和用户态? 内核态&#…...
win10离线环境下配置wsl2和vscode远程开发环境
win10离线环境下配置wsl2和vscode远程开发环境 环境文件准备wsl文件准备vscode文件准备 内网环境部署wsl环境部署vscode环境部署 迁移后Ubuntu中的程序无法启动 环境 内网机:win10、wsl1 文件准备 wsl文件准备 在外网机上的wsl安装Ubuntu24.04,直接在…...
AWS弹性容器服务(AWS Elastic Container Service,ECS)概述
李升伟 编译 标签:AWS | ECS | 容器 | Docker AWS弹性容器服务(AWS Elastic Container Service,ECS)简介 AWS弹性容器服务(ECS)是一项完全托管的容器编排服务,支持运行、管理和扩展容器化应用…...
Redis过期key处理、内存淘汰策略与缓存一致性策略实践方案
在现代的高性能应用开发中,Redis作为一款极为热门的内存数据库,其快速的读写性能和丰富的数据结构使其在缓存、消息队列等诸多领域得到了广泛应用。然而,在实际使用过程中,处理好Redis过期key、选择合适的内存淘汰策略以及确保缓存…...
@linux系统SSL证书转换(Openssl转换PFX)
在Linux中,你可以使用OpenSSL工具将PFX/P12格式的证书转换为单独的CRT(证书)、KEY(私钥)文件以及提取证书链 1. 提取私钥文件(.key) openssl pkcs12 -in your_certificate.pfx -nocerts -out private.key -nodes系统会…...
