ICLR 2020 | Reformer ,一种高效的Transformer

2020 年 4 月 10 日 AI科技评论


本文介绍的是ICLR2020入选 Oral 论文《Reformer: The Efficient Transformer》,作者来自UC 伯克利和谷歌大脑。


作者 | 李光明

编辑 | 丛  末




论文地址:https://openreview.net/pdf?id=rkgNKkHtvB



Transformer是NLP中广为应用的成熟技术,在许多任务中取得了骄人的成绩,尤其是长序列文本上表现突出,但却极其耗费算力和内存资源,Transformer网络一层的参数量约0.5B,需要2G的内存空间,单层网络的Transformer在单台机器上尚可满足,但鉴于以下考虑,整个Transformer网络所需要的资源是惊人的:

  • 一个N层的网络需要的内存资源要多于一层所需内存的N倍,因为同时需要存储激活结果,在反向传播时使用。
  • Transformer前馈全连接神经网络的宽度(神经单元数)要比attention激活的宽度(可理解为embedding的size)多,需要更多的内存消耗。
  • 对一个长度为L的序列,Attention层的复杂度是,这对长序列文本处理是无法接受的。

针对上述问题,篇文章通过下面几项技术解决上面提到的几个问题:

  • 使用可逆残差层取代标准残差层,在训练阶段只需要存储一层的激活结果而不是N层(N是网络层数)(消除了网络中N的倍数)。
  • 分离前馈全连接层的激活部分,分区块进行处理,消除对内存的消耗。
  • 使用局部敏感哈希(Local-Sensitive Hashing, LSH)技术把计算attention部分的复杂度(主要来自于点乘)从降至(其中L代表序列长度)。

1


LSH Attention
Transformer的注意力计算公式(encoder和decoder相同)如下:
不妨假设Q, K, V的 shape 都是[ ],计算复杂度主要来源于 ,其 shape为[ ],处理64k长度的序列时,即使   为1,一个64k * 64k的 float矩阵需要16G内存,这通常是不切实际的。
其实, 矩阵并不需要全部存储在内存中,只需要计算每个query  存储在内存中,反向传播梯度时,再重新计算一次即可,虽然低效,但能够节省内存(文中将此方法作为实验阶段的baseline)。
进一步分析,其实并不需要计算 和全部keys的结果,因为点乘的最大值会在softmax之后得到最大的权重,从而在attention的结果中影响最大,因此只需要关心与 相近的key即可(得到较大的点乘值),这样可以大幅提升效率。LSH是寻找最近邻的有效手段,它会赋予每个向量一个Hash值,并且相近的向量会大概率获得相同的Hash值,相距较远的向量则不同。


上图是LSH的一个简单示意图,在示意图的上部分,x和y不属于近邻,所以在三次随意旋转后,有两次投影都不一样;而在示意图的下部分,x和y相距很近,在三次的随意旋转后,三次都投影都一样,这就是LSH的基本原理。
为计算LSH attention,首先重写 的一次attention计算如下:
其中 表示 需要关注的key集合, 是分区函数(可以理解成softmax的分母),为了书写方便,这里省去了 。为了批处理方便,把公式进一步修改为:

其中 是比 更大的集合(可以理解成全集),从公式可以看出,如果不属于 都被置为正无穷( 趋近于0),相当于对应的 key 被 mask 掉了。LSH 的作用就是生成 ,仅限与 在同一个 Hash 桶中的 key 才会参与 attention 计算,满足:

下图的 分别表示传统的系数attention矩阵,以及根据Hash分桶排序后的attention矩阵,从图中可以看出Hash值分桶可能发生不均匀的情况(跨多个桶的批处理是比较困难的),而且一个桶内的queries和keys数量也不一定相等,甚至有可能存在桶中只有queries而没有keys的情况。
为了解决这个问题,首先通过 确保 。接下来根据桶号和桶内序列位置对 queries 进行双层排序,排序后可以得到一个新的排序 ,排序后的 attention 矩阵,同一个桶的将聚集在对角线附近,如下图c所示(Q=K,文中的设定,实验阶段会验证此设定不会造成太大影响),接下来可以定义一种批处理方法,使得排序后的 m 个连续的块相互关联,如下图d所示,关联规则是后面的块只需要往前看一个块,并对 设置如下:
其中 (认为桶的长度超过平均桶长度两倍的概率很小)

LSH attention的整个处理流程如下图所示:

单个Hash函数仍然存在较小概率导致相似的item不能分到相同的桶里,可以通过多轮Hash函数避免这个问题,多轮Hash使用不同的Hash函数 ,有:

其中

多轮Hash过程可以并行。

2


可逆Transformer

可逆残差网络的思路是在反向传播梯度时,仅依赖模型参数,就可以利用后续网络层恢复任何给定层的激活结果,从而节省内存空间。标准的残差层是从一个输入 到一个输出  的映射 ,而可逆层的输入输出都是成对的:  ,计算公式如下:

逆向过程通过减残差实现:

将可逆残差网络的思想应用到 Transformer 中,充分结合 Attention 层和 Feed-Forward 层,上式中的 变成 Attention 层, 变成 Feed-Forward 层,于是有:


3


分块

Transformer 前馈网络的中间向量维度 甚至更高维度,依然非常占用内存;其实,序列中不同位置的文本可以完全独立计算,因此可以拆分成多个区块并行计算:

前述BP过程的可逆操作也可以分块并行。

4


