ICCV2021 Best Paper : Swin Transformer (二)

三、Supplement 

1.Relative Position Bias

Swin Transformer (一)中呢已经结束了主干部分,接下来呢,就是剩余的一些边边角角,不过重要的呢,是对源码的解析。在之前有提到说attention的计算多加了一个B,即 :

 我们把这个B呢叫做偏置,也称为相对位置偏置Relative Position Bias。那这个Relative Position Bias到底在做一件怎样的事情呢?我们以下图为例,window=2,先在窗口内任意选定一个参考点,比如第一图的红色方框选定为参考点,人为标注其坐标为(0,0),然后遵循“左加右减上加下减”的原则,依此标注剩余方框。这样,我们就得到了相对于参考点的位置编码。注意,下图右侧看起来好像是四幅图,实际上只是一幅图,你可以理解为参考点在移动,希望不会给你造成误解。

ICCV2021 Best Paper : Swin Transformer (二)_第1张图片

得到各个位置的相对编码后,将每个相对位置索引矩阵按行展平,并拼接在一起可以得到下面的4x4矩阵 。

ICCV2021 Best Paper : Swin Transformer (二)_第2张图片

在下面的源码中作者为了方便,把二维索引给转成了一维索引。那具体怎么转的呢?有人肯定想到,简单啊直接把行列索引相加不就变一维了吗?比如上面的相对位置索引中有(0,-1)(-1,0)在二维的相对位置索引中明显是代表不同的位置,但如果简单相加都等于-1那不就出问题了吗,那我们要怎幺解决这一件事情呢?

具体的做法是:首先在原始的相对位置索引上加上M-1M呢是窗口的大小,比如在这里窗口大小为2,那行列坐标就加上1(图片参考Swin-Transformer网络结构详解)

ICCV2021 Best Paper : Swin Transformer (二)_第3张图片

其次呢将行标再乘以2M-1的值,得到:

ICCV2021 Best Paper : Swin Transformer (二)_第4张图片

最后再将行标和列标进行相加。这样即保证了相对位置关系,又不会有上述的情况发生。

ICCV2021 Best Paper : Swin Transformer (二)_第5张图片

需要注意的是刚才计算的是相对位置索引,并不是相对位置偏执参数。真正使用到的可训练参数是保存在relative position bias table里的,这个表的参数有(2M-1)\times (2M-1)

ICCV2021 Best Paper : Swin Transformer (二)_第6张图片

2. Computational Complexity

前面有说呢使用W-MSA会比平常的MSA节省相客观的计算量,也就是文中给出的公式:

那它们怎么得到的呢?这里可以直接参考 Swin-Transformer网络结构详解的讲解:

ICCV2021 Best Paper : Swin Transformer (二)_第7张图片

ICCV2021 Best Paper : Swin Transformer (二)_第8张图片

ICCV2021 Best Paper : Swin Transformer (二)_第9张图片

你可能感兴趣的:(知识拓展,深度学习,transformer)