对Transformer的一些改进研究总结

1、Attention计算中SoftMax的强制采样问题

标签:Attention机制
文章《8年了,Transformer注意力机制一直有Bug?》指出Softmax函数用于离散选择问题(分类、生成的词预测等)时表现良好,具备合理性,但应用于Attention的权重计算时会造成“信息过剩”。

具体地,当某个网络层状态下,如当前词不需要与序列中所有词之间有太强的相关性,使用Attention的Softmax归一化则会造成不必要信息的混入。为什么会出现词的“低信息需求”情况呢?原因是Transformer中的注意力往往都是多头注意力机制,某个词在某些头中可能需要“积极”地与序列所有词做交互,而在某些其它头可能无需交互,不需要过多特征,这种情况下需要给向量留有“弱信息”的操作空间。因此提出Softmax Super-Mod计算方法,如下:
在这里插入图片描述
相比一般的Softmax,上图的 S o f t m a x 1 Softmax_1 Softmax1在分母中增加了常数1,目的是为前面所说的“空信息”保留一定变化,使得当前词对所有位置的词都能保持“冷漠”状态,而不是一般Softmax的强制归一化,迫使当前词在任何情况下都必须拿到“总量”为1的值编码。

Softmax在大多数情况下都运行良好,唯一的小 Bug 也只是让注意力头没法“乖乖闭嘴”。在当前词需要降低与所有词交互的情况下, S o f t m a x 1 Softmax_1 Softmax1可以将所有位置的 α \alpha α注意力大小降低到一个较小值,从而获得“弱信息”。而在需要交互的情况下,由于分母只是增加了1,不会对权重造成较大影响,可以正常地捕捉需要的值向量。

由于 S o f t m a x 1 Softmax_1 Softmax1 的导数正值特性,所以我们始终拥有非零梯度,同时函数还具备和原来一样的属性,即Attention的相对值不变:
在这里插入图片描述

作者最后希望大家能给出Attention的权重峰度和激活无穷范数多轮运行后的实际影响,帮助他把论文发了。

2.Attention角度的长度外推优化

标签:Attention机制,熵不变性,长度外推
长度外推是近年来Transformer类模型优化的一个热门话题,长度外推指的是预测时的输入长度大于训练时的最大输入长度,一般长度外推的优化需要从位置编码入手。早期的绝对位置编码如Sinusoidal无法保证在长度扩展(2倍或以上)后还有较好的性能;而一些相对位置编码(如XLNET、T5上的)虽然也有长度限制前提,但通过一些微调也能获得外推能力;而后来出现的局部注意力ALIBI及其改进版本KERPLE、Sandwich就具有良好的长度外推性,不受绝对位置影响,但局部注意力却使模型捕捉不到远距离信息,同时上述几种方案只能表达出相对距离,无法感知位置先后(即 ( x m , x n ) 和 ( x n , x m ) 的位置编码一样 (x_m, x_n)和(x_n, x_m)的位置编码一样 (xm,xn)(xn,xm)的位置编码一样);RoPE是一种以坐标旋转为原理的相对编码,可以通过内插或外推两种方法推广到长序列。

而这里介绍的是从Scaled Dot-Product Attention计算上优化长度外推性,具体可以参考苏神的从熵不变性看Attention的Scale操作。里面提到若要确保模型对长文本的良好性能,Attention的计算应具备适配于序列长度的“熵不变性”,这个熵在这里怎么定义呢?具体就是如果Attention的熵较大时,往往导致权重更均匀地分配在多个token上,造成“注意力不集中”的问题,影响模型的性能;如果熵较小时,权重可以正常聚焦在目标token. 此外Attention熵的不稳定会导致权重值容易偏向1,带来梯度消失问题。

