三、Supplement
1.Relative Position Bias
在Swin Transformer (一)中呢已经结束了主干部分,接下来呢,就是剩余的一些边边角角,不过重要的呢,是对源码的解析。在之前有提到说attention的计算多加了一个,即 :
我们把这个呢叫做偏置,也称为相对位置偏置Relative Position Bias。那这个Relative Position Bias到底在做一件怎样的事情呢?我们以下图为例,window=2,先在窗口内任意选定一个参考点,比如第一图的红色方框选定为参考点,人为标注其坐标为(0,0),然后遵循“左加右减上加下减”的原则,依此标注剩余方框。这样,我们就得到了相对于参考点的位置编码。注意,下图右侧看起来好像是四幅图,实际上只是一幅图,你可以理解为参考点在移动,希望不会给你造成误解。
得到各个位置的相对编码后,将每个相对位置索引矩阵按行展平,并拼接在一起可以得到下面的4x4矩阵 。
在下面的源码中作者为了方便,把二维索引给转成了一维索引。那具体怎么转的呢?有人肯定想到,简单啊直接把行列索引相加不就变一维了吗?比如上面的相对位置索引中有及
在二维的相对位置索引中明显是代表不同的位置,但如果简单相加都等于-1那不就出问题了吗,那我们要怎幺解决这一件事情呢?
具体的做法是:首先在原始的相对位置索引上加上,
呢是窗口的大小,比如在这里窗口大小为2,那行列坐标就加上1(图片参考Swin-Transformer网络结构详解)
其次呢将行标再乘以的值,得到:
最后再将行标和列标进行相加。这样即保证了相对位置关系,又不会有上述的情况发生。
需要注意的是刚才计算的是相对位置索引,并不是相对位置偏执参数。真正使用到的可训练参数是保存在relative position bias table里的,这个表的参数有
个
2. Computational Complexity
前面有说呢使用W-MSA会比平常的MSA节省相客观的计算量,也就是文中给出的公式:
那它们怎么得到的呢?这里可以直接参考 Swin-Transformer网络结构详解的讲解: