(论文解读)High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks

论文解读之:

High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks

神经网络CNN,说白了就是将我们人看到的图片进行特征提取,然后从特征中挖掘完成任务所需要的信息。而解释其能力,一大重点就是解释它提取出来的特征到底是什么。从频率角度看,提取出来的特征也是可以进行傅里叶展开的,如果观察特征的频谱我们又能得出什么结论呢?本篇论文就从频率角度探究了CNN到底在提取什么特征。
这篇论文来自CVPR2020 Oral。
在这里插入图片描述

一、写在前面

1、文章主要内容概述

本文主要解释CNN的泛化行为。之前的学者已经做了很多这样的工作,而本文从数据角度解析CNN的泛化行为。前人有论文认为,CNN可以以比人类更高的粒度查看数据。而这个高粒度较难理解,在这里,作者从模型感知的角度提出了高粒度的一种解释:CNN可以挖掘图像中的高频成分,这与人类的观察模式不同。
在这里插入图片描述
这里提出本文的基本假设:高频成分与图像的语义成分之间存在相关性。一个模型既能感知高频成分,也能感知语义成分,导致其泛化行为违背人类的直觉。这一点可以从下面的实验中看出,这个实验后文还会继续讨论:

实验
如图是来自CIFAR10的8个样本的预测结果,作者分别取出图像中的高频成分与低频成分重新使用模型预测,可以看到预测结果完全取决于高频成分,低频成分我们人类看来与原始图像基本相同,但模型预测结果有明显的错误。
在这里插入图片描述

2、Label Shuffling

这里着重说一下Label Shuffling这一种操作。
Label Shuffling是一种针对数据不均衡(imbalance)的数据增广方式,由海康威视在ILSVRC 2016中提出。
可参考这个知乎文章以及这个CSDN文章
看不懂可以先将其理解为一种不同的标签格式,训练起来与原方式相比难度不同。

Label Shuffling可以由以下6步实现:
1.Sorting
对batch(或者某个数据集)里的不均衡的样本按照label进行排序,并在每类中建立的id。
2.Counting
统计每个类别的数量,并找到数量最多的样本的类别。
3.Randperm (Random Permutation)
基于样本最多类别的样本数的随机打乱排序。假设当前batch一共有 M M M个类别,每个类别的样本数量为 N = { N 1 , N 2 , . . . , N M } N=\{ N_1,N_2,...,N_M\} N={N1,N2,...,NM},其中样本数量最多的类别有 N m a x = m a x ( N ) N_{max}=max(N) Nmax=max(N)个样本,那么现在生成 M M M N m a x N_{max} Nmax维随机排序(randperm,RP),也就是 M M M个RP=numpy.random.permutation( N m a x N_{max} Nmax),即生成了 N = { R P 1 , R P 2 , . . . , R P M } N=\{ RP_1,RP_2,...,RP_M\} N={RP1,RP2,...,RPM}
4.Mod
对每个randperm做取模运算,模为该类的样本数。例如,对第 j j j类,它的样本数为 N j N_j Nj,它的randomperm为 R P j RP_j RPj,所以它的取模运算结果为: S j = R P j % N j S_j=RP_j \% N_j Sj=RPj%Nj
5.Selecting
根据取模运算的结果进行重采样,使得每类样本的数量都为 N m a x N_{max} Nmax。按照 S j S_j Sj取索引原本类中样本(按照样本id进行匹配),并复制到对应的位置上,从而得到 N m a x N_{max} Nmax M j M_j Mj类样本。
6.Concat & Shuffling
经过步骤5,每类都会有 N m a x N_{max} Nmax个样本,将所有样本( M ∗ N m a x M*N_{max} MNmax)concatenate在一起,并打乱顺序,得到一个新的batch,此batch即为label shuffling增强后的batch。

二、贡献

1、揭示了CNN通过利用图像的高频成分来实现准确性和鲁棒性之间的权衡(即后文推论1)。
2、以图像频谱作为工具,我们提供假设来解释 CNN 的一些泛化行为,特别是记忆标签混乱数据的能力。
3、我们提出保守方法,可以帮助提高 CNN 对简单的扰动的鲁棒性,而不需要训练或微调模型。

三、符号说明

