推理链中的 Token 冗余与剪枝:消除无意义语气词对注意力权重的稀释

作者:醍醐实验室日期:2026/9/11

推理链中的 Token 冗余与剪枝:消除无意义语气词对注意力权重的稀释

随着大模型深度推理(Reasoning Models)能力的演进,生成超长思维链(Long-CoT)已经成为解决复杂数学、符号规划与长代码生成的标准范式。

然而,在审视模型输出的长达数千 Token 的推导轨迹时,我们经常会看到大量高度冗余的过渡性表达,例如:“Let me pause and think...”、“Wait, is this correct? Let's check again...”、“Hmm, let me consider another perspective...”。

这些口语化的语气词虽然在某种程度上模拟了人类的思考节奏,但从信息论与 Transformer 注意力计算的物理机理来看,无意义的冗余 Token 会在自注意力矩阵中形成严重的注意力扩散,显著稀释关键逻辑实体的表征权重,并造成 30%~50% 的推理 FLOPs 浪费

深入研究思维链中的 Token 冗余机理并进行动态剪枝,是实现极速低成本推理的关键。


一、语气词对注意力机制的物理侵蚀

在标准的因果多头注意力中,Softmax 归一化具有全局竞争性:

$$\alpha_{t, i} = \frac{\exp(Q_t K_i^T / \sqrt{d})}{\sum_{j=1}^t \exp(Q_t K_j^T / \sqrt{d})}$$

1[冗余 Token 导致的注意力权重被动稀释]
2关键题干约束: [变量 x > 0] (位置 5)
3真实代数推导: [方程 2x + 5 = 15] (位置 12)
4大量冗余语气: ["Let's see", "Wait", "Hmm", "Actually", "Let me check..."] (占据位置 13~150!)
5
6当生成第 151 步时:
7- 分母项累积了 130 多个低信息量语气词的 exp 点积得分;
8- 导致位置 5 的关键约束 [x > 0] 所分配到的有效注意力权重 alpha  0.35 骤降至 0.02!
9* 结果: 模型在冗余的自言自语中彻底遗忘了最初的几何边界约束。
10

二、Token 重要性评分的数学度量

为了准确识别并剪除思维链中的冗余 Token,可以从注意力流入(Attention Inflow)梯度显著性(Gradient Saliency) 两个维度定义 Token 的重要性得分 $I(z_i)$:

$$I_{\text{attn}}(z_i) = \frac{1}{T - i} \sum_{t=i+1}^T \sum_{h=1}^H \alpha_{t, i}^{(h)}$$

$$I_{\text{grad}}(z_i) = \left| \frac{\partial \mathcal{L}}{\partial \mathbf{e}_{z_i}} \right|_2$$

  • 高价值 Token:数学常数、变量符号、定理名称、方程操作符。后续所有时间步对其具有极高的持续注意力吸纳量;
  • 低价值冗余 Token:纯过渡性语气短语与格式占位符。其注意力流入量迅速归零,且梯度敏感度极低。

三、动态推理剪枝架构(Inference Pruning)

1[在线思维链压缩与剪枝流]
2自回归生成推理步骤
3       
4       
5【重要性评估过滤器 (Token Saliency Scorer)】
6  ├── 实时测量历史 Token 的注意力聚集度与熵贡献
7  └── 识别连续低熵冗余块 (如连续 20 个占位语气词)
8       
9       
10【动态 KV Cache 淘汰与上下文收缩】
11  ├──  KV Cache 物理块中剔除冗余 Token 对应的 Key/Value 向量
12  └── 释放显存槽位,重置因果位置索引
13

通过这一机制,模型在保留严密逻辑骨架的同时,推导序列长度被大幅压缩 40%,且首字与尾字之间的因果注意力通路更加纯净。


四、PyTorch 代码实战:思维链 Token 敏感度与注意力分析

以下代码构建了一个轻量级分析器,能够提取序列各 Token 的历史注意力吸纳强度并自动化筛选冗余索引。

