![5882caa4707dbc95a2721c05ea64a3d2.png](https://i-blog.csdnimg.cn/blog_migrate/7972725e2848dea6ceb9d19626238a19.jpeg)
知乎用户zjfheart/Friendly-Adversarial-TrainingICML 2020 论文分享: 友好的对抗学习 (Friendly Adversarial Training: Attacks Which Do Not Kill Training Make Adversarial Learning Stronger)
论文讲解视频 (英文,无字幕):
链接 <https://www.zhihu.com/zvideo/1270123759915896832>
什么是对抗数据?
对抗数据 = 深度神经网络的输入自然数据 + 人工合成的噪音。 对抗数据可以迷惑深度神经网络。比如,大熊猫的图片 + 人工合成的噪音 = 新的大熊猫的图片。这样新的大熊猫的图片,人类视觉系统并不会分类错误,然后神经网络却会分类错误,并认为这是一张长臂猿的图片。
![5b60bbc3157a55c26dba58fa6f9b7e00.png](https://i-blog.csdnimg.cn/blog_migrate/ecbcba83622ae38063bf58be187e2b07.png)
对抗数据的危害是巨大的:比如如今深度神经网络应用很广泛,比如无人驾驶,医疗诊断,金融分析,等等。因此,提升神经网络的对抗鲁棒性 (adversarial robustness) 变得十分重要。
什么是对抗学习?
对抗学习是提升对抗鲁棒性至今最有效果的一种方式。核心思想是:在训练神经网络的过程中,针对当前网络产生对抗数据,然后通过更新当前的网络参数,学习对抗数据,如此循环。
![901002cf03e3947c1ab2bcd33a5b61a2.png](https://i-blog.csdnimg.cn/blog_migrate/5613b9b8aa43ef66b784fbaed9fb9fae.png)
对抗学习最终有两个目的:1 正确的分类数据。2 使得分类边界(两个虚线之间)变厚,在分类边界内部,尽量减少任何数据的存在。
传统对抗学习的根基
传统的对抗学习是根据 极小极大公式 (minimax formulation):
![66ff7594bff3f10f186ec8fea86980a9.png](https://i-blog.csdnimg.cn/blog_migrate/38f5095062d5b1745730ae6de134f0ef.png)
在内层中,通过最大化损失函数 (ell) 寻找对抗数据,然后在外层去学习对抗数据进而最小化损失函数。
投射梯度下降 Projected Gradient Descent (PGD) 是一个找对抗数据的有效方法,PGD 通过不断的迭代,找到使得损失函数最大的对抗数据。这样通过PGD找到的对抗数据,最有可能使得深度神经网络出错。
![9435d363d6fe03f2d78a3df8c611bd7e.png](https://i-blog.csdnimg.cn/blog_migrate/7e9714593578289ddc49e5acaf7f9665.jpeg)
如图所示,当前的PGD的方法,通过损失函数对输入数据求导寻找迭代方向,一步一步的迭代找到使得损失函数最大的对抗数据。这种对抗数据我们称为:极其恶劣的对抗数据 (most adversarial data)。
传统的对抗学习,就是通过学习这些 极致恶劣对抗数据,去提升深度神经网络的鲁棒性。
当前传统对抗学习存在很多问题。1 . 通过传统的对抗学习得到的深度神经网络准确率 (accuray) 低。尽管提升了鲁棒性 (robustness),但是以牺牲准确率为巨大代价。2. 传统的对抗学习十分的耗时,因为每次找对抗数据都需要多次的反向传播 (backward propagations), 即,损失函数对数据求导数,尤其当神经网络参数很多(比如可调参数多达百万的时候,每一次求导十分耗时。
传统对抗学习问题出在哪?
传统的对抗学习的问题就出在对抗学习的根基,即,极小极大公式 (minimax formulation)。
![8050e30f739059452c88f32cfc07f66c.png](https://i-blog.csdnimg.cn/blog_migrate/f32e2e39d95c01bb1c0f66493239f395.png)
PGD 通过多次迭代步数(Step),寻找极其恶劣的对抗数据,是内层最大损失函数(inner maximization)的一个近似解。上图所示,红色的点是绿色点对应的对抗数据,蓝色的点是黄色点对应的对抗数据。通过PGD找的对抗数据 (Step #10),导致蓝色的点跑到了绿色区域,红色的点跑到了黄色区域。这样导致了自然数据和对抗数据严重的交叉混合问题(cross-over mixture problem)。
对抗学习的外层最小化(outer minimization),当学习这样的红色和蓝色的点时,必然导致学习到不准确的分类模型。这也是,为什么对抗学习会以牺牲准确率为巨大代价。
极小极大公式真的适合对抗学习吗?
我们认为,这个答案是否定的!
由此我们提出了我们的一个新的对抗学习的公式,我们暂且称它为 最小-最小公式(min-min formulation)。
![217a02b68a2e7457069ff0d20d4ee770.png](https://i-blog.csdnimg.cn/blog_migrate/e1c81726d5bbed74363d2301b4c0cda8.jpeg)
我们提出的最小-最小公式,改变了内层的最大化损失函数(inner maximization) (最大化损失函数 的目的是 寻找 极其恶劣的对抗数据(most adversarial data))。内层优化寻找 友好的对抗数据(Friendly adversarial data)。友好的对抗数据,并不是以最大化损失函数为目的,而是在满足一定条件下,最小化损失函数。
下图展示了我们的最小-最小 公式 和 极小极大 公式的不同。
![3a9a036c57f0c58f41c4bacc8590e40c.png](https://i-blog.csdnimg.cn/blog_migrate/9fecd63597b21ceaeabf0819c5e6785e.png)
可见,极其恶劣的对抗数据目的在于最大化损失函数,并不在意当前模型对这个数据的分类正确与否。与之相比,我们的友好的对抗数据,在模型对它错误分类的时候,尽量使得损失函数变小,当模型对它正确分类的时候,使得损失函数变大。因此,我们的友好的对抗数据,是对当前模型的预测是敏感的,并不会一味的最大化损失函数。
如何实现 最小-最小 公式呢?
很简单!我们通过早早的停止PGD搜索步数 (early stopped PGD),来近似的实现我们的最小-最小公式。
![9de57cc8cea1aedb21b2a90d6d848387.png](https://i-blog.csdnimg.cn/blog_migrate/2dd459fccc999d72055f7a631650a960.png)
当PGD在搜索对抗数据的时候,如果发现当前的对抗数据被错误分类,PGD便会提前停止。这样产生的对抗数据,我们称为 友好的对抗数据。
有好的对抗学习(Friendly adversarial training - FAT) 便是基于友好的对抗数据学习到的鲁棒的神经网络。
感兴趣的小伙伴可以参考以下算法:
![463155c5f559b8fce60a10835bb31e77.png](https://i-blog.csdnimg.cn/blog_migrate/f17a313bcf66df785b0ad29a115c2e1d.png)
![abcf61b11f4a7409b3cf483a0a9d934e.png](https://i-blog.csdnimg.cn/blog_migrate/bc14134b974701ea3b4254a738cb89ef.png)
友好对抗学习(FAT)的好处是什么呢?
第一个好处就是,缓解了交叉混合问题(cross-over mixture problem)。
![ff9e53e4e40d690153f049a3b3c67054.png](https://i-blog.csdnimg.cn/blog_migrate/d9babc3dcbba9569623c3d47acd14ff5.jpeg)
如图,在图像分类问题中,这个交叉混合问题,可能不出现在输入空间(input space),但是有很大可能性出现在网络的中间某一层。我们的友好的对抗数据,可以有效的缓解了交叉混合的问题。
缓解了交叉混合问题,我们就更有可能学习到更加准确的神经网络啦。这样,神经网络即鲁棒又准确,何乐而不为呢?
第二个好处就是,我们的FAT很省时!因为我们的早停的PGD算法,并不需要更多的反向传递(backward propagation)。一旦找到了分类错误的友好对抗数据,立刻停止搜索。
![4288040b6bc9c5817c67a33aa27bb811.png](https://i-blog.csdnimg.cn/blog_migrate/f86f2e6b22fdb74098355486b1def48b.jpeg)
上图所示,虚线是传统的对抗学习平均每个训练时间需要的反向传递的个数,实线是我们的友好的对抗学习需要的反向传递的个数。我们在这里,选择了 t = 0,1,2,3 进行展示。显而易见,我们FAT在每个训练时间省下了很多反向传递(反向传递是对抗学习最耗时的操作)。
注意⚠️:当t = K (在这里 t = 10) 的时候,我们的友好的对抗学习(FAT),就变成了传统的对抗学习。所以,传统的对抗学习,是友好的对抗学习(FAT)的一个特列!
第三个优点:我们的FAT能实现更大的保护半径(epsilon)。
![acc8f5146f446dfbd7a823c0458ba556.png](https://i-blog.csdnimg.cn/blog_migrate/a314303de305e3f71e0b7963e8ee054f.jpeg)
就拿CIFAR-10 图片数据集举例子,传统的对抗学习目前能做到 每个像素点扰动半径最大可达16/255 (L_inf norm),再大训练就会失败。为什么呢?原因是极小极大公式的瓶颈。极小极大公式搜索的是 极其恶劣的对抗数据,极其恶劣的对抗数据会导致严重的交叉混合问题,如果保护半径加大,这种交叉混合问题会变得更加严重。这样,直接导致了训练的失败。(参考上图紫色线)。
然后,我们的友好的对抗学习(FAT),能有效的缓解交叉混合问题,因此,可以容忍更大的保护半径。
第四个优点:是骡子是马拉出来练练!
![910b5536ec306d1d9dbf58204e50d96d.png](https://i-blog.csdnimg.cn/blog_migrate/5abda72e16010485404d6633f5899adc.jpeg)
由于传统的对抗学习方法,比如Madry,CAT,DAT,TRADES,是我们的友好的对抗学习(FAT)的特列 (只需要把PGD换成我们的早停的PGD 即可)。
我们进行实验:FAT与这些方法取得的最好的成绩进行比较。我们进行了控制实验(control experiments),并没有去特意的调节超参(hyperparameters),除了生成对抗数据方式不同之外(传统的对抗学习,生成并学习极其恶劣的对抗数据,友好的对抗学习,生成并学习友好的对抗数据),其他参数控制相同。
与之相比,我们的方法可以极大的提升模型的准确率,并且保持了模型鲁棒性,甚至在鲁棒性上有所超越。
想了解更多?
关注我们的论文:https://arxiv.org/abs/2002.11242
我们的实验代码:zjfheart/Friendly-Adversarial-Training(包括可下载的鲁棒性模型。)
这项工作是由以下作者合作完成: Jingfeng Zhang (张景锋 - 新加坡国立大学), Xilie Xu (徐曦烈 - 山东大学泰山学堂), Bo Han (韩波 - 香港浸会大学,RIKEN-AIP),Gang Niu (牛罡 - 理化学研究所 RIKEN-AIP),Lizhen Cui (崔立真 - 山东大学软件学院,山东大学-南洋理工大学人工智能国际联合研究院(C-FAIR)), Masashi Sugiyama (杉山 将 - 理化学研究所 RIKEN-AIP,东京大学),Mohan Kankanhalli (新加坡国立大学)