【竞赛】记一次竞赛试水却水到一个季军——以数据为中心的鲁棒机器学习(待补充)

picture 11

0、感想

先说说感想,再聊竞赛方案。

2021年11月,投完cvpr闲的没事,在天池上找了个比赛(竞赛链接),看规则还挺有意思,就拉上本科同学参加了(虽然还是只有我一个人在做)。起初也仅仅是试水而已,寻思实验室卡空着啥都没干有点浪费,就找点有意思的东西做做,如果能做好还能往简历上加一行东西,没想到能水了个季军(3/3605),还拿了1w奖金,挺爽。不过后来才知道这个比赛是AAAI2022 workshop的一个竞赛(workshop链接),排名出来之后还要写一篇workshop论文,我佛了,前五名还要演讲(可以选在线演讲和发视频)。我英语实在是太差了,为了避免出丑,还是选择了发视频。实际上很不愿意写这玩意,workshop论文含金量啥水平大家都清楚,于是只能随便水水凑字凑满双栏4页交上去了。视频的话,直接ppt另存为视频,然后照着稿子录音,再配合音频拉长一下视频就完事。

不得不说,这个过程还是能学到一些东西的比如我此前对鲁棒学习对抗攻击等领域零了解,现在稍微懂一点点了。不过有些东西还是要吐槽一下。比赛每个队伍一天只能交两次,我认为这就是为了限制不断试错带来的提升而设置的规则。但初赛2个月时间实在是太长了,2个月每天2次也足够试错了。所以这两个月我花在竞赛的时间其实不长,前期找了几个能运行的代码,中后期每天直接改参数训,训完交就完事了,每天交两次,每次记录下超参和结果。
picture 1

但是其他人可能也是这么想的,初赛后期已经变成神仙打架了。满分100,前排98+一大堆,不到98可能都进不了复赛。只能说大家都在撞数据集,看谁撞的准。更可气的是居然有人用开小号的方式来增加评测次数,还有本应一组的人不组队,每个人分开交,直到最后一天才组在一起。我屌尼玛的,研究规则漏洞还是你们在行。
1
(nmd,哪来那么多自由职业和无职业的来参加比赛啊,一眼小号)

picture 6
(神仙打架的分数都是队伍解散再重组刷新提交次数试出来的,我佛了)

复赛已经是2022年1月中旬了,当时事情很多(面试,专利,论文rebuttal),这个竞赛都想放弃了。不过还好没放弃。复赛只有2天半,一共6次提交机会,我提交了前四次都还是20+名。
picture 2

最后两次直接冲榜,真实对得起队伍的名字:坐火箭上来的。
picture 3
picture 4

20号晚八点交完之后就一直盯着排行榜啥也不干,就看会不会被超过,太刺激了,最后终于落下帷幕,拿了个季军。这最后一次提交也确实使出了全部策略了,这比赛要是再多一天或者少一天,我都拿不了这个奖,运气成分还是比较高的。

下面说说比赛内容。

1、赛题内容

我们在 CIFAR-10 上选择 2 个基线网络:
初赛:ResNet50、DenseNet121
复赛:PreActResNet、WideResNet

我们使用提交文件中的数据样本和相应的标签向量来训练模型,同时,参与者可以指定一些训练参数,包括优化器、权重衰减、学习率和训练轮数。修改参数时请确认epoch<=200以及batchsize<=256,以避免训练时间过长或显存占用过大。在训练阶段后,我们使用基于 CIFAR-10 的私有测试集来评估公共排行榜上的提交。

总之,提交训练用的数据和优化器超参数,其他什么都不能动,包括模型结构,损失函数,训练过程中的数据增广等。而且训练数据最多50000张图片,超参数也有限制(epoch<=200、batchsize<=256)。这就避免了无限堆砌计算资源导致的性能提升。看这规则还挺有意思所以参加了。

2、方案——饱和式攻击数据为配方的鸡尾酒调制艺术

(队友起的名字)
直接放最终的数据组成:
picture 7

在实验过程中,训练数据成分越来越多,各成分需要微调的参数越来越复杂。实验表格中数据组成说明文字如同一杯分层鸡尾酒,在被我们使用不同种类、不同密度酒进行调制。最后生成一杯名为“鲁棒学习”的最佳口味鸡尾酒。
picture 8

除了上图,我还尝试了其他方法,比如椒盐,Mixup,CutMix等,效果都不太好。实验表格如下,论文里为了凑字数解释的相当详细,实际上没啥好解释的看就完了。
picture 9

3、算法原理部分

3.1、FGSM与PGD(ICLR 18)

