当前位置: 首页 > 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 可以获取全局信息。

相关文章:

  • 自注意力(Self-Attention)和位置编码
  • ByteArrayOutputStream 类详解
  • 在Java中,什么是checked exception(即compile-time exception、编译时异常)?
  • 【学习笔记】机器学习(Machine Learning) | 第五章(3)| 分类与逻辑回归
  • Go小技巧易错点100例(三十)
  • DEX平台引领风尚 XBIT让数字资产回归简单与透明
  • 乐视系列玩机------乐视pro3精英版-x722的一些刷机救砖教程与固件资源
  • Gateway网关:路由和鉴权
  • Android控件View、ImageView、WebView用法
  • QT 在圆的边界画出圆
  • Python打造智能化多目标车辆跟踪系统:从理论到实践
  • LeetCode 热题 100 70. 爬楼梯
  • python读取图片自动旋转的问题解决
  • 深入解析:删除有序数组中的重复项 II——巧用双指针实现条件筛选
  • 【Leetcode 每日一题 - 补卡】838. 推多米诺
  • 掌握流量管理:利用 EKS Ingress 和 AWS 负载均衡器控制器
  • 用户模块 - IP归属地技术方案
  • TCP/IP协议深度解析:从分层架构到TCP核心机制
  • MySQL 复合查询
  • Spring AMQP源码解析
  • 牛市早报|“五一”假期预计跨区域人员流动量累计14.67亿人次
  • “高校领域突出问题系统整治”已启动,聚焦招生、基建、师德等重点
  • 巴基斯坦宣布禁止与印度的进口贸易
  • 文旅局局长回应游客住家里:“作为一个宣恩市民我也会这么做”
  • 韩国经济副总理崔相穆宣布辞职
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题