当前位置: 首页 > news >正文

Sliding Window Attention(Longformer)

最简单的自注意力大家肯定都会啦。

但这种全连接的自注意力(即每个 token 需要 attend 到输入序列中的所有其他 token)计算与内存开销是 O ( n 2 ) O(n^2) O(n2) 。为了缓解这个问题,研究者们提出了 Sliding Window Attention。

Sliding Window Attention

如果设置一个 window 大小为 k k k,那么每个 token 只与它前后相邻的 k k k 个 token 计算注意力。这样每个 token 的注意力只在局部范围内计算,计算复杂度从 O ( n 2 ) O(n^2) O(n2) 降低到了 O ( n k ) O(nk) O(nk)(通常 k ≪ n k \ll n kn)。

但问题来了:这种方式只能捕获局部依赖关系,不能直接获取长距离的信息。

堆叠多个 Sliding Window 层

有没有办法“间接”捕获远程依赖呢?

我们可以类比 CNN 中“感受野”的概念。通过堆叠多个 sliding window attention 层(比如 3 层,每层都有 window size k k k),第一个 token 的信息就可以被第三层的更远处的 token 捕获到。换句话说:

随着层数增加,感受野扩大,token 之间的间接信息流动也就可能发生。

Dilated Sliding Window Attention(膨胀窗口注意力)

进一步优化思路是:保持窗口大小不变,但每个 token 不再是关注它附近的连续 token,而是“跳跃”地关注,例如每隔 2 个或 4 个位置看一次。

这叫做 Dilated Sliding Window Attention,类似于 CNN 中的 dilated convolution。

它的好处是:在保持同样计算资源的情况下,感受野可以扩大。

但它的问题是:关注的是稀疏位置,可能忽略掉一些重要的局部细节信息。

Global Attention + Local Attention(Longformer 的核心)

为了解决局部不敏感的问题,Longformer 设计了 混合注意力模式:对大多数 token 只使用 Sliding Window Attention;对少数“重要的 token”(比如 [CLS] 或问题中的 token),使用 Global Attention,它们可以 attend 到所有其他 token,也可以被所有 token attend 到。

这种设计保留了局部建模的效率;又确保了关键 token 可以获取全局信息。

http://www.xdnf.cn/news/293671.html

相关文章:

  • R7打卡——糖尿病预测模型优化探索
  • 【STM32单片机】#13 RTC实时时钟
  • cpp学习笔记1--class
  • CloudCompare 中 ccDrawableObject
  • 在Java中,什么是checked exception(即compile-time exception、编译时异常)?
  • 基于DGI框架的最佳实践
  • 数字化工厂中央控制室驾驶舱系统 - Windows 部署笔记
  • 计算机体系结构 第九章
  • 不小心把当前的环境变量路径覆盖掉怎么办
  • Gemini 解释蓝图节点的提示词
  • Lesson 15 Good news
  • 功率放大器设计
  • 大模型基础(五):transformers库(下):快速分词器、自动配置类、快速微调
  • pytorch checkpointing
  • 交换机工作原理(MAC地址表、VLAN)
  • P4168 [Violet] 蒲公英 Solution
  • 生物化学笔记:神经生物学概论10 运动节律的控制 运动时脑内活动 运动系统疾病及其治疗(帕金森、亨廷顿)
  • 【OSPF协议深度解析】从原理到企业级网络部署
  • 第15章:双星入侵与时间的迷雾
  • AIGC工具平台-图片转换线稿
  • 「OC」源码学习——对象的底层探索
  • 混搭文化数字社会学家解读,创新理解AI社会学网络社会学与数字人类学最新研究进展社会结构社会分层数字文化数字经济
  • 网络编程套接字(一)
  • PriorityQueue
  • 使用 Semantic Kernel 快速对接国产大模型实战指南(DeepSeek/Qwen/GLM)
  • Web前端开发:Grid 布局(网格布局)
  • ts学习(1)
  • 2024年408真题及答案
  • C++ 外观模式详解
  • php8 枚举使用教程