Self-Attention

论文no-local neural network给出了一个通用的公式

y_{i}=\frac{1}{C(x)}\Sigma_{\forall{j}}f(x_i, x_j)g(x_j)                   (1)

f是一个计算x_i和x_j关系的函数,结果是一个scalar

g是计算位置j处特征表达的函数

C(x)=\Sigma_{\forall{j}}f(x_i, x_j)                                  (2)

f可以选多种函数,比如高斯

f(x_i, x_j)=e^{x_i^Tx_j}                                         (3)

而更进一步,可以先对x_i和x_j进行也正空间转化

f(x_i,x_j)=e^{{\theta(x_i)^T}\phi(x_j)}                                (4)

公式(2)中此时对于给定的i来说

\frac{f(x_i, x_j)}{C(x)}

可以理解为在j处的softmax值,公式(1)可以表示为

y=softmax(x^TW_{\theta}^TW_{\phi}x)g(x)


上图是论文中的no-local block,其实就是加了attention的block

先通过卷积层(也就是特征空间转化)将输入的纬度从1024降维到512,然后两个feature map进行点乘,得到各个像素之间的关系矩阵,关系矩阵的大小是NxN,N=THW,再对这个关系矩阵进行归一化(softmax),论文中实际使用的是N,之后对于位置i处的特征,那么利用关系矩阵中的i行,即1xN去给THWx512的feature map加权累加,得到新的特征y_i

运算量还是挺大的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容