Transformers Assemble(PART IV)
上一篇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
下图是三种不同的注意力形式,其中上半部分表示一个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,i−l)Ai(2)={j:(i−j)modl=0}A_{i}^{(2)}=\{j:(i-j) \bmod l=0\} Ai(2)={j:(i−j)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)=Hk−1+resblock(Hk−1)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: 通过替换Softmax函数为α−entmax\alpha-entmaxα−entmax达到稀疏注意力;
- Adaptively: 每个attention head都是模型可自动学习的;
作者指出与先前的sparse transformer
(就是上面两个~)研究不同的是,他们的这一方法可以关注在不连续的输入集合,如下图:
Sparse Attention
softmax函数所有结果都不为0,并且最终所有元素之和为1,这样的特性决定了相对重要的部分的权值会“缩水”。这一方向的研究很多,作者选用了最近提出的alpha-entmax:
α-entmax (z):=argmaxp∈Δ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∈Δdargmaxp⊤z+HαT(p)
HαT(p):={1α(α−1)∑j(pj−pjα),α≠1−∑jpjlogpj,α=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)1∑j(pj−pjα),−∑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
- 沿用vanilla transformer的attention计算公式得到attention score,
P=QKTdP=\frac{Q K^{\mathrm{T}}}{\sqrt{d}} P=dQKT - 假定分值越大的元素其相关性越大,计算Masking矩阵。找出PPP中每行的kkk个最大元素,记录其位置,并得到一个threshold vector,t=[t1,t2,⋯,tlQ]t=\left[t_{1}, t_{2}, \cdots, t_{l_{Q}}\right]t=[t1,t2,⋯,tlQ]
- 将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={Pij−∞ifPij≥ti(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} ∂Pkl∂Mij=0(i=korj=l)∂Pij∂Mij={10ifPij≥ti(k−th largest value of rowi)ifPij<ti(k−th largest value of rowi) - 归一化,
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} ∂Pkl∂Aij=m=1∑lQn=1∑lK∂Mmn∂Aij∂Pkl∂Mmn=∂Mkl∂Aij∂Pkl∂Mkl={∂Mkl∂Aij0ifPij≥ti(k-th largest value of rowi)ifPij<ti(k-th largest value of rowi) - 输出表示,
C=AVC=A V C=AV
整体流程如下最右图所示,
另外,参数kkk的选择至关重要,当kkk取与序列长度一致时即为vanilla transformer。作者在NMT实验中发现当k=8k=8k=8时效果最好。
reference
- Code Here
- Open Review
Transformers Assemble(PART IV)相关推荐
- Transformers Assemble(PART V)
最近我发现CSDN上抄袭我的文章的那些阅读量居然比我原创的还要高,气死- Set Transformer from OX,ICML2019 Star-Transformer from FDU,NAAC ...
- Transformers Assemble(PART II)
继Transformer系列上一篇,PART II整理了三篇来自Facebook AI Research的论文,都比较好读: Span Transformer from FAIR,ACL2019 Al ...
- Transformers Assemble(PART I )
写在前面 经过之前一段时间的 NLP Big Bang,现在相对比较平静了,Transformer 派已经占据了绝对的主导地位,在各类应用中表现出色.看标题大家也可以猜个差不多,整理了一系列自< ...
- 【Deep Learning】Transformers Assemble(PART I)
写在前面 经过之前一段时间的 NLP Big Bang,现在相对比较平静了,Transformer 派已经占据了绝对的主导地位,在各类应用中表现出色.看标题大家也可以猜个差不多,整理了一系列自< ...
- Transformer Assemble(PART III)
这一期魔改Transformers主要关注对原始模型中位置信息的讨论与优化, Self-Attention with RPR from Google,NAACL2018 Self-Attention ...
- 【论文】Awesome Relation Extraction Paper(关系抽取)(PART IV)
0. 写在前面 不想写 1. Neural Relation Extraction with Multi-lingual Attention(Lin/ ACL2017) 这篇文章是在Lin 2016年 ...
- Assemble(王爽)——nasm 和 masm的一些简单区分
最近在学习汇编语言,王爽的那本书.他用的汇编编译器是masm:而用选择的nasm:所以最近用了下,对两者区别有点体会,记录下. 首先,why nasm?我选择nasm,最重要的一个原因是它开源:我现在 ...
- R语言基于信息价值IV(Information Value)和证据权重WOE(Weights of Evidence)进行特征筛选(feature selection)
R语言基于信息价值IV(Information Value)和证据权重WOE(Weights of Evidence)进行特征筛选(feature selection) 对一个学习任务来说,给定属性集 ...
- 评分卡模型、WOE(Weight of Evidence)和IV(Information Value)
WOE(Weight of Evidence) IV(Information Value) 在机器学习的二分类问题中,IV值(Information Value)主要用来对输入变量进行编码和预测能力评 ...
最新文章
- 计算机语言表示教师节快乐,表达教师节快乐的微信祝福语大汇总54句
- Windows平台下动态链接库的总结
- 地贝扫地机器人维修_扫地机器人常见故障及维修方法
- java node websocket_nodejs怎么实现webSocket接口即时通讯服务?
- [Swift]LeetCode79. 单词搜索 | Word Search
- Spark源码分析之SparkContext
- mysql安全删除大表
- 税收分类编码_四个要点教你如何又快又准选好编码?会计实操干货
- 【控制】《最优控制理论与系统》-胡寿松老师-第3章-极小值原理及其应用
- html旋转3d魔方制作方法,JavaScript实现的3D旋转魔方动画效果实例代码
- QQ群发消息怎么发?最全攻略分享
- mysql ndbcluster 缺点_MySQL集群 -- NDB Cluster
- 25 scala 进阶
- SSD固态硬盘坏了,还能修好吗?
- Linux入门第三天——linux命令(二)
- ios-破解ipa包中的png 图片
- 联想微型计算机如何设置u盘启动,联想电脑怎么设置U盘启动
- Metasploit的简单应用
- 业界最全,阿里云混合云灾备服务上线!
- RAID5数据应该如何恢复
热门文章
- SAP License:CO生产订单
- 数字化园区、智慧园区、物业管理、园区设备、房屋资源、维修业务、巡查管理、招商管理、商业租售管理,收支管理,合同管理,人员管理,日常维护,巡检管理,报检报修、物业驾驶舱、axure原型、rp原型
- Axure经典案例下载(crm需求文档+web端交互组件+Axure移动端模板+管理后台框架模板)
- RK3399pro Linux Rock-X AI组件库支持
- log4j.properties配置与将异常输出到Log日志文件实例
- C#语法糖yield
- 二.Windows I/O模型之异步选择(WSAAsyncSelect)模型
- 关于GCC的理解——On the understanding of the GCC
- python 中参数*args, **kwargs
- SQL Proc(存储过程)/tran(事物)