每周论文19

本周论文:

  1. Generating Long Sequences with Sparse Transformers
  2. CBAM: Convolutional Block Attention Module
  3. Pyramid Scene Parsing Network

[Generating Long Sequences with Sparse Transformers]

Motivation:transformer对长序列不友好,复杂度较高;本文提出sparse transformer对生成长序列的计算进行优化,复杂度能够降到$O(n \sqrt{n})$。

实际上就是将全连接的attention分化成几个sparse的attention。

如上图,实际上就是让部分head attend前面几个local;部分head attend到更早的信息,并且是跳着看的(两种pattern)。或者还可以让所有head都attend到这些sparse的点。

当然也可以扩展到多维空间。将head分为n组,每个组跳着看的不一样。

其他似乎都是细节,没啥帮助。

并且还改了一下transformer的计算过程,以及做了GPU kernel底层的加速。其他似乎没有什么insight的地方。

思考:
这实际上就是假设了一个较强的先验了,并且在生成的时候确实可能存在这种pattern,因为生成要达到好的效果,每个点都必须总结前面所有点的信息。但如果不是生成,是否也有这种pattern?
论文强行将文本也切成二维,而且用了30层;感觉不是那么有道理。因为这种sparse是从图像中观察得到的,是否也能应用于文本?会不会有可能是30层才达到这么好的效果?


[CBAM: Convolutional Block Attention Module]

提出在channel维度与空间维度的双重attention。和SE-Net相比加了一层空间维度上的交互,做法几乎都差不多。

具体做法:

①在channel维度上做attention

对输入按空间维度拍扁获得C维的pooling。实际上就是用average pooling和max pooling 过线性层+sigmoid。和SE-Net相比只是多利用了max-pooling。

②在空间维度上做attention

同样是按channel维度拍扁做max/mean pooling。获得的是HW1的维度,然后拼起来过CNN+sigmoid。

思考:似乎创新性不足,并没有提供一些有用的insight。


[Pyramid Scene Parsing Network]

利用pyramid pooling(也即不同kernel size的pooling的结合)做切割的任务。

这是pyramid pooling,也即分层次的pooling:

其他没感觉。