作者:今天不吹牛
链接:https://www.zhihu.com/question/400733777/answer/1466879756
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
首先感谢
回答里推荐的另外两篇论文:
Graph-Based Global Reasoning Networks (GloRe)
LatentGNN: Learning Efficient Non-local Relations for Visual Recognition
Visual Transformer与这两篇的共通之处很多,放在一起读让我受益匪浅。
这三者发表在arxiv时间顺序是:GloRe -> LatentGNN -> Visual Transformer 。三者都是关于GCN或者说 relation learning 在视觉上的应用。GloRe 和latentGNN 的运用思路是把 relation learning 作为一种feature augmentation的手段,和 nonlocal 类似; 而 Visual Transformer 的运用思路则是“替换卷积”,和 Local Relation , SAN, Stand-Alone Self-Attention 类似。
首先说 GloRe 和 LatentGNN 。二者都定位于为卷积特征进行 feature augmentation,从而 capture long-range dependency。从方法上看, GloRe 分为三步:
(1)From Coordinate Space to Interaction Space
(2)Reasoning with Graph Convolution
(3)From Interaction Space to Coordinate Space
LatentGNN 也是三步:
(1)Visible-to-latent propagation
(2)Latent-to-latent propagation
(3)Latent-to-visible propagation
GloRe 和 LatentGNN 的 (1)(3)两步是一样的,都是用1×1 的卷积层来得到一个仿射矩阵,用这个仿射矩阵作用到输入的feature map(长宽两个空间维度融合为一个)上。二者的主要区别在于(2),虽然说 GloRe 和 LatentGNN 都说使用了GCN, 但二者使用GCN的思路不同。LatentGNN 用latent node的feature的点积作为邻接矩阵,或者干脆理解为在latent space做一次nonlocal。GloRe 的邻接矩阵则是learnable params ,然后做 GCN。GloRe 实现GCN的方式很有意思,是用两个分别跨越channel和跨越node的1×1 Conv实现的。
GloRe 和 LatentGNN没有在相同数据集上PK,但是从讲故事的水平上来说,我觉得LatentGNN略胜一筹~
Visual Transformer 定位与用 transformer layer 取代 convolution layer,也分为三步:
(1)Tokenization
(2)Transformer
(3)Projector
这里的(1)(3)两步和 GloRe 、LatentGNN的基本一样,用1×1 Conv 学一个仿射矩阵,然后怼上去。不一样的地方在于加入了position encoding,这个position encoding其实就是learnable params。我个人认为之所以前几年自注意力机制只能作为一种增强特征的方法,而这一两年却涌现那么多自注意力层取代卷积层,原因就是ACL上的这篇 带relative position encoding的Transformer , 妥当的相对位置编码可以带来卷积层天然具备而自注意力层不具备的spatial translation equivariance。
总的来说,三篇论文在方法上有不少相通之处,尤其是GloRe和LatenGNN,但是如果读过原文的话其实不难发现它们在叙事上区别挺大的,各自都有不少独到的insight,比如GloRe的learnable adjacent matrix,LatentGNN的low-rank representation的观点,所以我认为不能苛刻地说谁就是水文。