总结:
清华大学和阿里联合发布论文使用BERT解决长文本问题。bert在长文本处理一般分为三种方法:截断法、Pooling法、压缩法。本文用的是效果最好的压缩法。
摘要
BERT不能处理长文本,因为它的内存和时间消耗呈二次增长。解决这个问题的最自然的方法,如用滑动窗口对文本进行切片,或者简化transformer,使用不充分的长范围attention,或者需要定制的CUDA内核。BERT的最大长度限制提醒我们人类工作记忆的容量是有限的(5个~9个区块),那么人类是如何认知长文本的呢?本文提出的CogLTX 框架基于Baddeley提出的认知理论,通过训练一个判断模型来识别关键句子,并将其串接进行推理,并通过排练和衰减实现多步骤推理。由于相关性注释通常是不可用的,我们建议使用干预来创建监督。作为一种通用算法,CogLTX在不依赖于文本长度的内存开销情况下,在各种下游任务上优于或获得与SOTA模型相当的结果。
背景
长文本的挑战。长文本的挑战。对长文本的直接和表面障碍是在BERT[12]中预先训练的最大位置嵌入通常为512。然而,即使提供了更大位置的嵌入,内存消耗也是难以承受的,因为所有的激活都存储在训练期间的反向传播。例如,一个1500-token文本需要大约14.6GB的内存才能运行bert -即使批量大小为1,也很大,超过了普通gpu的容量(例如,1个token文本)。11GB的RTX 2080ti)。此外,O(L2)空间复杂度意味着随着文本长度L的增加而快速增加。
相关的工作。滑动窗口法缺乏远距离关注。均值池、max-池或额外的MLP或LSTM来聚合每个窗口的结果,但这些方法在长距离交互时仍然很弱,需要O(5122·L/512) = O(512L)空间,这在实践中仍然太大,无法在批量大小为1的RTX 2080ti上训练2500令牌文本的BERT-large。此外,这些晚聚合方法主要是对分类进行优化,而其他任务,如广度提取,输出L BERT值,需要O(L2)空间进行自注意聚合。
CogLTX方法:
CogLTX的这个基本假设是“对于大多数NLP任务来说,文本中的几个关键句子存储了足够和必要的信息来完成任务”。
在CogLTX中,MemRecall和两个BERTs的联合训练是必不可少的。如图2所示,MemRecall是利用判断模型检索关键块的算法,在推理过程中将关键块送入推理机完成任务。
文本分类
数据集和设置。文本分类是自然语言处理中最常见的任务之一,它对主题、情感、意图等进行分析是必不可少的。我们在经典的20个新闻组[22]上进行实验,该新闻组包含来自20个类的18,846个文档。我们给罗伯塔安排了6个时代的CogLTX。
结果。表3表明,CogLTX的相关性标签是由Glove[34]初始化的,它的性能优于其他基线,包括先前尝试从滑动窗口[33]聚合[CLS]池结果的结果。此外,基于MLP或LSTM的聚合既不能对长文本进行端到端训练。
Ablation的研究。
(1)由于20个新闻组中的文本长度差异很大(见图5),我们只在大于512的文本上进一步测试性能
(2)基于Glove的初始化虽然提供了较好的相关性标签,但由于没有进行干预调整,仍然导致准确率下降了2.2%。
(3) Bm25初始化基于常用语,由于标签名较短,只初始化了14.2%的训练样本,如sports.baseball。通过干预和逐步训练推理器推断相关句子,准确率达到86.1%。 ?
参考:
1.论文地址:https://proceedings.neurips.cc/paper/2020/file/96671501524948bc3937b4b30d0e57b9-Paper.pdf
2.代码地址:https://github.com/Sleepychord/CogLTX
|