大模型面试题29:稀疏注意力是什么?


一、稀疏注意力是什么?

1. 原始注意力的"痛点"

想象你在一个有10000人的大派对 上,你需要和每个人握手、聊天,才能了解整个派对的情况。

这就像 Transformer 的原始注意力机制

  • 每个"词"(Token)都要和所有其他词计算关系(注意力分数)。
  • 如果句子长度是 L,计算量就是 L × L(平方级)。
  • L 很大时(比如 10000),计算量会爆炸(1亿次运算),速度超慢,还特别占内存。

2. 稀疏注意力的"聪明做法"

稀疏注意力的核心思想是:

不是所有人都需要认识,只和重要的人聊天就行!

比如:

  • 只和身边的人聊(局部窗口):你只关注前后几个人,比如前后 50 人。
  • 只找关键人物聊(全局Token):派对主持人、明星、领导这些人,你必须和他们聊。
  • 随机认识几个陌生人(随机注意力):偶尔找几个不认识的人,扩大社交圈。

这样一来,计算量就从 L × L 降到了 L × 常数(比如 L × 100),速度大大提升。


3. 稀疏注意力的好处

  • 更快:计算量减少,模型训练和推理速度提升。
  • 更省内存:不需要存储巨大的注意力矩阵。
  • 能处理更长的文本:比如一本书、一篇长论文,甚至整个代码库。

二、稍微深入一点:稀疏注意力的常见类型

现在我们用**"派对社交策略"**来类比几种常见的稀疏注意力:

1. 局部窗口注意力(Local Window)

  • 做法 :每个词只关注它前后 w 个词(比如 w=256)。
  • 类比:在派对上,你只和你桌子附近的人聊天。
  • 优点 :简单、高效,适合处理有局部依赖的数据(比如语言、代码)。
  • 缺点:长距离关系可能捕捉不到。

2. 全局注意力(Global Attention)

  • 做法 :选几个"特殊词"(比如句子开头的 [CLS]、标题词),让它们能关注所有词;其他词只关注局部。
  • 类比:派对主持人可以和所有人聊天,其他人只和周围人聊。
  • 优点:既能处理局部依赖,又能捕捉全局关系。
  • 缺点:特殊词的选择需要人工设计。

3. 随机注意力(Random Attention)

  • 做法:每个词除了关注局部窗口,还随机选几个其他词关注。
  • 类比:除了和身边人聊天,偶尔随机找几个人认识一下。
  • 优点:增加长距离连接的机会,提高模型的表达能力。
  • 缺点:随机性可能引入噪声。

4. 局部敏感哈希注意力(LSH Attention)

  • 做法:用一种"哈希"方法,把相似的词分到同一个"小组",每个词只和同组的词计算注意力。
  • 类比:派对按兴趣分组(比如"AI组"、"音乐组"),你只和同组的人聊天。
  • 优点:能高效捕捉语义相似的长距离依赖。
  • 缺点:哈希函数的设计比较复杂。

5. 低秩投影注意力(Linformer)

  • 做法:用一个小矩阵把 Key 和 Value 压缩,减少计算量。
  • 类比:派对上,你不需要记住每个人的名字,只需要记住几个"代表"的名字。
  • 优点:理论优雅,完全兼容原始 Transformer。
  • 缺点:压缩可能损失一些信息。

三、再深入一点:稀疏注意力的核心优势

1. 复杂度对比

  • 原始注意力O(L²)(平方级)
  • 稀疏注意力O(L × w)(线性级,w 是窗口大小或哈希桶数)

举例

  • L = 10000,原始注意力需要 10000 × 10000 = 1亿 次运算。
  • 稀疏注意力如果 w = 100,只需要 10000 × 100 = 100万 次运算(快 100 倍)。

2. 适用场景

  • 长文本处理:比如一本书、一篇长论文、整个代码库。
  • 高分辨率图像:每个像素点只关注周围区域。
  • 语音识别:长音频序列的局部依赖建模。

四、常见稀疏注意力模型速查表

模型 核心思想 优点 缺点
Longformer 局部窗口 + 全局Token 简单高效,支持超长文本 长距离依赖较弱
BigBird 局部 + 全局 + 随机 兼顾局部和全局,效果好 随机部分可能引入噪声
Reformer LSH哈希分组 高效捕捉语义相似依赖 哈希函数设计复杂
Linformer 低秩投影压缩 理论优雅,兼容原始架构 压缩可能损失信息
Sparse Transformer 块稀疏 + 混合模式 灵活,可定制稀疏结构 实现复杂

五、总结

小白一句话总结:

稀疏注意力就是让模型"选择性地关注重要信息",而不是"和所有人都打交道",从而让模型在处理长文本时更快、更省内存。

技术一句话总结:

稀疏注意力通过限制注意力计算的范围(局部窗口、全局Token、哈希分组等),将复杂度从 O(L²) 降至 O(L × w),是处理超长序列的关键技术。


相关推荐
臭东西的学习笔记10 小时前
论文学习——机器学习引导的蛋白质工程
人工智能·学习·机器学习
大王小生11 小时前
说说CSV文件和C#解析csv文件的几种方式
人工智能·c#·csv·csvhelper·csvreader
m0_4626052211 小时前
第G3周:CGAN入门|生成手势图像
人工智能
bubiyoushang88811 小时前
基于LSTM神经网络的短期风速预测实现方案
人工智能·神经网络·lstm
中烟创新11 小时前
烟草专卖文书生成智能体与法规案卷评查智能体获评“年度技术最佳实践奖”
人工智能
得一录11 小时前
大模型中的多模态知识
人工智能·aigc
Github掘金计划11 小时前
Claude Work 开源平替来了:让 AI 代理从“终端命令“变成“产品体验“
人工智能·开源
ghgxm52012 小时前
Fastapi_00_学习方向 ——无编程基础如何用AI实现APP生成
人工智能·学习·fastapi
就这个丶调调12 小时前
VLLM部署全部参数详解及其作用说明
深度学习·模型部署·vllm·参数配置
余俊晖12 小时前
3秒实现语音克隆的Qwen3-TTS的Qwen-TTS-Tokenizer和方法架构概览
人工智能·语音识别