跳转至

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 分。

研究背景与动机

  1. 领域现状:Prompt 压缩通过减少输入 token 数来降低 LLM 的计算和内存开销。任务无关的 prompt 压缩利用语言冗余性移除低信息量 token(如 LLMLingua 使用信息熵作为度量)。任务相关方法(如 LLMLingua2)需要额外训练分类模型且泛化性有限。
  2. 现有痛点:(1) 现有基于信息熵的方法忽略了注意力关键 token——这些 token 不一定有高熵但对模型理解至关重要(信息熵和注意力分数的 Pearson 相关仅 0.095);(2) 压缩过程中存在熵偏移——前驱 token 被移除后,后续 token 的信息熵会显著变化,静态方法无法捕获这种动态变化。
  3. 核心矛盾:仅靠信息熵评估 token 重要性不充分,注意力关键 token 可能被错误移除;压缩是一个动态过程但被现有方法当作静态处理。
  4. 本文要解决什么? 更精准地识别低信息量 token 并处理压缩过程中的熵变化。
  5. 切入角度:融合信息熵和注意力分数两种信号,并引入迭代动态更新机制。
  6. 核心idea一句话:结合注意力分数和信息熵作为 token 重要性度量,通过迭代动态更新被影响 token 的熵来实现更精准的压缩。

方法详解

整体框架

输入 prompt → 计算每个 token 的信息熵和累积注意力分数 → 融合两个度量得到综合重要性分数 → 按分数排序移除低重要性 token → 动态更新因移除而受影响的 token 的熵 → 迭代直到达到目标压缩率。

关键设计

  1. 注意力感知度量(Attention-aware Metric):
  2. 做什么:融合信息熵和注意力分数作为 token 重要性度量
  3. 两种融合方式:加法融合 \(M_t^a = (1-\alpha) \cdot I_t(x) + \alpha \cdot \overline{s_t}\);乘法融合 \(M_t^m = I_t(x) \cdot \overline{s_t}\)
  4. 注意力分数计算:对所有层所有头的累积注意力分数取均值
  5. 设计动机:实验发现移除注意力关键 token 后性能降低甚至低于随机压缩,证明仅靠熵不足

  6. 动态熵偏移感知(Dynamic Entropy Shift Detection):

  7. 做什么:在压缩过程中迭代更新受影响 token 的信息熵
  8. 核心观察:当某 token 的前驱 token 被移除时,该 token 的信息熵可能发生显著变化——原本低熵的 token 可能变为高熵
  9. 方法:每轮压缩后,检测哪些 token 的前驱被移除,重新计算这些 token 的信息熵,更新重要性分数
  10. 设计动机:高压缩率下(τ↑),熵偏移更严重(Pearson 相关降低),动态方法在高压缩率下尤为重要

  11. 迭代压缩流程:

  12. 将压缩过程分为多轮
  13. 每轮移除一部分低重要性 token
  14. 更新受影响 token 的熵和重要性分数
  15. 重复直到达到目标压缩率

实验关键数据

主实验: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 压缩有实用价值