生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

CogLTX:将 BERT 应用于长文本

  • 2020-12-08
  • 本文字数:2319 字

    阅读完需:约 8 分钟

CogLTX:将BERT应用于长文本

背景


自从谷歌的 BERT 预训练模型横空出世,预训练 - 下游任务微调的方式便成了自然语言处理任务的灵丹妙药。然而,复杂度高、显存消耗大等问题一直困扰着 BERT 等预训练模型的优化;由于 BERT 中 Transformer(多层自注意力)关于输入文本长度 L 有的 O () 的时间空间复杂度,长文本消耗显存陡然增加。想象一下,一位工程师兴致勃勃地将数据在设计好的下游任务上微调,满怀期待地盼望着结果的提升,却因为其中的一些长文本使得显存溢出或超过位置嵌入(position embedding)最大长度,该是一件多么沮丧的事情。


解决这个问题最直接的方法是滑动窗口(sliding window)对每个 512(通常 BERT 位置嵌入的最大长度)字符的窗口分别预测,最终合并不同窗口的结果的方式随着具体下游任务的不同略有差异,例如阅读理解问答可以输出各段中总评分最高的小段(span)作为答案。然而,如果问题需要长程注意力,也就是两个关键的句子分布在段落中相距较远位置的时候,这种方法的效果就会大打折扣,下图就是一个例子。



解决这个问题的另一种思路是优化 Transformer 结构,这一条思路的工作有很多,例如 Longformer、BlockBert、最近的 BigBird 等…… 但是这些工作通常只是将文本长度从 512 扩展几倍(基于现有的硬件条件),让 BERT 一次 “看到” 更多的文本;然而,人类并不需要如此强的瞬时阅读能力 —— 实际上人类同时在工作记忆里存储的元素通常只有 5-7 个 —— 也能阅读并理解长文本,那么人类是如何做到的呢?

认知中的工作记忆和调度


“工作记忆的核心是一个中央处理机制,它协调来自于多种来源的信息”, 并且 “它发挥一个有限容量的注意力系统的作用,这个系统能选择和操作控制过程和策略”, 这是工作记忆的提出者 Baddeley 在他 1992 年《Science》著作中的论断。事实上,人脑正是通过回忆和注意力,协调长期记忆和短期记忆(工作记忆)的使用策略来完成对长文本的理解。下图是分层注意力机制的图解,工作记忆从当前的感知记忆空间或者长期记忆中抽取关键信息进行深层理解,然而这些信息如果没有被不断重演(rehearsal)就会在大约 5-15s 后逐渐忘掉,剩余的有用的信息来进行继续的推理。



CogLTX 的工作流程


受到人的认知过程启发,我们用同样的方法来处理长文本。如果将 BERT 的 512 输入字符限制比作人的工作记忆,那么既然人思考问题时能够找到关键的少量信息,并在工作记忆中推理出结果,BERT 的 512 也应该远远足够,关键是对于特定的问题,我们要最终用的真正关键的那部分信息。


因此,CogLTX 遵循一种特别简单直观的范式,即 抽取关键的句子 => 通过 BERT 得到答案 这样的两步流程。常见的几种任务都可以用这种范式来解决。比如下图列举了语段抽取、序列级别任务、字词级别任务的处理方法。



在这里,我们将完成任务要训练的 BERT 称为推理机(reasoner),解决问题的关键语段记为 z,CogLTX 通过一个被称为 “MemRecall” 的过程,如同人类调度工作记忆一样的方式来抽取关键的语段 z。

MemRecall 关键信息抽取


对于关键信息的认识本身也是智能的重要部分,这并非易事。最直观的想法是通过信息检索的办法(例如 BM25)来抽取关键句,但是仔细一想就会发现这其实是不可行的,因为下游任务的不确定性,无法建模成信息检索的形式。例如,文本分类任务如果用 BM25 去检索,则无法定义查询(query)是什么。因此抽取的模型也要与任务息息相关。


其次就是直接检索的方式过于粗糙,同时对于无法处理多跳推理的信息。而人在工作记忆中的思考是一个时序的过程,会不断忘记被错误检索的信息而将空间留给新信息。因此,我们模仿这样的过程设计了 MemRecall,其核心是一个对于每个字词进行相关度打分的评分机(judge)模型,也用 BERT 实现。MemRecall 的过程如下图所示。



我们首先将长文本切块,用现有的关键信息去连接每一块,通过评分机获取块平均相似度得分,其中最高分的块被放入“工作记忆”——但是这是暂时的,正如人脑的工作记忆一样,我们如果只对重要的信息进行重演,其他信息就会很快忘掉——在 MemRecall 中我们将这些最高分的块一起通过评分机,信息充分交换后再进行评分,并且“忘掉”那些得分不高的块。新的关键信息将用来重复这一过程,完成多步推理。

训练