1import torch
2import torch.nn.functional as F
3import numpy as np
4from typing import List, Tuple
5
6def analyze_token_importance(
7    tokens: List[str],
8    attn_matrix: torch.Tensor, # [NumHeads, SeqLen, SeqLen]
9    threshold_ratio: float = 0.3
10) -> Tuple[List[int], List[float]]:
11    """
12    计算各 Token 的全局重要性得分并标记可剪枝的冗余位置
13    """
14    H, L, _ = attn_matrix.shape
15    # 对多头取平均: [SeqLen, SeqLen]
16    avg_attn = attn_matrix.mean(dim=0)
17    
18    importance_scores = []
19    for i in range(L):
20        # 统计从第 i+1 步到最后一步对位置 i 的平均注意力流入量
21        if i < L - 1:
22            inflow = avg_attn[i+1:, i].mean().item()
23        else:
24            inflow = avg_attn[i, i].item()
25        importance_scores.append(inflow)
26        
27    mean_imp = np.mean(importance_scores)
28    prune_indices = [idx for idx, score in enumerate(importance_scores) if score < mean_imp * threshold_ratio]
29    
30    return prune_indices, importance_scores
31
32if __name__ == "__main__":
33    # 构造模拟序列
34    simulated_tokens = [
35        "已知", "x", "=", "5", "。", 
36        "让我", "仔细", "想一想", "哈", "。", # 冗余语气块 (索引 5~9)
37        "计算", "x", "^", "2", "得到", "25", "。"
38    ]
39    L = len(simulated_tokens)
40    
41    # 模拟注意力矩阵: 因果下三角
42    torch.manual_seed(42)
43    mock_attn = torch.tril(torch.rand(4, L, L))
44    # 强化关键变量 x (索引 1) 的注意力流入
45    mock_attn[:, :, 1] += 3.0
46    mock_attn = mock_attn / mock_attn.sum(dim=-1, keepdim=True)
47    
48    prune_idx, scores = analyze_token_importance(simulated_tokens, mock_attn, threshold_ratio=0.5)
49    
50    print("================ 思维链 Token 敏感度分析 ================")
51    for idx, (tok, score) in enumerate(zip(simulated_tokens, scores)):
52        status = "✂️ 建议剪枝" if idx in prune_idx else "💎 核心保留"
53        print(f"Token [{idx:02d}]: {tok:8s} | 累积重要性得分: {score:.4f} | {status}")
54    print("=======================================================")
55

五、工程实践与对齐建议

  1. SFT 阶段的“去废话”蒸馏
    • 在构建 Thinking 模型的微调数据时,应引入轻量级规则对标注数据中的无意义语气词进行预清洗,强制模型从一开始就习惯于输出高信息密度的紧凑逻辑链条;
  2. 推理引擎中的软剪枝(Soft-Prompt Masking)
    • 在使用 vLLM 部署长推理服务时,可以通过修改 FlashAttention 的注意力掩码(Mask),动态阻断注意力流向已标记为冗余的历史 Block,既保留了 KV Cache 的连续性,又消除了权重稀释。

推理链中的 Token 冗余与剪枝:消除无意义语气词对注意力权重的稀释》 是转载文章,点击查看原文


相关推荐


react-bits:从 36K stars 的“酷炫组件”,看动效如何成为 React 的可复用能力
吴琼琼2026/9/3

react-bits:从 36K stars 的“酷炫组件”,看动效如何成为 React 的可复用能力 打开一个视觉表现力强的网页,人们最先注意到的往往不是组件边界、状态管理或样式组织,而是“这个效果很酷”。文字浮现、背景变化、鼠标交互、内容切换,这些细节能让同样的信息架构呈现出完全不同的气质。 但前端开发里,“很酷”从来不是终点。 一个效果如果只能存在于单个页面的临时代码里,它带来的价值通常很短;如果它能够被抽象为可理解、可选择、可组合的组件,才有机会从一次视觉尝试变成稳定的开发能力。 rea


一条命令,十分钟:jeeflow 工作流应用的六语言一键部署
mldong2026/8/26

系列定位:jeeflow 系列第 9 篇(第三季「多语言联邦」第 1 篇) 平台:公众号 / 掘金(实用向:一键部署 + 选型) 素材版本:引擎 Java 1.8.18 / Go·Python·Node 1.8.20 / PHP 1.3.5 / Rust 1.0.5;一键部署脚本取自 mldong-website 前置阅读:第 8 篇 · 会签三兄弟:并行/串行/按比例的实现与取舍 一、先上结果 在任意一台装了 Docker 的 Linux 服务器上,执行一条命令: curl -fsSL h


Fiber 与 PHP 8.6 Polling API 异步初探
BingoGo2026/8/13

