LongFormer:用稀疏自注意力拓展模型文本容纳量
论文标题:
Longformer: The Long-Document Transformer
论文作者:
Iz Beltagy (AllenAI), Matthew E. Peters (AllenAI), Arman Cohan (AllenAI)
论文链接:
https://arxiv.org/pdf/2004.05150.pdf
代码链接:
https://github.com/allenai/longformer
尽管Self-Attention可以建模长距离文本,但由于时空复杂度都为平方级,从而它无法一次处理较长的文本。
BERT的处理方法是,将文本截断为512的长度,如此一来,虽然模型可以分段处理,但数据的预处理也是相当麻烦的。
本文采用局部自注意力和全局自注意力结合的方式(或简称为稀疏注意力),同时为其进行了CUDA优化,从而使得模型最大能够容纳长度上万的文本,同时还能实现更好的结果。
自注意力机制的缺陷
众所周知,Transformer 的 Self-Attention 有一大优点一大缺点:优点是它能在理论上建模任意长的文本,缺点是实践中过长的文本会导致内存爆炸。
这是因为,自注意力的时空复杂度都是平方级的,文本越长,空间消耗就显著更大,所以在实际使用的时候,通常把句子长度截短到512,然后分段送入模型。
这种方法虽然可以在一定程度上解决内存不足的问题,但是:
它回避了Self-Attention的固有缺陷,只是一种暂缓之计;
这种方法非常麻烦,需要预处理数据集;
很多任务都包含大量长文本,实际需要要求我们能够一次性处理它们。
基于以上现状和自注意力的固有缺陷,本文提出结合局部自注意力和全局自注意力,在提高效率的同时又不失效果。
和之前的许多工作相比,本文没有在具体技术上有太大创新,但是本文首次将这种稀疏自注意力应用到了三种包含长文本的任务上:问答、共指消解和文档分类,并证明了其有效性。
此外,本文还基于TVM实现了稀疏自注意力的CUDA优化并开源,造福广大研究者!
总的来说,本文有如下贡献:
通过大量实验(语言模型、问答、共指消解、文档分类)证明了稀疏自注意力的有效性,甚至优于原版自注意力;
基于TVM实现了稀疏自注意力的CUDA优化,加快了实际应用的使用速度;
开源代码,便于复现论文结果。
稀疏自注意力
在此之前已经有许多关于稀疏自注意力的工作,本文使用简单的CNN局部自注意力实现,如下图所示。
图1是原版自注意力(每个字符都能关注其他所有字符),图2是基于CNN的局部自注意力(以窗口的形式移动,每个窗口内的字符可以互相关注),图3是基于Dilated CNN的局部自注意力(跨越式滑动窗口),图4是结合局部自注意力和全局自注意力的稀疏自注意力。
其中,“全局”的意思是,让小部分字符既能关注其他所有字符,又能让其他所有字符关注它。如果这些字符的数量很小,那么整体也可以看成是O(n)复杂度的。
在具体使用的时候,本文设置两套映射矩阵Q,K,V,一套用于CNN局部自注意力Q_s,K_s,V_s,另一套用于全局注意力Q_g,K_g,V_g。
同时,在模型底层使用较小的CNN窗口大小,以建模局部信息;在高层使用较大的CNN大小,以扩大感受野。
使用图4的稀疏自注意力,可以看到,有大量的“白色方块”,表示不需要关注,而随着文本长度的增加,这种白色方块的数量会呈平方级增加,所以实际上我们需要的“绿色方块”数量是很少的。
为了让稀疏自注意力适应当前深度学习框架,本文还基于TVM实现了对其的CUDA优化,极大提升了实际使用的效率。
下图是使用CUDA优化的稀疏自注意力(Longformer)、原版自注意力(Full Self-attention)和未使用CUDA优化的稀疏自注意力(Naive Pytorch)在时间复杂度和空间复杂度上的比较。
可以看到,LongFormer能够取得最佳的时空复杂度。
实验
本文在语言模型、问答、共指消解和文档分类任务上进行实验,验证LongFormer在长文本上的效果。
语言模型任务
语言模型使用数据集text8和enwik8,按阶段训练LongFormer。在测评时,在长度为32256长的文本上进行,其他设置详见原文。
下表是实验结果。可以看到,在参数量相近的情况下,Longformer取得了略好的结果,但由于一次可容纳的最大文本长度大大增加了,测试的时间也会有所缩短(表中未给出)。
下表是LongFormer中局部自注意力窗口大小随模型深度变化情况带来的最终效果,可以看到,由底层到高层降低感受野的方法效果最差,而由底层到高层增加感受野的方法效果最好;并且为2个头使用Dilated的方法可以更好一些。
问答、共指消解与文档分类任务
在进行这三个任务之前,LongFormer首先需要预训练。为此,模型在RoBERTa上继续预训练,预训练语料主要包含了一些长文本。
在预训练之后,再在具体任务上微调。这里略去预训练细节,有兴趣的读者可以参考原文Section 5。
问答的数据集有WikiHop, TriviaQA和HotpotQA,共指消解的数据集有OntoNotes,文档分类的数据集有IMDB和Hyperpartisan。
问答的三个数据集都有很长的文本长度,RoBERTa需要对其切分,而LongFormer直接把一个问答任务中的问题和所有文档拼接起来,不需要再切分。
对另外两个任务也是同样的操作。基线模型是RoBERTa。
下面是在这三个任务上总的结果。
可以看到,LongFormer在这些任务上都或多或少超过了基线模型,尤其是在需要长距离上下文的数据集上,如WikiHop和Hyperpartisan。
下表是LongFormer在HotPotQA上的表现,当前该数据集表现最佳的模型是多阶段+图网络,而从表中可以看到,单阶段的LongFormer也能有69.5的F1值,二阶段的模型有71.4的F1值,已经比较接近当前最佳结果。
最后来看看因子分析实验,数据集为WikiHop。从表中可以看到,对LongFormer影响最大的是全局注意力、局部注意力和两套映射矩阵。
值得注意的是,当LongFormer和RoBERTa同样采用512的长度和原版自注意力时,效果还不仅RoBERTa,尽管LongFormer在更多的语料上预训练了,这说明LongFormer的效果增强并不来自于预训练。
小结
本文提出了一种综合的稀疏自注意力模型——LongFormer,利用局部自注意力和全局自注意力在大幅降低空间复杂度的情况下提高模型效果。
LongFormer可以直接吞进长文本,而不需要像BERT类模型一样对其强行截短,这就有利于那些需要建模长距离语义的任务。
在语言模型、问答、共指消解和文档分类任务上,LongFormer展现出了它强壮的一面,也为稀疏自注意力的研究带来新的可能性,我们期待它能在更多任务上取得好的表现。
????
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。
LongFormer:用稀疏自注意力拓展模型文本容纳量相关推荐
- 【论文写作分析】之一 《基于混合注意力Seq2seq模型的选项多标签分类》
[1] 参考论文信息 论文名称:<基于混合注意力Seq2seq模型的选项多标签分类> 发布期刊:<计算机工程与应用> 期刊信息:CSCD扩展 论文写作分析摘要: ...
- 论文浅尝 | 嵌入常识知识的注意力 LSTM 模型用于特定目标的基于侧面的情感分析...
MaY, Peng H, Cambria E. Targeted aspect-based sentiment analysis via embedding commonsense knowledge ...
- 激励反向传播的自上而下注意力神经模型
(推荐一个我自己做的普法公众号,大可说法律,有法律方面咨询的可以关注) 激励反向传播的自上而下注意力神经模型 (IJCV2018) Top-Down Neural Attention by Excit ...
- R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数、交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能
R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数.交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能 ...
- 【组合数学】非降路径问题 ( 非降路径问题概要说明 | 非降路径问题基本模型 | 非降路径问题拓展模型 1 非原点起点 | 非降路径问题拓展模型 2 有途经点 )
文章目录 一.非降路径问题 概要说明 二.非降路径问题 基本模型 二.非降路径问题 拓展模型 1 三.非降路径问题 拓展模型 2 组合恒等式参考博客 : [组合数学]二项式定理与组合恒等式 ( 二项式 ...
- 程序员的能力拓展模型
听人说了一个词儿,叫作"Comfirtable Zone",中文是"舒适区". 这个词儿让我瞬间联系到程序员的能力边界问题,我画了能力拓展模型图.如下: 我觉得 ...
- 转变思维!采用稀疏化加速 YoloV3 模型!省了 GPU !
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 你还 ...
- 【NLP】主题模型文本分类
自然语言处理之主题模型文本分类 LDA主题模型 1.主题模型(Topic Model) 主题模型是以非监督学习的方式对文集的隐含语义结构进行聚类的统计模型.主题模型主要被用于自然语言处理中的语义分析和 ...
- 四川大学计算机学院琚生根教授,基于卷积神经网络和自注意力机制的文本分类模型...
Abstract: The wordlevel shallow convolutional neural network (CNN) model has achieved good performa ...
最新文章
- 尝试引用已删除的函数_学Excel函数公式,你必须要掌握这些知识
- oracle 之 EXP、IMP 使用简介
- MATLAB-M文件
- 脚本语言和编程语言的区别
- MicroShift - 一个超轻量级 OpenShift 环境
- 《设计模式详解》行为型模式 - 备忘录模式
- Android内存、性能是程序永恒的话题
- python希尔伯特变换_Hilbert变换提取信号特征的Python实现
- 正则表达式(二)常用正则表达式——验证真实姓名
- VS2010如何打开VS2012的项目
- 关于浏览器被劫持主页的处理方法(完结版)
- 【JS】446- 你不知道的 map
- 所有最好的Google幻灯片键盘快捷键
- Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBean
- 把Maven本地仓库修改为阿里云仓库
- c语言函数指针 的定义方法,C语言 函数指针一(函数指针的定义)
- Yolov3模型使用教程
- 云南昆明主城区一在建工地围墙倒塌致2人死亡
- OKR文化:明确职责与庆功会
- Qt不使用unicode字符集
热门文章
- win7系统备份还原软件_收藏备用!操作系统的快速备份与还原技巧
- Socket心跳包异常检测的C语言实现,服务器与客户端代码案例
- 2014 Super Training #10 D 花生的序列 --DP
- C#如何判断质数(转)
- 计算机面试数据库基本知识,面试基础知识集合(python、计算机网络、操作系统、数据结构、数据库等杂记)...
- java arrays方法_Java工具类Arrays中不得不知的常用方法
- c语言 getchar_C语言gets输入问题
- 查linux有哪些task_Java面试手册:Linux高频考点
- linux 支持的字体命令,Linux设置显示中文和字体
- python图片二进制流转换成图片_python将图片二进制数据转换成Django file对象