把图片作为可计算梯度的张量传进神经网络,并计算损失。在正常训练网络时,网络参数的增量为梯度的负方向,这样可以在迭代中减小损失函数值。我们的目的是让网络分类错误,那么只需要反向传播后,让图片加上正梯度的方向即可增加损失函数值。
扰动更新公式:

其中$\varepsilon$为扰动幅度。
FGSM只要梯度下降迭代一次走一大步就结束,而PGD是经过多次迭代,每次走一小步来产生扰动:

对于线性模型,FGSM与PGD效果相同(因为loss产生的导数方向永远不变)。而对于非线性模型,PGD要优于FGSM,并且PGD是最强的一阶攻击。

3.2、DeepFool(CVPR 2016)

通过对线性二分类器的攻击推导至非线性多分类器的攻击。目的是以最小的扰动让分类器预测错误。

picture 1

若要使$x_0$被预测错误,则扰动后的$x_0$要在$f(x)=0$的另一侧,那么扰动的最小距离就是$x_0$到分类平面的距离:

(简单提一下线性代数知识:若向量$y$使用正交基表示为$y=c_1u_1+c_2u_2+\dots+c_pu_p$,$u$为坐标向量,$c$为坐标值,那么$u_i$的坐标值$c_i=\frac{y \cdot u_i}{u_i \cdot u_i}u_i$)
上式$\boldsymbol{w}$为直线法向量,$\frac{f\left(\boldsymbol{x}_{0}\right)}{|\boldsymbol{w}|_{2}^{2}}$为对法向量的伸缩系数,代表$x_0$到分类平面的距离。法向量是从直线指向远处的,所以乘以个负号就是靠近直线的方向。

所以最终的更新公式为:

推导:

因为$\nabla f\left(x_{i}\right)=\frac{w }{|w|_{2}}$:

两边同乘$\nabla f\left(x_{i}\right)^{T}$:

假设梯度模长为1,最终:

也是每次迭代一小步,直到分类错误为止:(图中除以梯度模长是为了满足上述推导中的梯度模长为1)
picture 2

若多分类,且分类标准为:$\hat{k}(\boldsymbol{x})=\underset{k}{\arg \max } f_{k}(\boldsymbol{x})$,则攻击的目标变为:

也就是找一个k,使$x_0$离$f_{k}(\boldsymbol{x}) - f_{\hat k}(\boldsymbol{x})=0$这个超平面距离最近,即为最优扰动。若满足该条件的k为$\hat{l}$,那么最优扰动为:

计算过程与上文相同。

picture 3

3.3、AdvDrop(ICCV 2021)

这是另一种攻击的思路,其他算法都在原图片上增加特征来攻击,本算法是在原图片上丢弃信息来攻击。丢弃的方法是把图片转换成频域,去精度(比如只保留整数部分,或某个区间)后在转换回空间域。使用损失函数来指导丢弃信息。损失函数为:

为了减少计算量,本方法先将图片分为若干个block,然后分别在每个block上进行操作,具体分三步:

  • 1、将图片由空间域转换为频域(离散余弦变换):
  • 2、先将频域信息除以q,取整后再乘回来,就可以达到丢弃信息的目的。但直接取整不可微,于是定义一个可微的丢弃信息的过程,便于使用损失函数来求梯度。具体方法是保留整数部分,把小数部分做一个推向两侧的变化,比如 tanh,以达到近似取整的效果:若小数部分大于0.5则往正方向推,小于0.5则往负方向推。使用损失函数用来优化的也仅仅是上式中的 quantization 的参数 q。
  • 3、最后使用DCT的逆变换,将频域转回空间域,公式略。

3.4、AutoAttack(ICML 2020)

这是一个由多种攻击方式组合而成的复杂攻击算法。
包括以下几个方法:

3.4.1、APGD(本文提出)

  • PGD在迭代的时候加了个动量变成Auto-PGD (APGD)。
  • 损失函数是CE就是$APGD_{CE}$
  • 提出了个新损失函数DLR,就变成了$APGD_{DLR}$

后续待补充

3.4.2、FAB(ICML 2020)

3.4.3、Square Attack(ECCV 2020)

3.5、Mixup(ICLR 2018) 和 CutMix(ICCV 2019)

废话不多说,一图以说明
picture 10

训练时标签从0-1编码变soft-label就完事了

4、参考

https://blog.csdn.net/u014380165/article/details/90723948
https://www.cnblogs.com/tangweijqxx/p/10617752.html
https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/108067350
https://blog.csdn.net/weixin_44543648/article/details/121826742
https://zhuanlan.zhihu.com/p/402906393
https://blog.csdn.net/yanceyxin/article/details/82080242
https://zhuanlan.zhihu.com/p/349921096