学习笔记【mlp与self-attention】

mlp与self-attention

  • mlp是针对一维向量的,参数是固定的,输入的形状是固定的。能够对全局的每一个元素进行感知
  • self-attention实质上是一种更通用的mlp。是针对序列的,参数是可以根据输入进行调整的,能够确保序列中的每一个token能够感知其他token。
  • 二者都能够进行全局感知

相关工作

(1)MLP-Mixer
  • 概要:通过不断堆积Mixer层(与transformer类似)实现,能够达到比肩CNN和transformer的效果
  • Mixer层:先进行row-wise MLP,再进行colom-wise MLP。不改变输入的尺寸
    在这里插入图片描述
    这里的row-wise MLP相当于transformer block中的FFN;colum-wise MLP在实现上是对输入进行转置然后执行row-wise MLP
(2)External Attention
  • 概要:从理论上证明,对self-attention的公式进行变换得到MLP的实现形式
  • 推导:
    传统的self-attention公式:
    在这里插入图片描述
    在cv领域有时会直接使用原始特征作为QKV,即不对原始特征进行矩阵变换,则self-attention可以变换为如下形式
    在这里插入图片描述
    但是这种简化需要先对输入的序列的token之间进行注意。文章提出通过一个可训练的记忆矩阵实现attention计算
    在这里插入图片描述
  • 总结:MLP的本质也是attention,不过是external attention,即需要额外开辟一块全局存储,用于计算token之间attention的权重,以及加权之后的value。

小结

  • 这两篇文章本质上是一样的,External Attention中输入和 W k T W_k^T WkT相乘实质上是执行row-wise MLP;之后进行Norm,这里文章中提出这里的Norm不仅要对行进行归一化,也要对列进行归一化,相当于执行了colum-wise MLP;之后与 W v W_v Wv相乘相当于再执行了了一次row-wise MLP。因此一层External Attention相当于1.5个Mixer

  • little idea:用transformer实现External Attention。
    在序列中加入若干unused token表示全局特征,通过设计attention mask控制各个token可以看到的tokens,使得其他token都只能关注那些unused tokens(包含全局信息)
    在这里插入图片描述
    在transformer中加入全局信息

  • 总结:MLP实质上是一种有全局记忆的attention

笔记参考:MLP竟然也是Attention

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值