NeurIPS2020|ConvBERT:通过基于跨度的动态卷积改善BERT

在这里插入图片描述

本文由新加坡国立大学等联合提出,提出ConvBERT提高BERT的性能。

BERT及其变体预训练语言模型在各种自然语言理解任务中都取得了很高的性能。但是,BERT严重依赖于全局自注意力块,因此会有很大的内存和计算成本。

尽管它的所有注意力头会查询整个输入序列以从全局角度生成注意力特征图,但某些注意力头仅需要学习局部依赖关系,这意味着存在计算冗余。
因此,作者提出了一种基于跨度的动态卷积,以取代这些自注意力头来直接对局部模型进行建模
依赖性。卷积头,以及其余的自注意力头形成了一个混合注意力块,在全局和局部上下文学习中都更加有效。
最后作者为BERT配备了这种混合注意力设计并构建了ConvBERT模型。

引言

预训练语言模型对于改善许多自然语言处理任务具有强大的作用。大多数预训练模型都遵循BERT
架构严重依赖多头自注意力来学习综合表示。作者发现:
1)尽管BERT中的自注意力模块是高度非局部的运算符,但是由于自然语言的固有属性,很大一部分的注意力头确实学习了局部依赖关系;
2)在对下游任务进行微调时删除一些注意力信息不会降低性能。
这两个发现表明当前模型设计中存在大量的计算冗余。在这项工作中,作者旨在解决这个冗余问题,并进一步改善BERT 的效率。
因此作者考虑这样一个问题:是否可以通过使用局部操作来替换注意力头来减少注意力头的冗余?
卷积在提取局部特征方面非常成功,因此使用卷积层作为自注意力的更有效补充,以解决自然语言中的局部依赖性

作者将卷积整合到自注意力中,以形成结合了两种操作优势的混合注意力机制。自注意力会使用所有输入token来生成注意力权重,以捕获全局依赖性,而作者希望执行局部注意力“自我注意”,即获取当前token的局部范围以生成范围的“注意力权重”,进而捕获局部依存关系。为了实现这一目标,动态卷积不是一个很好的选择,它可以为捕获不同token的局部依赖关系提供更高的灵活性,而不是部署具有为所有输入token共享的固定参数的标准卷积。
在这里插入图片描述

​ 图1 注意力权重和卷积核的生成

如图1b所示,动态卷积使用内核生成器为不同的输入token生成不同的内核。但是,这种动态卷积不能在不同上下文中区分相同token并生成相同内核(例如,图1b中的三个“ can”)。

因此,作者开发了基于跨度的动态卷积,这种卷积通过接收输入跨度而不是单个token来产生更多的自适应卷积核,这样可以区分在不同上下文中针对相同token生成的内核。

例如,如图1c所示,基于跨度的动态卷积为不同的“ can” token生成不同的内核。通过基于跨度的动态卷积,可以构建混合注意力,进而改善常规的自注意力,提高了预训练效率以及更好的捕获全局和局部信息的性能。

为了进一步提高性能和效率,作者向BERT添加了以下新的体系结构设计:

首先,瓶颈结构被设计用来将输入token嵌入到较低维度的空间中以进行自注意力来减少注意力头的数量。这减轻了注意力集中的冗余并提高了效率。

其次,BERT中的前馈模块由两个完全连接的线性层组成,并且它们之间具有激活关系,但是内层的维数设置比输入和输出的维数高得多。带来大量的参数数量和计算量。

因此,作者为前馈模块设计了分组线性算子,该算子在不损害表示能力的情况下减少了参数。将这些新颖性结合在一起,称为ConvBERT。

方法

首先详细阐述如何通过重新思考自注意力和动态卷积来学习局部依赖性时自注意头的冗余。

然后,解释对局部依赖项建模的基于跨度的动态卷积,最后介绍由混合注意力块构建的ConvBERT模型。

自注意力 自注意力模块是BERT的基本构建模块,它可以有效地对token输入序列中的全局依赖性进行建模。如图3a所示,给定输入 X ∈ R n × d X∈R^{n×d} XRn×d,其中d是隐藏维,n是token数,自注意力模块将三个线性变换应用于输入X并将它们嵌入键K, 分别查询Q和值V,其中 K , Q , V ∈ R n × d K,Q,V∈R^{n×d} KQVRn×d

假设有H个自注意力头。键,查询和值嵌入均匀地分为 d k = d / H d_k = d / H d

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值