手把手教你如何取得MSC对抗赛的胜利
yuyutoo 2024-10-13 00:29 2 浏览 0 评论
雷锋网(公众号:雷锋网)按:本文为雷锋字幕组编译的技术博客,原标题 Playing with adversarial attacks on Machines Can See 2018 competition ,作者为 snakers41 。
翻译 | 廖颖 整理 | MY
对抗攻击比赛的简介
TLDR;
我偶然地参加了 MCS2018 对抗比赛。参加这项比赛的时候已经很晚了(加入的时候距离截止只有差不多一周的时间),但最后还是组成了一个四人小组。其中,小组中三个成员(加上我)的付出是这次胜利的必然条件(去掉其中任意一个,我们都可能与胜利擦身而过)。
这项比赛的目标是改变人脸(要求结构相似度 SSIM 不低于 0.95),使得卷积神经网络这个黑箱不能区分源人脸和目标人脸的差别。
简单描述比赛的主旨——修改人脸,使得黑箱不能区分两张脸的差别(至少从 L2 范数表示的欧氏距离的距离度量上来看)。
对抗攻击需要的工作以及对我们有用的东西:
· 快速梯度标记法(FGSM)是有用的,加入启发式会使得它更好一点;
· 快速梯度取值方法(FGVM),添加启发式会大大改善效果;
· 生成式差分进化(恒星网 Stellar 的一篇文章讲到这个方法)+ 一个像素值的攻击;
· 模型融合(最好的网络结构是 6 个 34 层 ResNet 模型);
· 目标图像组合的巧妙遍历;
· 基本上在进行 FGVM 攻击时就尽早停止。
对我们没用的东西:
· 向 FGVM 添加动量(这对那些排名较低的队伍有效,或许融合+启发式的组合比动量更有效?);
·Carlini 和 Wagner 提出的攻击方法(C&W 攻击,基本上是一种端到端的攻击,关注白箱模型的 logits)——这种方法对白箱(WB)有用,但对黑箱(BB)没用;
· 端到端的基于 Siamese LinkNet(一种类似于 UNet 的架构,但是基于 ResNet 的)的方法。同样是对白箱有用,而对黑箱无用。
我们还没有来得及尝试的(时间不够,也或者是不够努力和坚持):
· 对学生学习适当增强测试(我们也会修改描述器);
·在攻击的时候进行增强。
比赛的大致介绍:
· 比赛包含了 1000 张 5+5 图像组合的小型数据集;
· 提供给学生网络学习的数据集相当大——超过 1 万张图片;
· 黑箱是作为大量预编译的 Caffe 模型(因为使用了这些,不能很好地在现在的软件版本上使用——但最终还是由主办方处理了)。这还是有点痛苦的,因为黑箱不接受批量图像;
· 这个比赛提供 baseline 代码(实话说,没有这个开源代码,我想可能没什么人了)。
核心材料:
· 结果复现的代码库;
· 我们的演示;
· 所有优胜者的演示。
1、MCS2018 比赛概览以及我是如何入选的
比赛和方法
实话说,我为这个有趣的领域着迷。我以为奖品里有 GTX 1080 Ti FE 版本显卡,就显得比赛等级相对「低」(远远赶不上用 Kaggle + 整个 ODS 团队与 4000 人竞争)。
像上面提到的,比赛的目标是要混淆黑箱模型,使它不能区分两个人的差别(用 L2 范式或欧式距离)。这项比赛是「黑箱」比赛,所以我们不得不在给定的数据上对学生网络进行蒸馏,也希望黑箱梯度和白箱梯度在攻击性能上足够相似。
事实上如果你阅读了学术文献(比如这篇和这篇,即使它们并不会真正告诉你在实际操作中什么是有用的),并对顶级团队实现模型进行蒸馏,你就可以轻易发现以下一些规律:
· 最简单的执行攻击(在现代的框架上)包括白箱或者了解你正攻击的卷积神经网络 CNN 的内部结构(或仅仅是一个架构);
聊天中有人提出建议 ... 计算出黑箱进行推断的时间,从而压缩它的结构;
· 考虑到给定了足够多的数据,你可以用正确训练的白箱来模拟黑箱;
· 当下最经典的方法有:
端到端的 C&W 攻击(在这里并没有用);
FGSV 的巧妙扩展(比如动量+集成)。
实话说我们也曾百思不得其解,队伍里两个人采用了完全不同的端到端解决方案(彼此不了解,即完全独立的),但他们对黑箱都不起作用。这可能意味着在我们的任务设置中,存在一些隐藏的设置泄漏,而我们并没注意到。像很多完全采用端到端的现代机器视觉应用可以给出很好的结果(比如风格转换、深部分水岭算法、图像生成、减少噪声和伪影等),但在这没用。
梯度方法是如何工作的
基本上你可以通过蒸馏,用白箱来模拟黑箱,然后计算出输入图像对模型输出的梯度。秘密还是像往常一样藏在启发式中。
目标矩阵
目标矩阵是一个 L2 范式(欧氏距离)的均值,是对源图像和目标图像(5*5)的 25 个组合取平均。
由于 CodaLab 的限制,我认为个人得分(和团队总分)都是由管理员手动操控的,这就有点后怕了。
团队
我在训练了学生网络之后效果比其他人都好(目前为止),和 Atmyre 讨论后(因为她之前遇到一些类似的问题,她帮助我使用正确编译的黑箱),我们分享了彼此的分数,当然在比赛截止前 2、3 天我们没有分享方法和代码:
· 我的端到端模型失败了(她的也是);
· 我有很棒的学生模型;
·他们具有 FGVM 启发式的优秀差分(他们的代码是基于 baseline 的);
· 我只是刚刚开始处理基于梯度的模型,本地上实现接近 1.1——最初因为个人原因,我是拒绝使用 baseline 代码的(毫无挑战);
·那时候他们还没有太强的计算能力;
· 最后我们冒了一个险,结合了其他力量——我献出了我的 devbox / CNNs / ablation 实验和观测,他们提供了发布了数周的代码库。
再一次向她的组织能力及无私建议表达深深的感谢。
队伍成员如下:
· https://github.com/atmyre——她当时是队长(我从她的表现猜想的)。她提交了最终版的遗传差分进化攻击;
· https://github.com/mortido——他用 stellar 启发式最好地实现了 FGVM 攻击 + 用 baseline code 训练了 2 个模型;
·https://github.com/snakers4 - 除了一些消融测试,我提供了 3 个高分的学生模型+计算能力+演示期间和 最后提交版的加班;
· https://github.com/stalkermustang;
最后,我们在彼此身上学到很多,很开心有这次经历。缺少上面三位中哪一位对贡献,我们都不能取得胜利。
2、学生卷积神经网络蒸馏
我用学生模型在训练中实现了最好的分数,因为我用了自己的代码而不是 baseline 里的。
关键点 /有效点:
·对每一个架构单独设计 LR regime;
· 开始时用 Adam + LR 衰减进行训练;
· 然后使用折叠 与/或,甚至更聪明的(我并没有采用)像周期性学习率或权重集成;
· 仔细监控欠拟合和过拟合以及模型容量;
· 手动调节你的日志,不要完全依赖自动日记。虽然它们也可以很好的工作,但如果你每一个都正确调节,则训练时间可以缩短 2 到 3 倍。尤其是遇到像 DenseNet 这样重梯度的模型;
·最好的架构都是适当笨重的;
· 训练 L2 损失而不是均方差也是可以的,但没有那么精确。运行用均方差训练的模型比用 L2 损失训练模型表现出 L2 距离更接近黑箱模型输出。大概是因为均方差,我们使用的箱是批量分别训练每个 Bx512 的对象(允许更多的微调和图像间的信息共享),而 L2 范式是分别训练 2x512 的向量。
没有用的:
· 基于 Inception 的架构(并不合适,因为高的下采样和更高的所需分辨率)。虽然第三名试图采用 Inception-v1 和 全分辨率图像(大约是 250x250);
· 基于 VGG 的架构(过拟合);
·「轻」架构(SqueezeNet / MobileNet——欠拟合);
· 图像增强(不修改描述器——即使第三名的朋友关掉了);
·在全尺寸图像上操作;
·富有挑战精神的主办方在网络最后还是提供了批量规范。不过这对我的队伍并没有什么用,我使用的是自己的代码,但我不太明白为什么它也在这儿;
· 使用特征图和单像素攻击。假定这对全尺寸图像更有用(仅仅比较 112x112x search_space 和 299x299xseach_space)。
我们最好的模型——注意最高分数是 3 * 1e-4。同时也考虑模型的复杂性,不难猜到黑箱模型是 ResNet34。在我的测试中,ResNet50+ 表现不如 ResNet34。
第一名的均方差损失
3、最终得分和消融分析
我们的消融分析就像这样:
顶级解决方案就像这样(好吧,这是对堆叠 ResNet 开了玩笑,他认为 ResNet 是黑箱架构):
其他队伍的一些巧妙有用的技巧:
·自适应的 epsilon 参数;
·增强数据;
· 动量;
· 牛顿动量;
·攻击镜像反射;
· 破解数据——5000 张组合图像中只有 1000 张特有的图像,也就是说你可以生成更多的训练数据。
对 FGVM 有用的启发式:
· 噪声= eps * clamp(grad / grad.std, -2, 2);
·通过梯度集成几个卷积神经网络 CNN;
· 仅当平均损失降低时保存变化;
· 使用目标组合实现更鲁邦的目标;
· 仅使用超过标准均方差的梯度(对 FGSV)。
简单总结:
· 第一名是最不优雅的解决方案;
· 我们有最多样化的解决方案;
· 第三名是最优雅的解决方案。
4、端到端模型
即使他们失败了,在未来也是值得一试的。更多细节请参考官网,简言之,我们尝试了:
· C&W 攻击;
·2 个目标激励的 Siamese LinkNet;
端到端模型
端到端模型流程
我还是认为我的损失是相当优美的。
5、参考文献和进一步阅读
1、比赛主页
2、我们的公共库
3、一个与这个主题接近的关于变分自编码(VAE)的文章系列
4、关于结构相似性(SSIM)的材料
1、维基百科
2、"Backpropable" PyTorch 实现
5、差分进化算法的材料
1、 Stellar 的博客
2、 SciPy
6、演示
1、我们的
2、所有的
7、最有用的两篇文章
1、https://arxiv.org/pdf/1710.06081.pdf
2、https://arxiv.org/abs/1708.03999
8、2 all over the place papers:
1、https://arxiv.org/abs/1712.07107
2、https://arxiv.org/abs/1801.00553
原文链接: https://spark-in.me/post/playing-with-mcs2018-adversarial-attacks
雷锋网雷锋网
相关推荐
- 史上最全的浏览器兼容性问题和解决方案
-
微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...
-
- 平面设计基础知识_平面设计基础知识实验收获与总结
-
CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...
-
2025-02-21 16:01 yuyutoo
- 写作排版简单三步就行-工具篇_作文排版模板
-
和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...
- 写一个2048的游戏_2048小游戏功能实现
-
1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...
- 今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……
-
最近的天气暖和得让很多小伙伴们喊“热”!!! 昨天的气温到底升得有多高呢?你家有没有榜上有名?...
- CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式
-
之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...
- 你的自我界限够强大吗?_你的自我界限够强大吗英文
-
我的结果:A、该设立新的界限...
- 行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?
-
行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...
-
- 让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
-
去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...
-
2025-02-21 16:00 yuyutoo
- 今年国家综合性消防救援队伍计划招录消防员15000名
-
记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...
- 一起盘点最新 Chrome v133 的5大主流特性 ?
-
1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...
- 竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使
-
style="text-align:center;"data-mce-style="text-align:...
- 学物理能做什么?_学物理能做什么 卢昌海
-
作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...
-
- 你不知道的关于这只眯眼兔的6个小秘密
-
在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...
-
2025-02-21 16:00 yuyutoo
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)