[Big Bird]论文解读:Big Bird: Transformers for Longer Sequences

news2024/12/24 16:51:16

文章目录

      • 1 介绍
      • 2 模型架构
      • 3 结果

论文:Big Bird: Transformers for Longer Sequences
作者:Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed
时间:2021
地址:http://goo.gle/bigbird-transformer

1 介绍

结合attention mechanism的模型毫无疑问是NLP领域最热的模型,但是普通的注意力机制收到了平方次计算量的限制,为了解决这个问题,这里论文推出了BigBird,去结合sparse attention mechanism把平方次计算变为线性计算;

Big Bird保留了完全注意力机制的特性,同时论文还解释了全局token的用处,例如bert中的CLS,在sparse attention mechanism中可以对整体序列进行交互,利用这个模型可以在保持硬件不发生改变的情况下处理比原来高8x的序列长度,像QA任务和summarization任务这些长序列任务可以在Big Bird中得到显著的改善;

self-attention mechanism并不能够记忆sequence的顺序,在这个机制中,组成sequence的各个部分都是无序的,同时该机制是图灵完全的,可以伪装成人类,表现出和人类一致的智力水准;作者提出了两个问题,如何利用能少的计算获取完整的注意力机制的表达能力?sparse attention mechanism 能否保留full attention mechanism的表达力和灵活度;

作者从graph sparsification中找到灵感,当full-attention mechanism放缩到一定程度时,transformer的表达能力会失效;通过合理的放缩,作者提出了Big Bird模型,该模型主要由三个部分组成:

  • 部分注意整体序列的全局tokens
  • 所有注意邻近序列的局部tokens
  • 所有注意任意序列的随机tokens

该论文的主要成果是:

  • BigBird拥有transformer模型的所有已知的理论属性,同时证明了全局token可以表达整体 序列的能力;
  • BigBird可以处理长序列,并在长序列任务中达到了sota;
  • BigBird可以运用在处理基因序列上;

2 模型架构

在allevate the quadratic dependency上,有两种处理方式:

  • 第一种是用其他方法去绕过full-attention
  • 第二种是想其他办法去优化full-attention

BigBird很显然是第二种方法,下面是BIGBIRD的注意力机制架构:

从图中很容易就可以看出,这种方法和Longformer是差不多相同,但是作者提到了区别:首先Longformer中没有random attention;第二,Big Bird使用相对位置编码,而Longformer采用的是BERT的位置编码即learned absolute embedding;第三,BigBird对全局token使用的是CPC损失;

下面是注意力机制的一般形式,这个就看一下公式就好,加了一个残差连接:

这里Big Bird通过不去计算白色部分来加快计算;但是感觉有random的话加快不了多少,我感觉反而不如Longformer的膨胀处理方式;

在这里的话,random我个人认为是让模型有一定的获取全局信息的能力,但是能力不如full attention,近似于模糊处理,有这个能力一定是要比没有好的,所以有一定的提升是很正常的,但是这样一处理,感觉模型速度加快受到了部分限制,但总归是提升了吧;

这里全局注意力有两种方式:

第一种便是ITC机制,就是在矩阵中选择一些token作为全局token
第二种便是ETC机制,采取的方式是类似于bert中的cls方式,在序列上设置一些special token

在这里个人认为第二种ETC机制应该常用一些,我一直纳闷怎么显著加快训练,这里给了我答案:

对,就是用了分块矩阵的性质,把大矩阵变成小矩阵来计算,具体如图:

上面是full attention的效果图,可以看到没有空块,但是全部要计算;

这是计算对角阵的注意力权重,可以发现只需要相应的矩阵相乘就可以得到;

这是其计算的扩展,不需要计算空块,接下来只需要加上一个random模块就完美解决了;

如图,完美解决计算量的问题,我觉得Longformer也可以试一下,不过好像Longformer的优化要比这个要好;

最后得到的整体如下图:

妙!但是这样依赖随机矩阵就受到了一定的限制,不过是可以优化的;

3 结果

其采取的预训练方式为MLM;

模型结果如下:

可以发现,效果是可观的,random可以让sequence获得全局信息,在提升模型速度的同时,提升模型的性能;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1317466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 并发】三大特性

在 Java 的高并发中,对于线程并发问题的分析通常可以通过 2 个主核心进行分析 JMM 抽象内存模型和 Happens-Before 规则三大特性: 原子性, 有序性和可见性 JMM 抽象内存模型和 Happens-Before 规则, 前面我们讨论过了。这里讨论一下三大特性。 1 原子性 定义: 一个…

HarmonyOS4.0从零开始的开发教程17给您的应用添加通知

HarmonyOS(十五)给您的应用添加通知 通知介绍 通知旨在让用户以合适的方式及时获得有用的新消息,帮助用户高效地处理任务。应用可以通过通知接口发送通知消息,用户可以通过通知栏查看通知内容,也可以点击通知来打开应…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(一)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型(一) 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

Win11极速安装Tensorflow-gpu+CUDA+cudnn