符号意义
< x , y > <x,y> <x,y>一组数据样本
f ( ⋅ ; θ ) f(\cdot;\theta) f(;θ)一个CNN模型, θ \theta θ为其参数
f ( ⋅ ; H ) f(\cdot;H) f(;H)一个人类模型,表示人类做该分类任务的方式
l ( ⋅ ; ⋅ ) l(\cdot;\cdot) l(;)普通的损失函数
α ( ⋅ ; ⋅ ) \alpha(\cdot;\cdot) α(;)预测准确率函数
d ( ⋅ ; ⋅ ) d(\cdot;\cdot) d(;)两向量间距离
F ( ⋅ ) \mathscr{F}(\cdot) F()傅里叶变换
F − 1 ( ⋅ ) \mathscr{F}^{-1}(\cdot) F1()傅里叶逆变换

四、高频成分与CNN的泛化能力

我们将一个数据分解为高频与低频 x = { x l , x h } x=\{ x_l,x_h\} x={xl,xh},其中 x l x_l xl是低频成分, x h x_h xh是高频成分。用公式表达如下:
z = F ( x ) , z l , z h = t ( z ; r ) z=\mathscr{F}(x), z_l,z_h=t(z;r) z=F(x),zl,zh=t(z;r)
x l = F − 1 ( z l ) , x h = F − 1 ( z h ) x_l=\mathscr{F}^{-1}(z_l), x_h=\mathscr{F}^{-1}(z_h) xl=F1(zl),xh=F1(zh)
其中 t ( z ; r ) t(z;r) t(z;r)代表了一个将高频和低频分开的阈值函数,根据常识我们定义如下:
c i 和 c j c_i和c_j cicj为傅里叶变换后图像的中心,则:
在这里插入图片描述

假设1:人类只能观察到 x l x_l xl,但是CNN可以观察到 x l 和 x h x_l和x_h xlxh,用公式表示即如下:
y : = f ( x ; H ) = f ( x l ; H ) y:=f(x;H)=f(x_l;H) y:=f(x;H)=f(xl;H)
对于CNN,训练时的损失函数为:
a r g min ⁡ θ l ( f ( x ; θ ) , y ) = a r g min ⁡ θ l ( f ( { x l , x h } ; θ ) , y ) arg\min_\theta l(f(x;\theta),y)=arg\min_\theta l(f(\{ x_l,x_h\} ;\theta),y) argθminl(f(x;θ),y)=argθminl(f({xl,xh};θ),y)

