[arxiv 1711] Non-local Neural Networks
Xiaolong Wang, Ross Girshick, Abhinav Gupta, Kaiming He
from CMU, FAIR
Motivation
“Non-local”直译为“非局部”。个人的理解是指特征提取时,当前输入数据的特征计算要考虑其它输入数据的信息。举例来说,非局部操作的关注点就是在于如何建立起图像上两个有一定距离的像素之间的联系,如何建立视频里两帧的联系,如何建立一段话中不同词的联系。
一个典型的CNN网络是由一系列卷积操作累积起来的。对于使用在图像上的CNN,每个卷积操作只能捕捉到输入数据的局部信息。整个网络通过局部操作的逐步累积来获得范围较广的信息提取。而RNN则是通过循环的方式处理序列输入(如视频每一帧图像的时间序列或者图片上一列像素的空间序列),从而融合非局部的信息。
这篇文章提出三点CNN和RNN在融合非局部信息上的三个劣势:1.计算不高效;2.优化更难;3.非局部特征的信息传递不够灵活,功能不够强大。当然,这也是因为CNN和RNN的初衷并不是专门来融合非局部信息的。
在这篇文章中,作者提出了一种非局部模块(non-local block, 简称NL block)的网络结构,来帮助深度网络更好地融合非局部的信息。这对于一些问题是非常重要的。
Method
从使用在图像去噪问题中的non-local means[1]方法出发,作者对NL block的抽象描述为:
以图像为背景来说的话,i,j是像素坐标,x,y是输入和输出信息。j的取值范围是任意的坐标。C(x)是一个归一化常数。f(.)是用来构建i,j点处信息关联的二输入函数。g(.)是计算j点信息对i点影响的单输入函数。
这样的非局部操作其实很常见,从广义的角度来讲可以从多个已有的研究方向来理解这个操作。首先这是从图像去噪中借鉴来的模型。除此之外,如果f(.)函数输出的是一个概率值,即0~1之间的数值,那么这就是前段时间有所讨论的self-attention[2]。因为(i,j)二元坐标对取遍了所有情况,这个定义又很像dense CRF[3],或者可以认为这也是一种图模型。
回到这篇文章中。作者对f(.)有很多不同选择的定义方式。通过实验选定了名为Embedded Gaussain+Dot product的方案。对g(.)的定义是一个简单的线性函数。NL block的输出并没有替代输入,而是和原输入相加,形成一个残差结构(residual),得到 zi 。