文章目录 0.pip/conda换默认源1.Anacondapython虚拟环境2.安装CUDA以及cudnn测试tensorflow的GPU版本安装成功的办法 0.pip/conda换默认源 为了高效下载,建议先把默认源换了,很简单这里不再赘述。(我用梯子,所以没换源&#x1f6…

数据分析(一)(附带实例和源码)

一、主要目的: 主要利用Python包,如Numpy、Pandas和Scipy等常用分析工具并结合常用的统计量来进行数据的描述,把数据的特征和内在结构展现出来。熟悉在Python开发环境中支持数据分析的可用模块以及其中的方法,基于一定的样例数据…

【Java】使用递归的方法获取层级关系数据demo

使用递归来完善各种业务数据的层级关系的获取 引言:在Java开发中,我们通常会遇到层层递进的关系型数据的获取问题,有时是树状解构,或金字塔结构,怎么描述都行,错综复杂的关系在程序中还是可以理清的。 这…

服务器RAID配置及功能介绍

服务器RAID配置及功能介绍 一、RAID磁盘阵列详解1.RAID磁盘阵列介绍2.RAID 03.RAID14.RAID35.RAID56.RAID67.RAID 10总结阵列卡介绍 一、RAID磁盘阵列详解 1.RAID磁盘阵列介绍 ①是Redundant Array of lndependent Disks的缩写中文简称为独立冗余磁盘阵列。 ②把多块独立的物…

nginx_rtmp_module 之 ngx_rtmp_mp4_module 的mp4源码分析

一:整体代码函数预览 static ngx_int_t ngx_rtmp_mp4_postconfiguration(ngx_conf_t *cf) {ngx_rtmp_play_main_conf_t *pmcf;ngx_rtmp_play_fmt_t **pfmt, *fmt;pmcf ngx_rtmp_conf_get_module_main_conf(cf, ngx_rtmp_play_module);pfmt ngx_ar…

Prometheus 监控笔记(1):你真的会玩监控吗?

认识Prometheus Prometheus 是一种开源的系统和服务监控工具,最初由 SoundCloud 开发,后来成为继 Kubernetes 之后云原生生态系统中的一部分。在 Kubernetes 容器管理系统中,通常会搭配 Prometheus 进行监控,同时也支持多种 Expo…

Node.js安装教程

虽然网上Node.js的安装教程有很多,但是基本上都是千篇一律。虽然跟着网上内容安装,却总会遇到乱七八糟的问题。为此,我写下这篇文章,除了描述node的安装教程,还会解释这样安装的过程起到一个什么作用。 文章大致上分为…

visual studio 2019 移除/卸载项目已经如何再加载项目

文章目录 移除解决方案下的某个项目添加已移除的项目移除项目加载已卸载的项目注意事项 移除解决方案下的某个项目 在项目名称上,点击鼠标右键,弹出右键工具栏,找到 移除 功能。 然后鼠标左键点击 移除。 弹出的模态框,选择确定…

《点云处理》平面拟合

前言 在众多点云处理算法中,其中关于平面拟合的算法十分广泛。本篇内容主要是希望总结归纳各类点云平面拟合算法,并且将代码进行梳理保存。 环境: VS2019 PCL1.11.1 1.RANSAC 使用ransac对平面进行拟合是非常常见的用法,PCL…

josef约瑟 时间继电器 DS-23/C AC220V 10S柜内板前接线

系列型号: DS-21时间继电器 ;DS-22时间继电器; DS-23时间继电器;DS-24时间继电器; DS-21C时间继电器;DS-22C时间继电器; DS-23C时间继电器; DS-25时间继电器;DS-26…

Delphi 编译关闭时 Stack overflow 错误

本人工程文件,编译EXE文件,程序关闭时出现 Stack overflow 错误。网搜索一些解决办法:比如,加大堆栈...,均不能问题。虽然,生成的EXE文件,执行时,无任何问题。 Stack overflow 错误&…

【面试】测试/测开(NIG2)

145. linux打印前row行日志 参考&#xff1a;linux日志打印 前10行日志 head -n 10 xx.log后10行日志 tail -n 10 xx.log tail -10f xx.log使用sed命令 sed -n 9,10p xx.log #打印第9、10行使用awk命令 awk NR10 xx.log #打印第10行 awk NR>7 && NR<10 xx.log …

基于JSP+Servlet+Mysql的建设工程监管信息

基于JSPServletMysql的建设工程监管信息 一、系统介绍二、功能展示1.企业信息列表2.录入项目信息3.项目信息列表 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于JSPServlet的建设工程监管信息 项目架构&#xff1a;B/S架构 开发语言&#xff1a;…

IEEE、Sci-Hub

最近要写毕业论文&#xff0c;记录一下查询资料的网站。 IEEE&#xff08;Institute of Electrical and Electronics Engineers&#xff09;是世界上最大的专业技术协会之一&#xff0c;致力于推动电气和电子工程领域的创新和发展。IEEE成立于1884年&#xff0c;总部位于美国纽…

【公务员】资料分析——做题技巧

小分互换 1 2 50 % 1 3 33.3 % 1 4 25 % 1 5 20 % 1 6 16.7 % 1 7 14.3 % 1 8 12.5 % 1 9 11.1 % 1 10 10 % 1 11 9.1 % 1 12 8.3 % 1 13 7.7 % 1 14 7.1 % 1 15 6.7 % \frac 1250\% \quad \frac 1333.3\% \quad \frac 1425\% \quad \frac 1520\% \quad \frac 16…

基于CentOS7_安装Docker

基于CentOS7_安装Docker 配置网络&#xff0c;使其能ping通外网 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2下载repo文件 wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo更换…

基于Springboot的体育馆管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的体育馆管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…