CNN不断地挖掘高频信息并不是CNN会过拟合,因为高频信息包含更多样本特有特征,这些特征在训练测试中都会用到,但人类并观察不到。
一些实验表明,CNN的能力在于他们能将损失函数减小到逼近0,而这个过程又可以看做不断挖掘高频信息与不断地去过拟合样本特有特征的过程。
进一步,我们定义准确率:
E ( x , y ) α ( f ( x ; θ ) , y ) \mathbb{E}_{(x,y)}\alpha (f(x;\theta),y) E(x,y)α(f(x;θ),y)
以及鲁棒性:
E ( x , y ) min ⁡ x ′ : d ( x ′ , x ) ≤ ϵ α ( f ( x ′ ; θ ) , y ) \mathbb{E}_{(x,y)} \min_{x':d(x',x)\le \epsilon}\alpha (f(x';\theta),y) E(x,y)x:d(x,x)ϵminα(f(x;θ),y)
准确率很好理解,就是在样本集x里测试准确率的期望,鲁棒性其实也很好理解, x ′ x' x是被扰动的样本,扰动大小上限是 ϵ \epsilon ϵ,不同扰动中导致的最低准确率的期望即鲁棒性。
进而我们提出假设二:

假设二:
对于一个CNN模型 θ \theta θ,一定存在一个样本 < x , y > <x,y> <x,y>使得:
f ( x ; θ ) ≠ f ( x l ; θ ) f(x;\theta)\neq f(x_l;\theta) f(x;θ)=f(xl;θ)
这是实验的经验表述

根据假设一二,我们可以得到推论:
总存在一个样本 < x , y > <x,y> <x,y>,使得模型不能准确鲁棒地分类。
这就是CNN在鲁棒性和准确性中权衡的解释。

五、重新考虑数据

之前的论文中有学者指出,神经网络很容易学习混乱标签(label shuffled)的数据。这令人深思,虽然神经网络有记忆数据的能力我们并不否认,但为什么它们在训练过程中不是简单的直接记住数据,将损失减小到0,而是去做准确率与鲁棒性之间的权衡,概括样本的模式,保证模型的泛化能力呢?
根据假设一,作者认为,尽管使损失最小化的结果是相同的,但模型考虑了两个不同层级的特征:

  • 在一般标注的样本中,模型先提取低频信息,然后逐渐提取高频信息,以达到更高的训练精度。
  • 在混乱标签的样本中,由于低频信息和标签之间的关系没有了,所以模型将低频和高频信息同等对待,这就代表着模型开始选择去记忆数据。

为了验证上述想法,作者做了实验:
使用ResNet-18来分类CIFAR10,ADAM优化器,学习率为10-4,batch size为100,参数使用Xavier初始化。(后来作者又在MNIST、FashionMNIST、ImageNet上做了实验,实验结果相同)。
分别在普通标注样本上以及混乱标注样本上训练两个模型 M n a t u r a l 和 M s h u f f l e M_{natural}和M_{shuffle} MnaturalMshuffle,训练结果如下:
在这里插入图片描述
作者为了探究训练中到底使用了哪种信息,训练只用了低频信息,分别取r等于4,8,12,16。
可以看到, M s h u f f l e M_{shuffle} Mshuffle收敛更慢,这说明模型并不想去记忆东西,而是想去学习东西,记忆数据只是无奈之举。就像我们在考试周,学不会的时候才会选择去背题。
进一步,我们看到 M n a t u r a l M_{natural} Mnatural M s h u f f l e M_{shuffle} Mshuffle学习了更多的低频信息(在r=4和r=8时准确率更高)。这证明了 M n a t u r a l M_{natural} Mnatural更喜欢去学低频信息,而 M s h u f f l e M_{shuffle} Mshuffle对低频和高频同等对待。
这时作者的问题又来了:既然这个模型有着挖掘低频和高频信息的能力,为什么 M n a t u r a l M_{natural} Mnatural选择去优先挖掘低频信息呢?然后作者又给出了猜想:人在标注了数据以后,低频和标签之间的联系就变得紧密了起来,所以低频信息对应的损失变得很陡峭,尤其在训练初期,所以CNN会优先选择去学习低频信息。
接着作者又用实验验证了上述猜想,实验如下:
分别使用低频和高频图片重新训练 M n a t u r a l M_{natural} Mnatural,然后在测试集上进行测试,结果如下:
在这里插入图片描述
结果非常amazing呀,标注以后的低频信息确实变得更加可概括了,低频信息确实有更高的泛化能力,这和我们的猜想完全一致。
到这里,作者的理论已经全部结束,神经网络去提取低频信息这一举动和人类完美的契合,这只是一个巧合吗?又或许经过一百多年的更新迭代,神经网络也在经受着自然选择,那些幸存下来的方法也正符合着人类的做法,那些与人类做法相违背的方法也会在这样的过程中被淘汰。

六、训练技巧

接下来,作者从频率角度进一步探寻了训练技巧对训练结果的影响。
首先作者探究了batch size对训练的影响,如下图:
在这里插入图片描述
我们可以得出结论,小的batch size可以提高训练和测试准确率,而高的batch size可以缩小泛化差距,而且,泛化差距和模型捕捉高频信息密切相关。更大的batch size中高频信息变化更小,所以会导致训练准确率和测试准确率之间差距更小。直观地看,大的batch size可以让损失变得更陡峭。其机制类似低频信息使损失变陡峭。
之后,作者尝试了DropOut、MixUp、BatchNorm、Adversarial Training,实验结果如下:
在这里插入图片描述
对于这些实验,作者做出如下总结:
DropOut对准确率影响不大,MixUp对准确率影响不大,但捕捉了更多高频信息,这也能想得通,因为在MixUp的时候并没有增加更多低频信息,而这种trick带来的提升也大概是由于其更加注重高频信息。
对抗学习也如预期所想,他的准确率较低,是因为他在准确率和鲁棒性之间做了权衡。他有更小的泛化差距,是由于其高频信息基本不变,特征是可概括的。然而,在r=4时对抗学习比普通的方式更注重高频信息。
之后,作者还尝试了其他训练的影响因素:

  • 网络结构:测试了LeNet、AlexNet、VGG、ResNet,其中ResNet有着更好的准确率,更小的泛化差距,更弱的捕捉高频信息的能力。
  • 优化器:测试了SGD、ADAM、AdaGrad、AdaDelta、RMSprop,其中SGD更想要去提取高频信息,而其他基本都差不多。

最后,作者讨论了一些关于BatchNorm的必要性。根据前面的讨论,我们能看出BatchNorm的一个作用就是能够重新分配不平衡的频率分量。比如一般高频分量的量级会低于低频分量,所以没有BatchNorm的网络可能很难获取到高频信息。作者同样做了如下实验,使用有BatchNorm和无BatchNorm的网络分别训练低频分量,发现性能提升并不明显。可以证明BatchNorm主要在获取高频分量。同时,通过对比发现r=4时性能改善最不明显,这也印证了前面的猜想:BatchNorm通过捕获不同频率分量调整不平衡来改善训练结果。
在这里插入图片描述

七、从对抗学习发现卷积核

根据卷积定理,空域的卷积等于频域的乘积。所以我们如果给一张图片的傅里叶变换图的边缘乘更高的权重,那么就会有更多的高频分量。这样的分析基本只对于第一层的卷积核有效,因为第一层卷积核是直接作用于图像的,而高层卷积核与图像间的关系就更远了。
数学上已经有证明,如果卷积核越光滑,就意味着相邻权重之间突变小,卷积后的高频信息就会更少。而之后作者设计实验发现,鲁棒的系统卷积核更光滑。
之前我们已经知道,对抗学习是更鲁棒的,因为他会在准确率与鲁棒性之间做权衡。作者分别训练普通的模型与对抗学习的模型,然后观察其第一层卷积核,如下:
在这里插入图片描述
可以看到对抗学习的卷积核更光滑。基于此,作者通过如下公式强行使第一层卷积核变得更光滑:
x i , j = w i , j + ∑ ( h , k ) ∈ N ( i , j ) ρ w h , k x_{i,j}=w_{i,j}+\sum_{(h,k)\in N(i,j)}\rho w_{h,k} xi,j=wi,j+(h,k)N(i,j)ρwh,k
其中N表示邻域,这个光滑公式应该很好懂。
光滑后的卷积核如下:
在这里插入图片描述
然后经过测试,结果非常amazing:
在这里插入图片描述
可以看出,一般来说,对抗学习更鲁棒,而还可以看出,加了光滑以后的模型会变得更鲁棒。

八、高频真的是噪声吗

在探究结束后,作者思考了这样的问题,高频真的只是噪声吗。为了尝试证明,他用截断奇异值分解的方法对图片进行了去噪,选出其中较大的特征值重构图像,通过这样的步骤,作者发现很少有图片能够被识别出。这就说明CNN提取出的不只是随机噪声。

九、总结

1、CNN会捕获高频信息,这一点与人类不同。这也导致了一些之前出现的问题,比如学习混乱标签数据的悖论以及对抗学习的弱点。
2、某些训练技巧如MixUp、BatchNorm能够提高准确率,捕获高频信息。由于准确率与鲁棒性之间的权衡,我们需要慎重考虑他们的使用。
3、对抗的鲁棒模型趋向于让卷积核变得光滑,反过来不一定成立。
最后,作者希望以后的评估方式中应添加低频的评估,在以后的研究中要考虑到人如何看待数据。

个人总结

这篇论文信息量很大,初衷是探究CNN的可解释性,解释其泛化能力。文章从频率这个基本观点出发,步步深入,探究了高频分量与低频分量对模型的影响,进而解释了一些混乱标签学习与对抗学习中的问题。之后又从频率角度探究解释了训练技巧对模型的影响。最后又解决了对抗模型更加鲁棒的实质,即使卷积核变得光滑。总得来说,文章分析非常透彻,实验也非常充分,对之后模型的构建也应有所启发。

Kubernetes (k8s)是一个用于容器编排和管理的开源平台,但在实际使用中可能会遇到一些常见的故障。以下是几个常见的k8s故障及其处理方法: 1. Pod无法启动或CrashLoopBackOff:这可能是由于应用程序错误、资源不足或配置问题引起的。您可以通过查看Pod的日志和事件来了解具体原因。修复方法可能包括修复应用程序错误、调整资源配额或修改配置文件。 2. 节点不可用:如果一个或多个节点无法正常工作,您可能会遇到服务中断的问题。您可以通过检查节点的状态、重启节点或替换故障节点来解决这个问题。另外,您可以使用副本控制器来确保Pod在其他可用节点上重新启动。 3. 网络问题:如果Pod无法相互通信或与外部服务通信,可能是由于网络配置错误、防火墙规则或网络故障引起的。您可以检查网络配置、检查防火墙规则并确保网络连接正常。 4. 存储问题:如果您使用了持久卷(Persistent Volume)并且无法访问存储,可能是由于存储配置错误、权限问题或存储故障引起的。您可以检查存储配置、修复权限问题或联系存储管理员来解决这个问题。 5. 资源耗尽:如果您的集群资源不足,可能会导致Pod无法启动或运行缓慢。您可以通过添加更多节点、调整资源配额或优化应用程序来解决这个问题。 这些只是一些常见的k8s故障和处理方法的示例。实际情况可能因您的环境和配置而异。在遇到故障时,建议您查看相关日志、事件和监控信息,以便更好地诊断和解决问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值