在模型训练时,我们考虑两种情况:第一种是阅读理解问答这样的任务,由于信息句可以从答案所在句推断出来,因此是监督学习。此时评分机和推理机的训练(finetuning)都比较简单,只需将真正的关键句和一些负样本信息句组合,然后像正常 BERT 那样训练即可;第二种是文本分类这种,数据集中往往不会提供关键句的标注,这就需要我们自己推断。关键句的一个特性是,如果缺少关键句将不能推断到正确答案,因此我们先用词向量等方法初始化关键句标签后,再训练中调整关键句标签,如果某个句子剔出后损失函数骤然增加那么就必然是关键句,如果可有可无则不是,根据这个方法在调整关键句标签后可重新进行下一轮训练,具体算法如下:



从隐变量的角度,如果认为关键句是隐变量,那么 CogLTX 的算法则可以看成是由于隐变量 z 取值空间离散且较大,选择的一种点估计的近似。

实验


文章在 NewsQA、HotpotQA 问答数据集,20NewsGroup 文本分类和 Alibaba 淘外文本多标签分类等几个任务上进行试验,结果均超过或类似于目前最好的模型效果,具体数据在论文中列举。


同时,CogLTX 牺牲了部分推理的时间,换取了与文本长度无关的训练空间开销。下图展示了 BERT-large 在 batch size 为 1 的时候的时空开销对比,可以看出 CogLTX(橙色)消耗的空间是固定的。



小结


对于 BERT 处理长文本时遇到的困境,通常的做法都会考虑轻量化 Transformer 的思路,然而如果能从人类处理信息的方式得到启发,另辟蹊径从下游任务微调的流程上考虑,更直接地解决这个问题。

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-12-08 17:582697

评论

发布
暂无评论
发现更多内容

运维 | Nginx Proxy Manager反向代理工具

Appleex

运维 nginx反向代理

代码检查过程中为什么需要涉及到编译呢?

华为云PaaS服务小智

云计算 软件开发 华为云 代码检查

Perforce发布《2023游戏开发与设计现状报告》,为游戏开发行业提供参考

龙智—DevSecOps解决方案

perforce 游戏开发与设计现状报告

全国5000家金融单位将加入信创建设大军,未来数年发展关键期

没有用户名丶

Programming abstractions in C阅读笔记:p166-p175

codists

用 TDengine 3.0 碰到“内存泄露”?定位问题原因很关键

TDengine

时序数据库 内存泄漏 ​TDengine

Python 元组完全指南2

小万哥

Python 程序员 软件 后端 开发

HarmonyOS应用窗口管理(Stage模型)

HarmonyOS开发者

HarmonyOS

BOE(京东方)“照亮成长路”百所智慧教室落地偏远地区 携手故宫启动百堂公益课

科技热闻

精彩议程抢先看 | 第四届 CID 大会线下参会报名启动!

OpenAnolis小助手

云计算 架构 深圳 龙蜥社区 CID

六个为Rust构建的IDE

树上有只程序猿

rust语言

从问界单日7000台,聊聊智能汽车成熟时

脑极体

问界

Eclipse、IntelliJ IDEA、PyCharm三种IDE区别

小齐写代码

一款Redis可视化工具:ARDM | 京东云技术团队

京东科技开发者

redis 可视化工具 企业号10月PK榜 ARDM

数字时代 低代码赋能新零售系统

力软低代码开发平台

源码, AST, IR, CFG之间的关系梳理

华为云PaaS服务小智

云计算 软件开发 华为云

深入浅出MySQL MRR(Multi-Range Read)

Java随想录

Java MySQL

什么是K-均值算法

小魏写代码

如何正确使用多线程和锁机制来构建可靠的程序

华为云开发者联盟

后端 多线程 开发 华为云 华为云开发者联盟

深入解析时序引擎预计算功能

KaiwuDB

预计算 KaiwuDB 时序引擎

IntelliJ IDEA安装教程

小齐写代码

软件测试/测试开发丨App自动化测试-弹窗异常处理

测试人

Python 软件测试 异常处理 弹窗

六个实用的软件开发步骤

高端章鱼哥

敏捷开发 软件开发 瀑布开发

OpenHarmony组件内状态变量使用:@State装饰器

OpenHarmony开发者

OpenHarmony

聊聊什么是厂商绑定

冯骐

开源 供应链 战略思考 技术 优化体系 厂商绑定

80、90童年回忆之小霸王游戏机网页版

echeverra

小霸王

Databend 开源周报第 113 期

Databend

TE智库|《刻画未来的道路:中国服务机器人产业研究报告》发布

TE智库

服务机器人

当 FineReport 遇见 CnosDB

CnosDB

开源 时序数据库 CnosDB FineReport

Hugging "Hugging Face"

数由科技

低代码 huggingface 大语言模型 huggingfists 多模态模型

全流程多元化适配服务,OPPO Android 14 适配率高达98%!

科技热闻

CogLTX:将BERT应用于长文本_大数据_学术头条_InfoQ精选文章