Fiber 与 PHP 8.6 Polling API 异步初探 几周前的一篇文章曾介绍 Polling API RFC,并将其定位为被低估的提案,原因主要在于:报道往往漏掉了真正的动机——那是内部 php_poll.h API,而非用户态的 Io\Poll 类。这一判断至今仍然成立。不过随后收到了不少类似"好吧,可它到底能用来做什么?"的反馈。这是个合理的问题,也正是本文要回答的问题。 时机也恰到好处。该 RFC 以 33 票赞成、1 票反对、4 票弃权通过,并于 6 月 3 日投票截止,实


鸿蒙掌上驾考宝典应用开发15:答题交互组件——Exam 与 SelectComponent 全解析
麦田ya2026/8/3

第15篇:答题交互组件——Exam 与 SelectComponent 全解析 一、引言 答题交互是驾考应用最核心的用户交互场景。DriverLicenseExam 项目的 Exam 组件和 SelectComponent 组件共同实现了完整的答题交互体验,包括试题展示、选项选择、答案判断、答题卡、倒计时等。本文将深入解析这两个组件的实现。 二、Exam 组件架构 2.1 组件职责 Exam 组件是考试页面的核心容器,负责: 管理试题列表(Swiper 滑动切换)展示倒计时(模拟考试)管理答题


[V2X]音频数据流图
墨染天玑2026/7/26

Playback / Recording / Voice 三种场景的音频数据流框图: #mermaid-svg-nAP2CEPsCFL66meU{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}


Day 008:Agent 记得越多越好吗?短期与长期记忆的底层逻辑
kisbad2026/7/18

系列: 100 天系统学习 AI Agent 开发 当前阶段: Agent 基础与环境搭建 今日目标: 搞懂短期记忆与长期记忆的核心差异,建立记忆治理机制。 AI Agent 大模型 Agent开发 LangGraph 很多刚接触 Agent 开发的同学,在加上数据库之后都会有一种错觉:“我的 Agent 终于拥有长期记忆了,它可以记住一切!” 但实操下来往往会遇到这种尴尬场景:学习助手如果每次都问“你学到第几天了”,会显得很智障;可如果它把你随口抱怨的一句“我最近不想学 Python”永久保


离线优先:无网络权限的鸿蒙 Flutter 应用设计
程序员小Pyy2026/7/10

在万物互联的时代,做一个"断网"应用反而是最激进、也最负责任的设计选择。本文以 E-Brufen 为例,从架构哲学、存储设计、代码实现到用户体验,全面探讨离线优先应用的构建方法。 一、为什么选择离线? 1.1 一句话:零权限 打开 E-Brufen 的 ohos/entry/src/main/module.json5,你会看到这样一行配置: "requestPermissions": [] 一个空数组。没有 ohos.permission.INTERNET、没有 ohos.p


定时任务(root)与 Web(www)权限冲突问题——使用 ACL 彻底解决
半桶水专家2026/7/2

在 Linux 服务器中,权限冲突问是一个非常常见的问题。 例如: Cron 定时任务:root 用户执行 PHP(Nginx + PHP-FPM):www-data 或 www 用户执行 Apache:apache 用户执行 Tomcat:tomcat 用户执行 两个不同用户需要共同读写同一目录。 很多人第一反应就是: chmod -R 777 data/ 虽然能解决问题,但非常不安全。 Linux 提供了更好的方案——ACL(Access Contr


MySQL 8.0 实现 JSON 字段全文检索 | ngram 分词支持单字/字母/中英文混合搜索
勿忘初心12212026/6/23

MySQL 8.0 实现 JSON 字段全文检索 | ngram 分词支持单字/字母/中英文混合搜索 前言一、业务场景二、技术痛点三、概念解释3.1 ngram 中日韩分词器3.2 生成列(Generated Column)3.3 全文索引(FULLTEXT INDEX)3.4 停用词表3.5 BOOLEAN MODE(布尔检索模式) 四、环境五、MySQL 全局配置(my.cnf / my.ini)5.1 完整配置文件5.2 重启 MySQL 服务5.3 验证配置是否生效 六、创


Claude Codde 入门教程—— 从零到独立完成项目
fa_lsyk2026/6/15

Claude Code 入门教程 适合人群:技术小白、编程初学者、对 AI 编程感兴趣的所有人 学习目标:读完本文后,你能够独立使用 Claude Code 完成一个完整的 OCP 项目 阅读时间:约 45-60 分钟 难度等级:★☆☆☆☆(零基础友好) 目录 前言:你即将拥有的"超能力"什么是 Claude Code?—— 你的 AI 编程伙伴安装 Claude Code —— 3 步搞定第一次对话 —— 跟 AI 说"你好"核心概念:理解 Claude Code 的"

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读