深度学习——Pay Attention to MLPs

前言

前不久入职某大厂了,有点怀念无忧无虑的学生时代。入职后很快收到了第一个优化任务,算法岗的高不确定性确实会让人有一丝焦虑。目前体感来看,现有的深度学习模型性能非常依赖于数据质量,在数据质量足够的前提下,才有模型上的一系列操作。

本文将总结类ViT网络结构Gmlp,论文题为Pay Attention to MLPs

本文为个人总结,如有错误,欢迎指出。本文默认读者具有ViT相关知识


Gmlp

输入与输出

Gmlp是类ViT的结构,其输入仍为若干图像块(即将一张图像切割成若干图像块),输出为若干个向量(token)堆叠组成的矩阵,例如token的维度为 L L L,个数为 N N N,则输出为 N ∗ L N*L N∗L的矩阵。通过池化等操作转换为最终的特征向量。

结构

对比ViT,Gmlp取消了Position Embedding以及Self Attention,由若干个基本构成单元堆叠而成,基本构成单元(unit)的结构如下图所示 设输入矩阵(即图中的Input Embeddedings)为 n ∗ d n*d n∗d的矩阵 X X X,则Gmlp的unit结构可以简化为(省略了Norm等操作): Z = δ ( X U ) Z ^ = s ( Z ) Y = Z ^ V + X egin{aligned} Z&=delta(XU)\ hat Z&=s(Z)\ Y&=hat Z V+X end{aligned} ZZ^Y=δ(XU)=s(Z)=Z^V+X

U 、 V U、V U、V为可学习的矩阵(就是FC层,维度自己定), δ delta δ为激活函数, s ( z ) s(z) s(z)为图中的Spatial Gating Unit,其结构可以表示为

f W , b ( Z ) = W Z + b s ( Z ) = Z ⊙ f W , b ( Z ) egin{aligned} f_{W,b}(Z)&=WZ+b\ s(Z)&=Zodot f_{W,b}(Z) end{aligned} fW,b(Z)s(Z)=WZ+b=Z⊙fW,b(Z) 设 Z Z Z为 n ∗ d n*d n∗d的矩阵,则 W W W为 n ∗ n n*n n∗n的矩阵(不会改变输入矩阵的维度), b b b为 n n n维向量( W Z + b WZ+b WZ+b表示 W Z WZ WZ的第一行元素与b的第一维元素相加),为了保证训练的稳定性, W W W初始化值接近于0(貌似用[-1,1]的均匀分布初始化), b b b的初始值为1,此时 f W , b ( Z ) ≈ 1 f_{W,b}(Z)approx1 fW,b(Z)≈1,此时Spatial Gating Unit相当于Identity Mapping。

Spatial Gating Unit的输出在经过矩阵 V V V调整维度后与unit的输入进行相加。

个人理解

经验分享 程序员 微信小程序 职场和发展