Decoupled Networks 论文笔记

0 摘要

    基于内积运算的卷积操作一直是卷积神经网络(CNN)的核心组件,也是学习视觉表示的关键。我们观察发现,CNN学习的特征是类内差异(特征的幅值)和类间差异(特征间的夹角,语义差异)的耦合。我们提出了一种通用的解耦学习框架,该框架对类内差异和类间差异进行独立的建模。具体而言,我们首先将内积重新分解为解耦的形式,然后将其推广到解耦卷积算子,利用该算子构建解耦网络。我们提出了解耦卷积算子的几个实例。每个解耦算子具有直观的几何解释。基于这些解耦算子,解耦网络直接从数据中学习。大量实验表明,这种解耦具有比较显着的性能,并且易于收敛,鲁棒性更强。

1 介绍

    卷积神经网络推动了许多视觉任务的发展,包括物体识别,物体检测,语义分割等。最近的研究中有相当一部分对CNN的结构进行改进(如ResNet的short cut和GoogLeNet的多分支卷积),他们着重于提高网络深度和表示能力。 尽管取得了这些进展,但理解卷积网络是如何产生有区分力的表示,并且能良好地泛化仍然是一个有趣的问题。
    目前的卷积操作: f(w,x)=<w,x>=wTx f ( w , x ) =< w , x >= w T x ,其本质上是一个矩阵相乘计算两个矩阵的相似度操作。这个操作将类间差异和类内差异统一在一个度量中。因此,当两个样本之间的内积较大时,无法判断这两个样本是类内差异造成的还是类间的差异造成的。(也就是说当你通过卷积操作得到的结果很相似的时候,你并不能够得到一个结论说这两个很相似,反之亦不能,因为你不能够区别这种差异或者是相似度是类内差异造成的还是类间的差异造成的)。为了更好地研究CNN表示的属性并进一步改进现有框架,我们建议明确区分类间差异和类内变异。具体来说,我们用幅值和角度来重新设计内积,比如: ||w||2||x||2cos(θ(w,x)) | | w | | 2 | | x | | 2 c o s ( θ ( w , x ) )
这里写图片描述
图1是CNN在手写体识别任务上学到的特征的2D可视化示意图。 0~9每一个手写体数字对应的特征是图中的一束;任意一束当中的不同位置表示的是同一类别的不同表征,也就是类间差距(intra-class Variations);束与束之间形成的夹角表达的是两个类别之间的差距(inter-class difference),也就是这里所谓的语义差异。这种解耦现象促使我们提出解耦卷积算子。我们希望内积中的解耦幅值和角度能更好地模拟深层网络中的类内差异和类间差异。
    我们通过将传统的基于内积的卷积算子推广到解耦算子,提出了一种新的解耦网络(DCNet)。(如果不解耦会存在一个什么样的问题呢?就是说你只能得到一个最终的结果,但是对于两个同样的输出,你不能分辨造成这个结果的原因是因为他们实际就是同一种类别,还是因为刚好 ab =cd。)那么具体怎么解耦呢? 作者给出的解决方案:
f(w,x)=||w||2||x||2cos(θ(w,x))=h(||w||,||x||)×g(θ(w,x)) f ( w , x ) = | | w | | 2 | | x | | 2 c o s ( θ ( w , x ) ) = h ( | | w | | , | | x | | ) × g ( θ ( w , x ) )
其中, θ=arccoswTx||wT||2||x||2 θ = a r c c o s w T x | | w T | | 2 | | x | | 2
    将卷积操作解耦为幅值(Norm)和角度(Angle)两部分,并且将这两部分分别用两个函数 h(.) h ( . ) g(.) g ( . ) 来表示。关于角度的函数 g(.) g ( . ) 则度量着类间差异(inter-class difference),关于幅值的函数 h(.) h ( . ) 则度量着类内差异(intra-class variations),同时其值的大小也就表示了这个类别的可信度。解耦卷积提供了一种更通用的框架以更好区分类间差异和类内差异,并且传统的卷积操作就变成了解耦网络的一个特例: h(||w||,||x||)=||w||2||x||2,g(θ(w,x))=cos(θ(w,x)) h ( | | w | | , | | x | | ) = | | w | | 2 | | x | | 2 , g ( θ ( w , x ) ) = c o s ( θ ( w , x ) )
    从解耦的角度来看,原始的CNN基于一个强有力的假设,即类内变异可以通过范式乘法来线性建模,而类间差异由角度余弦来描述。 但是,这种建模方法不一定适用于所有任务。 通过解耦学习框架,我们可以根据不同的任务设计解耦运算符,也可以直接从数据中学习。 DCNets的优点有四个方面:
1.DCNets不仅允许我们使用一些替代函数来更好地模拟类内差异和类间差异,而且它们还使我们能够直接学习这些函数,而不是拟合它们。
2.DCNets可以更快地收敛,同时达到与原始CNN相当甚至更好的精度。
3.DCNets的一些实例可以具有更强的鲁棒性可以抵抗对抗样本的攻击。我们可以用有界的 h() h ( · ) 来压缩每个类的特征空间,这可以带来鲁棒性。
4.解耦的运算符非常灵活,并且与架构无关。 他们可以很容易地适应VGG,GoogLeNet,ResNet。
    具体而言,我们提出了两种不同类型的解耦卷积算子:有界算子和无界算子。 我们为每种类型的解耦算子提供多个实例。 从经验上讲,有界算子可能会产生更快的收敛速度和更好的抵抗对抗样本攻击的鲁棒性,无界算子可能具有更好的表征能力。 这些解耦算子可以是平滑的也可以是不平滑的,会产生不同的行为。 此外,我们引入了一个新的概念: 解耦算子的算子半径operator radius。算子半径描述了幅值函数 h() h ( · ) 的导数相对于输入 ||x|| | | x | | 的变化。 通过反向传播学习算子半径,我们进一步提出了可学习的解耦算子。 此外,我们还展示了一些优化这些算子的替代方法,这些算子由标准的反向传播学习。。我们的贡献如下:
1.受CNN特征解耦观察的启发,我们提出了一个解耦框架来研究神经网络。
2.传统CNNs对类间差异和类内差异做了强有力的假设,这可能不是最优的。 通过解耦内积,我们能够设计更有效的幅度和角度函数。
3.与标准CNN相比,DCNets更容易收敛,精度更高,鲁棒性更强。

2 相关工作

    越来越多的工作侧重于改善分类层(最后一个softmax层)以增加学习特征的区分性。 相反,解耦学习提供了一个更加普遍和更加系统的方式来研究CNN。在我们的框架中,先前的工作(改善分类层)可以看成对最后的softmax层优化 h(||w||,||x||) h ( | | w | | , | | x | | ) g(θ(w,x)) g ( θ ( w , x ) ) 。例如,权重归一化等效于 h(||w||,||x||)=||x|| h ( | | w | | , | | x | | ) = | | x | | ,输入归一化等效于 h(||w||,||x||)=||w

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值