实验
实验阶段会使用 imagenet64 和 enwik8-64K 两个数据集,依次验证可逆层和共享 Q-K(Q = K)不会对模型效果造成影响,进而分析验证 Hash Attention 和整个 Reformer 架构的结果。下图的困惑度曲线(信息论中衡量概率分布预测的指标,此处用来评价模型好坏)展示了共享 Q-K 对比独立的 Q-K (左)和可逆层(右)对比正常残差层在两个数据集上的效果,从图中可知共享 Q-K 和可逆层的使用并没有导致模型准度的降低。

下图展示了LSH Attention的效果,随着hash函数量的增加,LSH Attention的精度损失随之减少,当hash函数量达到8个时,基本与full attention的效果持平。

上图同时说明了hash函数量(可视为一个超参数)会影响Reformer整体效果,同样也会影响Reformer的性能,下图展示了hash函数量对性能的影响:

随着序列长度的不断增加,full attention模型变得越来越慢,而Reformer基本变化不大,提速效果非常明显。


ICLR 2020 系列论文解读

0、ICLR 2020 会议动态报道


疫情严重,ICLR2020 将举办虚拟会议,非洲首次 AI 国际顶会就此泡汤

疫情影响,ICLR 突然改为线上模式,2020年将成为顶会变革之年吗?

火爆的图机器学习,ICLR 2020上有哪些研究趋势?


1、直播


回放 | 华为诺亚方舟ICLR满分论文:基于强化学习的因果发现



2、Oral
01. Oral | 一种镜像生成式机器翻译模型:MGNMT
02. Oral | 额外高斯先验目标,缓解负多样性无知
03. Oral | 引入额外门控运算,LSTM稍做修改,性能便堪比Transformer-XL
04. Oral | 并行蒙卡树搜索,性能无损,线性加速,勇闯「消消乐」1000关!
05. Oral | 元强化学习迎来一盆冷水: 不比元Q学习好多少
06. Oral | 用群卷积建立深度、等变的胶囊网络
07. Oral | 谷歌推出分布式强化学习框架SEED,性能“完爆”IMPALA,可扩展数千台机器,还很便宜

3、Spotlight
01. Spotlight | 模型参数这么多,泛化能力为什么还能这么强?
02. Spotlight | 公平与精确同样重要!CMU提出学习公平表征方法,实现算法公平

03. Spotlight | 组合泛化能力太差?用深度学习融合组合求解器试试

04. Spotlight | 加速NAS,仅用0.1秒完成搜索

05. Spotlight | 华盛顿大学:图像分类中对可实现攻击的防御(视频解读)

06. Spotlight | 超越传统,基于图神经网络的归纳矩阵补全


4、Poster

01. Poster | 华为诺亚:巧妙思想,NAS与「对抗」结合,速率提高11倍

02. Poster | 抛开卷积,多头自注意力能够表达任何卷积操作
03. Poster | NAS 太难了,搜索结果堪比随机采样!华为给出 6 条建议
04.  Poster | 清华提 NExT 框架,用「神经元执行树」学习可解释性
05. Poster | 谷歌最新研究:用“复合散度”量化模型合成泛化能力
06. Poster | 完胜 BERT,谷歌最佳 NLP 预训练模型开源,单卡训练仅需 4 天
07. Poster |  FSNet:利用卷积核概要进行深度卷积神经网络的压缩
08. Poster | "同步平均教学"框架为无监督学习提供更鲁棒的伪标签
09. Poster | 快速神经网络自适应技术





阅读原文,直达 “ICLR 2020" 专题
登录查看更多
0

相关内容

局部敏感哈希算法
【ICLR 2019】双曲注意力网络,Hyperbolic  Attention Network
专知会员服务
82+阅读 · 2020年6月21日
专知会员服务
44+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
Reformer:一个高效的 Transformer
TensorFlow
9+阅读 · 2020年2月13日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
进一步改进GPT和BERT:使用Transformer的语言模型
机器之心
16+阅读 · 2019年5月1日
已删除
将门创投
11+阅读 · 2019年4月26日
论文浅尝 | LightRNN:存储和计算高效的 RNN
开放知识图谱
3+阅读 · 2018年12月26日
从Seq2seq到Attention模型到Self Attention(二)
量化投资与机器学习
22+阅读 · 2018年10月9日
从 Encoder 到 Decoder 实现 Seq2Seq 模型
AI研习社
10+阅读 · 2018年2月10日
基于注意力机制的图卷积网络
科技创新与创业
73+阅读 · 2017年11月8日
Question Generation by Transformers
Arxiv
5+阅读 · 2019年9月14日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Star-Transformer
Arxiv
5+阅读 · 2019年2月28日
Arxiv
3+阅读 · 2018年5月11日
VIP会员
相关资讯
Reformer:一个高效的 Transformer
TensorFlow
9+阅读 · 2020年2月13日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
进一步改进GPT和BERT:使用Transformer的语言模型
机器之心
16+阅读 · 2019年5月1日
已删除
将门创投
11+阅读 · 2019年4月26日
论文浅尝 | LightRNN:存储和计算高效的 RNN
开放知识图谱
3+阅读 · 2018年12月26日
从Seq2seq到Attention模型到Self Attention(二)
量化投资与机器学习
22+阅读 · 2018年10月9日
从 Encoder 到 Decoder 实现 Seq2Seq 模型
AI研习社
10+阅读 · 2018年2月10日
基于注意力机制的图卷积网络
科技创新与创业
73+阅读 · 2017年11月8日
相关论文
Top
微信扫码咨询专知VIP会员