对此提出在点积后加一个放缩项 l o g n log n logn,n即序列长度,并给出新的Scaled Dot-Product Attention计算方式如下:
A t t e n t i o n ( Q , K , V ) = S o f t m a x ( κ ⋅ l o g n d Q K T ) V Attention(Q, K, V)=Softmax(\frac {κ\sdot log n}{d} QK^T)V Attention(Q,K,V)=Softmax(dκlognQKT)V
相比原始的计算多了 κ ⋅ l o g n κ\sdot log n κlogn项,实质上是对点积结果的一种放缩,以调节Softmax后的权重分布平滑性。κ是超参数,其确定如下:作者以512的长度做基准,因为512是当今模型训练最常用的输入长度。在长度为512时,使注意力的点积计算与原始Transformer一致,由此确定了 κ = d l o g 512 κ=\frac {\sqrt d}{log512} κ=log512d ,y因而上式整理后为:
A t t e n t i o n ( Q , K , V ) = S o f t m a x ( l o g 512 n d Q K T ) V Attention(Q, K, V)=Softmax(\frac {log_{512} n}{\sqrt d} QK^T)V Attention(Q,K,V)=Softmax(d log512nQKT)V

分析一下上述公式,看看是怎么做到“熵不变性”的。当n=512时,Attention点积计算与原始计算保持一致,模型通过正常的权重分布获得值编码表示;当n<512时,由于长度较短,注意力的查询空间变小,因此注意力也变得更加“集中”,为了抵消这种影响, l o g 512 n log_{512} n log512n也相应变小,我们都知道对于Softmax(x)函数,当 x 1 , x 2 , . . . , x n x_1, x_2, ... ,x_n x1,x2,...,xn的绝对值整体缩小时,经Softmax(x)计算之后的特征分布会更加平滑;相反绝对值扩张时分布会更悬殊。 而n<512时对应着 l o g 512 n < 1 log_{512} n<1 log512n<1,且n一般不可能为1以下的值,因此 0 < l o g 512 n < 1 0<log_{512} n<1 0<log512n<1,对应着点积值缩小,Softmax之后的注意力能平滑些,这正好抵消了长度短时Attention熵减小的影响。

相反在长度外推情况时,对于n>512的条件下, l o g 512 n > 1 log_{512} n>1 log512n>1,对应着点积的扩张,Softmax之后的注意力分布更突兀,较大的注意力值能够进一步加强,这也有效地缓解了长度增加时Attention熵增加导致的注意力衰退问题。

参考链接

  1. https://mp.weixin.qq.com/s/YbxgL5XBz95ziioxJ7f2pA
  2. https://kexue.fm/archives/8823
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Swin Transformer的图像分类的国内外研究现状如下: 1. Swin Transformer:Swin Transformer是一种基于Transformer的图像分类模型,它通过在编码器路径中使用Swin Transformer替代3D视觉Transformer改进原始UNETR模型。Swin Transformer通过将图像分割为小块,并在每个块上应用Transformer操作来处理图像。这种方法在图像分类任务中取得了很好的性能。 2. MISSFormer:MISSFormer是另一种基于Transformer的图像分类模型,它将增强的Transformer块作为网络的主要组成部分。MISSFormer通过在注意力模块中嵌入卷积运算来解决Transformer不适合捕获本地上下文的问题。它还利用Enhanced Transformer Context Bridge模块进行多尺度信息融合,以捕获不同尺度特征之间的局部和全局相关性。 3. PVTv1和PVTv2:PVTv1和PVTv2是另外两种基于Transformer的图像分类模型。它们在注意力模块中嵌入了卷积运算,以解决Transformer不适合捕获本地上下文的问题。这些模型在图像分类任务中取得了很好的性能。 4. Uformer:Uformer是一种基于Transformer的图像分类模型,它在Transformer块中直接使用卷积层来限制特征的区分。这种方法可以提高特征的表达能力,并改善图像分类的性能。 总结来说,基于Swin Transformer的图像分类研究主要集中在改进Transformer模型以捕获本地上下文信息,并利用卷积运算和多尺度信息融合来提高性能。这些方法在图像分类任务中取得了显著的进展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值