DAC: A Dynamic Attention-aware Approach for Task-Agnostic Prompt Compression¶
会议: ACL 2025
arXiv: 2507.11942
代码: https://github.com/QQQ-yi/DAC
领域: 模型压缩 / LLM效率
关键词: prompt compression, attention score, information entropy, task-agnostic, long context
一句话总结¶
DAC 提出动态注意力感知的 prompt 压缩方法,通过融合信息熵和注意力分数作为 token 重要性度量,并动态感知压缩过程中的熵偏移来进行细粒度压缩,在 LongBench 上比 SOTA 方法提升平均 1.33 分。
研究背景与动机¶
- 领域现状:Prompt 压缩通过减少输入 token 数来降低 LLM 的计算和内存开销。任务无关的 prompt 压缩利用语言冗余性移除低信息量 token(如 LLMLingua 使用信息熵作为度量)。任务相关方法(如 LLMLingua2)需要额外训练分类模型且泛化性有限。
- 现有痛点:(1) 现有基于信息熵的方法忽略了注意力关键 token——这些 token 不一定有高熵但对模型理解至关重要(信息熵和注意力分数的 Pearson 相关仅 0.095);(2) 压缩过程中存在熵偏移——前驱 token 被移除后,后续 token 的信息熵会显著变化,静态方法无法捕获这种动态变化。
- 核心矛盾:仅靠信息熵评估 token 重要性不充分,注意力关键 token 可能被错误移除;压缩是一个动态过程但被现有方法当作静态处理。
- 本文要解决什么? 更精准地识别低信息量 token 并处理压缩过程中的熵变化。
- 切入角度:融合信息熵和注意力分数两种信号,并引入迭代动态更新机制。
- 核心idea一句话:结合注意力分数和信息熵作为 token 重要性度量,通过迭代动态更新被影响 token 的熵来实现更精准的压缩。
方法详解¶
整体框架¶
输入 prompt → 计算每个 token 的信息熵和累积注意力分数 → 融合两个度量得到综合重要性分数 → 按分数排序移除低重要性 token → 动态更新因移除而受影响的 token 的熵 → 迭代直到达到目标压缩率。
关键设计¶
- 注意力感知度量(Attention-aware Metric):
- 做什么:融合信息熵和注意力分数作为 token 重要性度量
- 两种融合方式:加法融合 \(M_t^a = (1-\alpha) \cdot I_t(x) + \alpha \cdot \overline{s_t}\);乘法融合 \(M_t^m = I_t(x) \cdot \overline{s_t}\)
- 注意力分数计算:对所有层所有头的累积注意力分数取均值
-
设计动机:实验发现移除注意力关键 token 后性能降低甚至低于随机压缩,证明仅靠熵不足
-
动态熵偏移感知(Dynamic Entropy Shift Detection):
- 做什么:在压缩过程中迭代更新受影响 token 的信息熵
- 核心观察:当某 token 的前驱 token 被移除时,该 token 的信息熵可能发生显著变化——原本低熵的 token 可能变为高熵
- 方法:每轮压缩后,检测哪些 token 的前驱被移除,重新计算这些 token 的信息熵,更新重要性分数
-
设计动机:高压缩率下(τ↑),熵偏移更严重(Pearson 相关降低),动态方法在高压缩率下尤为重要
-
迭代压缩流程:
- 将压缩过程分为多轮
- 每轮移除一部分低重要性 token
- 更新受影响 token 的熵和重要性分数
- 重复直到达到目标压缩率
实验关键数据¶
主实验:LongBench(16 任务平均)¶
| 方法 | 压缩率 0.5 | 压缩率 0.3 | 压缩率 0.2 |
|---|---|---|---|
| 无压缩 | 基线 | 基线 | 基线 |
| LLMLingua | 较低 | 明显下降 | 大幅下降 |
| LLMLingua2 | 较好 | SOTA前 | - |
| DAC | +4.03 vs LLMLingua | +1.33 vs SOTA | 最佳 |
消融实验¶
| 配置 | LongBench F1 | 说明 |
|---|---|---|
| 仅信息熵 | 基线 | 类似 LLMLingua |
| 仅注意力分数 | 低于基线 | 注意力分数单独用不够 |
| 加法融合(静态) | 提升明显 | 融合有效 |
| 加法融合(动态) | 最佳 | 动态更新进一步提升 |
| 乘法融合 | 接近加法 | 两种融合效果相当 |
| w/o 注意力关键 token | 低于随机 | 证明注意力关键 token 重要 |
关键发现¶
- 注意力关键 token 不等于高熵 token:Pearson 相关仅 0.095,很多注意力关键 token 是低熵的,纯熵方法会错误移除它们
- 移除注意力关键 token 比随机压缩还差:这是一个强有力的证据,说明注意力分数包含熵以外的重要信息
- 动态更新在高压缩率下更重要:压缩率从 0.9→0.5 时,原始熵和压缩后熵的 Pearson 相关显著下降
- 跨模型泛化:在 Qwen2 和 LLaMA3 系列上都表现一致
- 任务无关:在 QA、摘要、代码完成等多种任务上均有效
亮点与洞察¶
- 直觉验证:通过精确实验证明了"被注意力机制重视的 token 必须保留"这一直觉,并量化了忽略它们的后果(甚至比随机差)
- 动态感知的实用性:压缩是一个序列依赖的过程,移除一个 token 会影响后续 token 的信息量。这个洞察虽然直观但被所有先前方法忽略
- 无训练方法:不需要额外训练压缩模型(vs LLMLingua2 需要 GPT-4 蒸馏数据训练),更通用
- 可应用于黑盒 LLM:压缩后的 prompt 仍是自然语言 hard prompt,可用于 API-only 模型
局限性 / 可改进方向¶
- 需要访问 LLM 内部注意力分数,不适用于完全黑盒(只能 API 调用)的场景
- 动态迭代更新增加了压缩本身的计算开销
- 注意力分数需要在所有层和头上取均值,不同层的重要性可能不同(未加权)
- 未与 soft prompt 方法(GIST token、ICAE)做对比
相关工作与启发¶
- vs LLMLingua (Jiang et al., 2023): LLMLingua 仅用信息熵作为度量,DAC 添加了注意力分数并引入动态更新,提升 4.03 分
- vs LLMLingua2 (Pan et al., 2024): LLMLingua2 训练专门分类模型做压缩,但泛化性受训练数据限制。DAC 无需训练
- vs H2O (Zhang et al., 2023): H2O 用累积注意力分数做 KV cache 剪枝,启发了 DAC 将注意力分数引入 prompt 压缩
评分¶
- 新颖性: ⭐⭐⭐⭐ 融合注意力分数+动态熵更新的思路新颖,两个观察有说服力
- 实验充分度: ⭐⭐⭐⭐ 多数据集多模型跨任务,消融完整
- 写作质量: ⭐⭐⭐⭐ 观察→方法→验证逻辑清晰
- 价值: ⭐⭐⭐⭐ 对长上下文场景的 prompt 压缩有实用价值