其实那么多的attention机制,说白了就是一句话,重新分配权重,比如说现在有一个n维向量[x1, x2, x3..., xn],我觉得x1的值不足以代表其真实情况,所以希望利用x2,...xn的值来对其进行“修补”, 然后就是要找到一组权重w1, w2, w3...wn, 对其求加权平均(也不一定是加权平均,看实际需求)来得到x1的最终值(当然,实际应用中会涉及到一些维度映射,Query-Key-Value等内容,但大体框架都基于此)。
而Self-Attention GAN与之前的non local neural network极为相似(换了个皮?),以下为一些理解。
对于当前得到的feature map X(shape=[C, N],C为channel, N为特征点数,例如在12*12图像中,将其展平,就得到144个特征点),我希望其能够得到更加全局的信息来弥补小卷积核信息获取不足的缺陷。
根据上图,对于feature map X,上面两路是获取attention map, 下面一列是一个线性变换,最后相乘得到最终结果。
对于第一路(f(X)那一行),首先X经过一个1x1 卷积,得到f(x) (shape=[C/8, N],C/8是文中的参数,可自由替换,个人理解是为了减少计算量设置的), 而第二路