本文共 1854 字,大约阅读时间需要 6 分钟。
参考代码:
导读:现有的CNN与RNN的网络都有很好的局部相关性(local),但是在一些任务中就需要网络具有较大的感受野范围,因而就需要一种non-local的表达形式来捕获较大范围的信息。这篇文章不同于之前的non-local的方法,它计算的是当前位置在全局中的加权和的形式。而且文章的结构是比较灵活的可以被移植到很多的网络结构中,或多或少地会带来性能的提升(其对于网络量化的影响就还需要进一步试验观察了),这篇文章的方法可以说是比较好的Attention方法了。
这篇文章中将non-local的学习过程描述为下面的过程:
y i = 1 C ( x ) ∑ ∀ j f ( x i , x j ) g ( x j ) y_i=\frac{1}{C(x)}\sum_{\forall j}f(x_i,x_j)g(x_j) yi=C(x)1∀j∑f(xi,xj)g(xj) 其中,函数 f f f是两个输入的相关性计算,函数 g g g是输入的映射表达,之后 C ( x ) = ∑ ∀ j f ( x i , x j ) C(x)=\sum_{\forall j}f(x_i,x_j) C(x)=∑∀jf(xi,xj)是归一化的参数。这里的操作带有全局属性的,并不同于卷积中局部的特性。在计算两个输入相关性的时候有时会采用FC层的形式,这篇文章的方法与FC层的比较归纳为:
在上面的共识中存在两个函数 f , g f,g f,g,这两个是文章中的核心函数,分别用于计算两个输入的相似性和对输入进行映射。对此这里对两个函数的采样进行了实验并筛选出适合的相似性计算函数。
g g g函数:
在文章中将这个函数固定为(核心就是相似性的计算函数): g ( x j ) = W g x j g(x_j)=W_gx_j g(xj)=Wgxj,这里对 W g W_g Wg使用 1 ∗ 1 1*1 1∗1的卷积进行替换。f f f函数:
这个函数就是这篇文章的核心了,对此文章实验了很多相似性计算的方式如下:至于这上面的几种相似性计算方式的性能可以参考下表所示:
在完成输入样本的相似度计算之后,整体的non-local的框架可以描述为:
z i = W z y i + x i z_i=W_zy_i+x_i zi=Wzyi+xi 将其使用常用的操作进行表示可以描述为下图中的形式:Kinetics性能:
转载地址:http://zwkhj.baihongyu.com/