《Non-local Neural Networks》论文阅读

原文地址:https://arxiv.org/abs/1711.07971

 

一、简介

无论是卷积操作(convolutional operation)还是循环操作(recurrent operation),都是在一个邻域内进行的处理。

本文受到 Non-local means 的启发,提出了一个可以集成在神经网络中的非局部操作模块——Non-local Block,来捕获神经网络中的长距离依赖信息( capture long-range dependencies)。

Non-local means的表达式如下:

《Non-local Neural Networks》论文阅读

其中 《Non-local Neural Networks》论文阅读 代表输出信号 《Non-local Neural Networks》论文阅读 中的第 《Non-local Neural Networks》论文阅读 个位置的值,该值将受到输入信号 《Non-local Neural Networks》论文阅读 中所有点的值的影响(由 《Non-local Neural Networks》论文阅读 来遍历输入信号中所有点),不同点的影响是可以不一样的(例如离 《Non-local Neural Networks》论文阅读 越近的点,对该点的输出( 《Non-local Neural Networks》论文阅读) 的影响越大),影响的大小是由函数 《Non-local Neural Networks》论文阅读 来决定的(例如 《Non-local Neural Networks》论文阅读 可以是用来计算欧氏距离的函数),《Non-local Neural Networks》论文阅读 表示的是输入信号 《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读 点的强度,《Non-local Neural Networks》论文阅读的作用是作标准化(normalized)。

假设 《Non-local Neural Networks》论文阅读 是一个线性函数即 《Non-local Neural Networks》论文阅读,下面讨论函数 《Non-local Neural Networks》论文阅读 有哪些选择:

1、高斯函数(Gaussian):《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读 是利用内积来计算相似度,相比于欧氏距离,它的实现比较简单,标准化因子可以设为:《Non-local Neural Networks》论文阅读

2、复合高斯函数(Embedded Gaussian):《Non-local Neural Networks》论文阅读,其中 《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读,标准化因子可以设为:《Non-local Neural Networks》论文阅读 ,对于任一给定的 《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读  在 《Non-local Neural Networks》论文阅读 维度上是个 softmax 函数(归一化指数函数),因此有《Non-local Neural Networks》论文阅读,这就是最近出现在机器翻译中的自注意力模块(self-attention module)

3、内积形式(Dot product):《Non-local Neural Networks》论文阅读,此时将标准化因子设为:《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读 中点的个数,这样简化了梯度的计算。

4、连结形式(Concatenation):《Non-local Neural Networks》论文阅读

作者在实验中发现,上述 《Non-local Neural Networks》论文阅读 的几种形式对实验结果的提升差异不大(not sensitive to these choices)。

 

二、Non-local Block(非局部模块)

定义 Non-local Block 如下:

《Non-local Neural Networks》论文阅读

其中的 《Non-local Neural Networks》论文阅读 是上面公式(1)所定义的非局部操作(non-local operation),《Non-local Neural Networks》论文阅读 是为了将该模块做成一个残差结构(方便插入到网络中,如当 《Non-local Neural Networks》论文阅读  初始化为0时,对原网络没有影响)。

根据前面的定义,Non-local Block 的结构如下:

《Non-local Neural Networks》论文阅读

值得注意的是,这里都是使用 1x1x1 (因为在 spacetime 域中,所以是三维)的卷积核来执行线性操作(linear embedding),如 《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读《Non-local Neural Networks》论文阅读 。同时 1x1x1 的卷积核将输入在 channel 上的维度由 1024 降到 512 ,减少计算复杂度。若要进一步降低计算复杂度,可以先对输入进行下采样。