上一篇Transformers Assemble(PART III)重点在transformer位置信息的改进,这一集挑选了几篇都带有「Sparse」的标签,主要关注点在于transformer结构的复杂度问题。先来看看都有哪些:

  • Sparse Transformer from OpenAI,NAACL 2019
  • Adaptively Sparse Transformers,EMNLP2019
  • Explcit Sparse Transformer from PKU

Generating Long Sequences with Sparse Transformers

来自OpenAI的工作,同样关注于原始Transformer的计算复杂度问题,尤其是在面对长序列输入的情况。为此,论文中将full attention进行分解,通过多个sparse attention来代替,在不牺牲性能的情况下降低复杂度至O(nn)O(n \sqrt{n})O(nn

)

下图是三种不同的注意力形式,其中上半部分表示一个6x6图像的像素之间相互attend,下半部分表示对应的connectivity matrix。

(a)原始Transformer的full attention;
(b)Strided Attention:这种方式主要应用于图像或者音频,每一个位置通过attend其对应的行和列来获取信息,两个head的具体表示为:第一个head用于attend该位置前面的lll个位置,第二个head用于attend间隔lll的位置(如果输入是图像lll为图像的宽,则attend对应的列):
Ai(1)={t,t+1,…,i}for t=max⁡(0,i−l)A_{i}^{(1)}=\{t, t+1, \ldots, i\} \text { for } t=\max (0, i-l) Ai(1)={t,t+1,,i}fort=max(0,il)Ai(2)={j:(i−j)modl=0}A_{i}^{(2)}=\{j:(i-j) \bmod l=0\} Ai(2)={j:(ij)modl=0}(c)Fixed Attention:这种方式主要应用于像文本之类没有周期性的数据,首先将文本分成固定长度的块,然后第一个head处理该块中该位置之前的所有元素,第二个head处理每个块的最后一部分的固定大小的部分。

Other Tricks

上面就是Attention主要的改进,文中还涉及了一些其他的tricks。

  • pre-activation residual block
    来自Identity mappings in deep residual networks可以使Transformer的训练更加容易
    H0=embed (X,We)Hk=Hk−1+resblock (Hk−1)y=softmax⁡(norm⁡(HN)Wout)\begin{aligned} H_{0} &=\text { embed }\left(X, W_{e}\right) \\ H_{k} &=H_{k-1}+\text { resblock }\left(H_{k-1}\right) \\ y=& \operatorname{softmax}\left(\operatorname{norm}\left(H_{N}\right) W_{\text {out}}\right) \end{aligned} H0Hky==embed(X,We)=Hk1+resblock(Hk1)softmax(norm(HN)Wout)其中resblock(H)的计算如下a(H)=dropout (attention (norm⁡(H)))b(H)=dropout⁡(ff(norm⁡(H+a(H))))resblock (H)=a(H)+b(H)\begin{aligned} a(H) &=\text { dropout }(\text { attention }(\operatorname{norm}(H))) \\ b(H) &=\operatorname{dropout}(\mathrm{ff}(\operatorname{norm}(H+a(H)))) \\ & \text { resblock }(H)=a(H)+b(H) \end{aligned} a(H)b(H)=dropout(attention(norm(H)))=dropout(ff(norm(H+a(H))))resblock(H)=a(H)+b(H)
  • Gradient check-pointing
  • Efficient block-sparse attention kernels
  • Mixed-precision training
reference
  • Code Here
  • openai sparse-transformer blog


Adaptively Sparse Transformers

这篇论文也是对vanilla Transformer的改进,提出了Adaptively Sparse Transformers (AST),优化的两个关键就在其名字中:

作者指出与先前的sparse transformer(就是上面两个~)研究不同的是,他们的这一方法可以关注在不连续的输入集合,如下图:

Sparse Attention

softmax函数所有结果都不为0,并且最终所有元素之和为1,这样的特性决定了相对重要的部分的权值会“缩水”。这一方向的研究很多,作者选用了最近提出的alpha-entmax:
α-entmax (z):=argmax⁡p∈Δdp⊤z+HαT(p)\alpha \text { -entmax }(\boldsymbol{z}):=\underset{\boldsymbol{p} \in \Delta^{d}}{\operatorname{argmax}} \boldsymbol{p}^{\top} \boldsymbol{z}+\mathrm{H}_{\boldsymbol{\alpha}}^{\mathrm{T}}(\boldsymbol{p}) α-entmax(z):=pΔdargmaxpz+HαT(p)

