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

【大模型】Bert应对超长文本

一、常见的长文本处理策略

  1. 截断 (Truncation)

    • 最简单粗暴:只保留最前面(或最后面)的 512 token,超出部分舍弃。
    • 优点:实现极其简单;缺点:极易丢失关键信息,影响性能。
  2. 滑动窗口 (Sliding Window)

    • 将全文切分为多个长度 ≤ 512 的重叠不重叠的 chunks,每个 chunk 前后加入 [CLS]…[SEP]
    • 分别对每个 chunk 做推理,得到每段的 logits 或表示,再通过 平均/最大池化 或者更复杂的 加权聚合 得到全文级输出。
  3. 层次化编码 (Hierarchical Encoding)

    • 先把文档拆成若干小段,用 BERT(或 RoBERTa)提取每段的 [CLS] 向量;
    • 再把这些段级向量送入第二层 Transformer(或 BiLSTM、CNN)编码,全局聚合后再接分类/回归头。
  4. 稀疏/局部+全局注意力 (Sparse & Global Attention)

    • 直接改动 Transformer 架构,引入滑动窗口注意力、稀疏全局 token 等机制,使得全序列 L L L的计算复杂度从 O ( L 2 ) O(L^2) O(L2)降到 O ( L ) O(L) O(L) O ( L log ⁡ L ) O(L\log L) O(LlogL)
    • 代表模型:Longformer(局部+全局注意力)和 BigBird(稀疏+全局+随机注意力)

二、BELT:”BERT For Longer Texts“ 方法

BELT 是对 滑动窗口 策略的一个标准化封装,实现了 Devlin 在 BERT 原作者讨论区提出的“多 chunk + 聚合”思路,核心特点如下:

  1. 无须改动模型架构

    • 直接复用任意 Hugging Face 上的预训练 BERT/RoBERTa;
    • 不像 Longformer/BigBird 那样需要从零预训练新的稀疏注意力模型。
  2. 自动切分与聚合

    • 文本先被 tokenizer 分成 L L L个 token,再按用户配置的 chunk_sizestrideminimal_chunk_size 切分成若干小 chunk;
    • 每个 chunk 前后自动加上 [CLS][SEP],并 pad 到 512;
    • 将所有 chunk 组成形状 (num_chunks, 512)的大批次,送入 BERT,一次性并行推理。
  3. 多种聚合策略

    • 对每个 chunk 输出的 logits 或者 [CLS] 向量,可使用 平均 (mean)最大 (max)加权 等多种方式聚合,得到对全文的最终预测概率或表示。
  4. 支持微调 (Fine-tuning)

    • 在训练阶段,BELT 同样对所有 chunks 进行反向传播,保证模型能针对长文本场景优化。
    • 用户只需调用 .fit().predict_scores() 等高层 API,即可完成长文本分类或回归。

BELT 与其他方法的比较

特性BELTLongformer / BigBird层次化编码 (ToBERT 等)
架构改动无(原生 BERT)需预训练或下载专用模型需额外设计第二层编码器
预训练成本中等
实现复杂度较高较高
资源可用性任意 Hugging Face BERT 系列模型资源较少自行实现
聚合灵活度多种 pool 策略模型内置全局 token自行设计

三、Longformer:专为长文本设计的稀疏自注意力

Longformer(Beltagy et al., 2020)在经典 Transformer 自注意力的 O ( L 2 ) O(L^2) O(L2)计算和内存瓶颈上做了关键优化,引入“滑动窗口 + 全局 token”机制,使其能高效处理数千甚至上万 token 的序列。

  • Longformer-base / Longformer-large:默认最大长度为 4096 tokens
  • 通过微调权重、调整位置编码等,可以扩展到 8192、16384 甚至 32768 tokens

1. 核心思想

  1. 局部滑动窗口注意力(Sliding Window Attention)
    • 每个 token 只与固定宽度 www 的邻近 token 计算注意力(例如前后各 256 token),复杂度降为 O ( L × w ) O(L × w) O(L×w)
  2. 全局注意力(Global Attention)
    • 针对少数关键 token(如 [CLS]、问题中的特殊标记),允许它们与整个序列所有 token 互相计算注意力,保证长距离依赖也能被捕捉。
  3. 稀疏模式可组合
    • 既可以只用滑动窗口,也可以混合随机稀疏、池化注意力等其他模式,但最经典的是“window + global”双轨设计。

2. 优势

  • 线性扩展:计算和内存开销 O ( L × w ) O(L × w) O(L×w),远低于 BERT 的 O ( L 2 ) O(L^2) O(L2)
  • 长依赖捕捉:通过全局 token,不丢失对关键位置(如问题开头、文档大纲)的全局信息。
  • 应用广泛:在长文档分类、法律文件理解、医学报告分析、长对话建模等场景表现优异。

四、与 BERT 在长文本处理上的优化对比

特性原生 BERT + 滑动窗口 / BELTLongformer
架构改动无,直接复用标准 BERT需重新预训练带稀疏注意力模式的 Transformer
注意力计算复杂度 O ( L 2 ) O(L^2) O(L2),实际用时取决于 chunk 数 × 512² O ( L × w + G × L ) O(L × w + G × L) O(L×w+G×L) w w w为窗口大小, G G G为全局 token 数)
长距离依赖建模依赖滑动窗口重叠 + 聚合策略,依然是局部视野本身支持全局注意力,关键 token 可跨全序列交互
输入长度限制受限于 512 token/chunk,需要手动切分与聚合支持数千至上万 token,单次前向即可处理长上下文
预训练成本零(直接用已有 BERT 检索模型)高(需从头或大规模语料上重新训练)
实现与部署复杂度低:只需一层切分与池化逻辑较高:需在框架中集成稀疏注意力算子
下游速度与资源多 chunk 推理,整体耗时与 chunk 数线性增长单次推理但注意力模式复杂,耗时线性增长
http://www.xdnf.cn/news/10121.html

相关文章:

  • 比较二维结构的尺寸分布
  • 基于 HT for Web 的轻量化 3D 数字孪生数据中心解决方案
  • SPL 轻量级多源混算实践 4 - 查询 MongoDB
  • python官网的lambda知识点总结
  • Linux分区与文件系统选择:EXT4与XFS深度解析
  • 老旧设备数据采集破局 AI图像解析如何让质检LIMS系统焕发新生
  • c++数据结构10——map结构详解
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(30):みます
  • 边缘计算网关在管网压力远程调控中的通信协议配置
  • Spine工具入门教程2之导入
  • 第十九章 正则表达式
  • Predixy的docker化
  • Python训练营打卡Day40
  • Golang——2、基本数据类型和运算符
  • MySQL-8.0.42 主从延迟常见原因及解决方法
  • PDF文件转换之输出指定页到新的 PDF 文件
  • java类与类之间的关系
  • 黑马k8s(十七)
  • KVM——CPU独占
  • 几个易混淆的不定积分公式记忆方法
  • 如何解决MySQL Workbench中的错误Error Code: 1175
  • USB充电检测仪-2.USB充电检测仪硬件设计
  • 写作-- 复合句练习
  • Python Day38
  • 特伦斯 S75 电钢琴:重塑音乐感知,臻享艺术之境
  • ADUM3201ARZ-RL7在混合动力电池监控中的25kV/μs CMTI与系统级ESD防护设计
  • Tornado WebSocket实时聊天实例
  • 58-dify案例分享-用 Dify 工作流 搭建数学错题本,考试错题秒变提分神器-同类型题生成篇
  • PHP学习笔记(十一)
  • 顶会新热门:机器学习可解释性