论文分享
作者:lyl
编辑整理:萝卜兔
本周论文分享带来一篇CVPR2018的论文《Decoupled Networks》。卷积神经网络最基本的操作即是卷积,它本质是通过滑动窗口的方式,通过内积来衡量输入与卷积核之间的相似度。那么内积这种相似度的衡量方式,是否对所有任务都是最好的,还有没有更好的方式?这篇论文从这个点出发,提出了一类新型的卷积运算。
传统卷积
首先来回顾下基本的卷积运算,通过内积的方式来衡量输入的一个滑动窗口x与卷积核k的相似度:
训练一个CNN,将其最后的特征维度设置为2,在MNIST上进行实验,将其特征的分布可视化出来:
从这个图中我们可以观察到:特征的角度差异对应于不同的标签的差异,即类间差异;特征的范数对应着同一类数据不同的样本差异,即类内差异。
传统的CNN可以自然的学习到这两种不同的特征,但是当有两个样本,它们的内积差异较大时,无法确定这种差异是来自于类内差异还是类间差异。那么我们能否将这两部分分别建模呢,本文基于此提出了解耦卷积(Decouple Convolution)的概念。
解耦卷积
对于传统卷积,可以改写为如下形式:
将幅值和角度解耦开来,分别建模,得到解耦卷积的一般形式:
可以看出传统卷积是解耦卷积的特例。
1
幅值函数
h(·)和g(·)分别建模类内差异和类间差异,它们可以选择不同形式的函数来表达。下面我们主要来讨论下h(·)的选择。
h(·)是关于两个变量||x||,||w||的函数,设计起来相对复杂。注意到,||w||是卷积核的固有属性,它与卷积核的重要性相关,与类间差异关系不大,因此在设计h(·)时,选择不包括 ||w||,这意味着所有卷积核都是平等的,这相当于对网络加了一个正则,网络在进行特征选择时需要尽可能多的考虑到所有的卷积核,这会使得网络泛化性更好。
Hyperspherical Convolution
下面来讨论一个特殊的例子 Hyperspherical Convolution(SphereConv), 它的幅值函数形式为:
那么
其中α>0控制输出尺度
由单位超球面上测地距离决定
一般情况下
因此SphereConv输出的值域为[-α,α]
下面来看下这种形式的卷积的学到的特征分布:
从上图的特征分布可以看出,SphereConv丢弃了幅值信息,因而从特征分布上看不出类内的差异,同一类样本都聚集在一个中心附近。从几何上解释,它将输入x和w都投影到单位超球面上,然后基于他们之间的测地距离计算他们的相似度。
除了这种形式,还有其他的,如 :
这种的输出都是有界的。也可以选择无界的函数,如:
其他形式请参看论文。
2
角度激活函数
角度激活函数的设计相对简单,文中给出了以下几种形式:
3
幅值函数有界性讨论
当幅值函数有界时,一方便它能够限制网络的Lipschitz常数,使得网络对于对抗样本有更好的鲁棒性[1];另一方便它对训练时的优化也是有益的[2]。
实验
1、作者在ImageNet上验证DCFNet的有效性。基线模型采用标准的ResNet-18和修改版的ResNet-18,在使用BatchNorm和不使用BatchNorm下,可以看出DCFNet的Top-5 的错误率都更低,并且修改的ResNet-18在不使用BatchNorm无法收敛。
2、对于对抗样本的攻击,DCFNet也表现出更好的鲁棒性。下表为使用黑盒攻击在CIFAR-10上训练的模型,不同模型准确率的情况。上面三行为传统卷积,下面三行为DCFNet。可以看出DCFNet在面对对抗样本时,性能更加稳定,鲁棒性更强。
参考文献
[1].M. Hein and M. Andriushchenko. Formal guarantees on the robustness of a classifier against adversarial manipulation. In NIPS, 2017
[2].Santurkar,Shibani, et al. "How Does Batch Normalization Help Optimization?(No,It Is Not About Internal Covariate Shift)."arXiv preprint arXiv:1805.11604 (2018).
论文地址:
http://openaccess.thecvf.com/content_cvpr_2018/papers/Liu_Decoupled_Networks_CVPR_2018_paper.pdf
代码:
https://github.com/wy1iu/DCNets