HαT(p):={1α(α−1)∑j(pj−pjα),α≠1−∑jpjlog⁡pj,α=1\mathrm{H}_{\alpha}^{\mathrm{T}}(\boldsymbol{p}):=\left\{\begin{array}{ll} {\frac{1}{\alpha(\alpha-1)} \sum_{j}\left(p_{j}-p_{j}^{\alpha}\right),} & {\alpha \neq 1} \\ {-\sum_{j} p_{j} \log p_{j},} & {\alpha=1} \end{array}\right. HαT(p):={α(α1)1j(pjpjα),jpjlogpj,α=1α=1

AST

对于Transformer类模型的功能至关重要的是,不同的head会捕获不同的语言现象,这让我们想到对于不同的head,使用不同的α\alphaα值,使其自适应地让一些head稀疏化,一些head更接近softmax。利用上面的α−entmax\alpha-entmaxαentmax替换原始的softmax函数后,将α\alphaα看成是与其他网络参数意义的可学习参数,通过随机梯度进行优化。但是通过梯度方法对其自动优化并不容易,然后作者在下面就开始一系列数学推导。。。

TODO

我实在是看不动了。。。
后面的实验和分析也非常有意思的。。。
大家记得看,我先溜了。。。
PS. 在油管上发现了作者的分享视频,放在reference里

Reference
  • Code Here
  • 作者分享视频


Explicit Sparse Transformer: Concentrated Attention Through Explicit Selection

Motivation和上一篇论文一样,如下图,对于文本I thanked him with all my heart, and I asked him, 'why are you helping me?',vanilla Transformer(蓝色标记)会对所有元素都有注意,而噪音的注意力会对效果产生影响;新提出的显式稀疏注意力机制(橙色标记)只会关注文本的topktopktopk个attention score最大的元素,从而移除无关信息。

具体实现也非常简单易于实现,且不会增加额外的内存和计算开销。

  1. 沿用vanilla transformer的attention计算公式得到attention score,
    P=QKTdP=\frac{Q K^{\mathrm{T}}}{\sqrt{d}} P=d

    QKT
  2. 假定分值越大的元素其相关性越大,计算Masking矩阵。找出PPP中每行的kkk个最大元素,记录其位置,并得到一个threshold vector,t=[t1,t2,⋯,tlQ]t=\left[t_{1}, t_{2}, \cdots, t_{l_{Q}}\right]t=[t1,t2,,tlQ]
  3. 将Making矩阵应用到原始PPP矩阵上,
    M(P,k)ij={Pijif Pij≥ti(k-th largest value of row i)−∞if Pij<ti(k-th largest value of row i)\mathcal{M}(P, k)_{i j}=\left\{\begin{array}{ll} {P_{i j}} & {\text { if } P_{i j} \geq t_{i}(k \text { -th largest value of row } i)} \\ {-\infty} & {\text { if } P_{i j}<t_{i}(k \text { -th largest value of row } i)} \end{array}\right. M(P,k)ij={PijifPijti(k-th largest value of rowi)ifPij<ti(k-th largest value of rowi)反向传播时,
    ∂Mij∂Pkl=0(i≠kor j≠l)∂Mij∂Pij={1if Pij≥ti(k−th largest value of row i)0if Pij<ti(k−th largest value of row i)\begin{aligned} &\frac{\partial M_{i j}}{\partial P_{k l}}=0 \quad(i \neq k \text { or } j \neq l)\\ &\frac{\partial M_{i j}}{\partial P_{i j}}=\left\{\begin{array}{ll} {1} & {\text { if } P_{i j} \geq t_{i}(k-\text { th largest value of row } i)} \\ {0} & {\text { if } P_{i j}<t_{i}(k-\text { th largest value of row } i)} \end{array}\right. \end{aligned} PklMij=0(i=korj=l)PijMij={10ifPijti(kth largest value of rowi)ifPij<ti(kth largest value of rowi)
  4. 归一化,
    A=softmax⁡(M(P,k))A=\operatorname{softmax}(\mathcal{M}(P, k)) A=softmax(M(P,k))反向传播时,
    ∂Aij∂Pkl=∑m=1lQ∑n=1lK∂Aij∂Mmn∂Mmn∂Pkl=∂Aij∂Mkl∂Mkl∂Pkl={∂Aij∂Mklif Pij≥ti(k-th largest value of row i)0if Pij<ti(k-th largest value of row i)\begin{aligned} \frac{\partial A_{i j}}{\partial P_{k l}} &=\sum_{m=1}^{l_{Q}} \sum_{n=1}^{l_{K}} \frac{\partial A_{i j}}{\partial M_{m n}} \frac{\partial M_{m n}}{\partial P_{k l}} \\ &=\frac{\partial A_{i j}}{\partial M_{k l}} \frac{\partial M_{k l}}{\partial P_{k l}} \\ &=\left\{\begin{array}{cl} {\frac{\partial A_{i j}}{\partial M_{k l}}} & {\text { if } P_{i j} \geq t_{i}(k \text { -th largest value of row } i)} \\ {0} & {\text { if } P_{i j}<t_{i}(k \text { -th largest value of row } i)} \end{array}\right. \end{aligned} PklAij=m=1lQn=1lKMmnAijPklMmn=MklAijPklMkl={MklAij0ifPijti(k-th largest value of rowi)ifPij<ti(k-th largest value of rowi)
  5. 输出表示,
    C=AVC=A V C=AV

整体流程如下最右图所示,

另外,参数kkk的选择至关重要,当kkk取与序列长度一致时即为vanilla transformer。作者在NMT实验中发现当k=8k=8k=8时效果最好。

reference
  • Code Here
  • Open Review


Transformers Assemble(PART IV)相关推荐

  1. Transformers Assemble(PART V)

    最近我发现CSDN上抄袭我的文章的那些阅读量居然比我原创的还要高,气死- Set Transformer from OX,ICML2019 Star-Transformer from FDU,NAAC ...

  2. Transformers Assemble(PART II)

    继Transformer系列上一篇,PART II整理了三篇来自Facebook AI Research的论文,都比较好读: Span Transformer from FAIR,ACL2019 Al ...

  3. Transformers Assemble(PART I )

    写在前面 经过之前一段时间的 NLP Big Bang,现在相对比较平静了,Transformer 派已经占据了绝对的主导地位,在各类应用中表现出色.看标题大家也可以猜个差不多,整理了一系列自< ...

  4. 【Deep Learning】Transformers Assemble(PART I)

    写在前面 经过之前一段时间的 NLP Big Bang,现在相对比较平静了,Transformer 派已经占据了绝对的主导地位,在各类应用中表现出色.看标题大家也可以猜个差不多,整理了一系列自< ...

  5. Transformer Assemble(PART III)

    这一期魔改Transformers主要关注对原始模型中位置信息的讨论与优化, Self-Attention with RPR from Google,NAACL2018 Self-Attention ...

  6. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART IV)

    0. 写在前面 不想写 1. Neural Relation Extraction with Multi-lingual Attention(Lin/ ACL2017) 这篇文章是在Lin 2016年 ...

  7. Assemble(王爽)——nasm 和 masm的一些简单区分

    最近在学习汇编语言,王爽的那本书.他用的汇编编译器是masm:而用选择的nasm:所以最近用了下,对两者区别有点体会,记录下. 首先,why nasm?我选择nasm,最重要的一个原因是它开源:我现在 ...

  8. R语言基于信息价值IV(Information Value)和证据权重WOE(Weights of Evidence)进行特征筛选(feature selection)

    R语言基于信息价值IV(Information Value)和证据权重WOE(Weights of Evidence)进行特征筛选(feature selection) 对一个学习任务来说,给定属性集 ...

  9. 评分卡模型、WOE(Weight of Evidence)和IV(Information Value)

    WOE(Weight of Evidence) IV(Information Value) 在机器学习的二分类问题中,IV值(Information Value)主要用来对输入变量进行编码和预测能力评 ...

最新文章

  1. 计算机语言表示教师节快乐,表达教师节快乐的微信祝福语大汇总54句
  2. Windows平台下动态链接库的总结
  3. 地贝扫地机器人维修_扫地机器人常见故障及维修方法
  4. java node websocket_nodejs怎么实现webSocket接口即时通讯服务?
  5. [Swift]LeetCode79. 单词搜索 | Word Search
  6. Spark源码分析之SparkContext
  7. mysql安全删除大表
  8. 税收分类编码_四个要点教你如何又快又准选好编码?会计实操干货
  9. 【控制】《最优控制理论与系统》-胡寿松老师-第3章-极小值原理及其应用
  10. html旋转3d魔方制作方法,JavaScript实现的3D旋转魔方动画效果实例代码
  11. QQ群发消息怎么发?最全攻略分享
  12. mysql ndbcluster 缺点_MySQL集群 -- NDB Cluster
  13. 25 scala 进阶
  14. SSD固态硬盘坏了,还能修好吗?
  15. Linux入门第三天——linux命令(二)
  16. ios-破解ipa包中的png 图片
  17. 联想微型计算机如何设置u盘启动,联想电脑怎么设置U盘启动
  18. Metasploit的简单应用
  19. 业界最全,阿里云混合云灾备服务上线!
  20. RAID5数据应该如何恢复

热门文章

  1. SAP License:CO生产订单
  2. 数字化园区、智慧园区、物业管理、园区设备、房屋资源、维修业务、巡查管理、招商管理、商业租售管理,收支管理,合同管理,人员管理,日常维护,巡检管理,报检报修、物业驾驶舱、axure原型、rp原型
  3. Axure经典案例下载(crm需求文档+web端交互组件+Axure移动端模板+管理后台框架模板)
  4. RK3399pro Linux Rock-X AI组件库支持
  5. log4j.properties配置与将异常输出到Log日志文件实例
  6. C#语法糖yield
  7. 二.Windows I/O模型之异步选择(WSAAsyncSelect)模型
  8. 关于GCC的理解——On the understanding of the GCC
  9. python 中参数*args, **kwargs
  10. SQL Proc(存储过程)/tran(事物)