CVPR2021: 任何网络都能山寨!新型黑盒对抗攻击模拟未知网络进行攻击
共 14812字,需浏览 30分钟
·
2021-05-11 02:39
极市导读
本文介绍了一篇CVPR 2021的工作,该文解决了模型窃取攻击中长久以来存在的一个问题:训练代理模型的时候需要查询目标模型。本篇论文训练了一个“模拟器”(即Simulator) 可以模拟任何未知模型的输出。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
一.介绍
最近几年,元学习风生水起,这阵风也刮到了对抗攻击领域。本文解读对抗攻击与元学习联姻的两篇典型的论文(本文分为上下两篇,此为上篇),希望对后来的研究者有所启发。
利用元学习,可以将黑盒攻击的查询复杂度降低几个数量级!CVPR 2021的《Simulating Unknown Target Models for Query-Efficient Black-box Attacks》这篇论文解决了模型窃取攻击中长久以来存在的一个问题:训练代理模型的时候需要查询目标模型,因此查询量仍然很大,而且更为严重的问题是这种攻击方式可以被轻易地检测和防御。所以本篇论文的工作目标是训练一个“模拟器”(即Simulator) 可以模拟任何未知模型的输出。为此,基于知识蒸馏的MSE损失函数被应用在元学习中的内部和外部更新来学习多种不同网络模型的输出。如此,一旦训练完成,模拟器只需要少量的查询数据微调(fine-tune) 就可以精确地模拟未知网络的输出,从而使大量的查询转移到模拟器上,有效降低攻击中目标模型的查询复杂度。
论文链接:https://arxiv.org/abs/2009.00960
代码链接:https://github.com/machanic/SimulatorAttack
在正式介绍模拟器攻击之前,我们先看看对抗攻击的分类。
本文介绍的方法对应于query-based attacks下的score-based setting。
二.元学习帝国的崛起:背景知识
元学习的诞生可以追溯到八十年代,当时的深度学习还没有如今的火热规模, Jürgen Schmidhuber在1987年的论文《 Evolutionary principles in self-referential learning》一文中宣告了一种全新的机器学习方法的诞生:元学习。后来, Tom Schaul, Jürgen Schmidhuber俩人在2010年的论文《Metalearning》中更是确定了元学习的复兴。时间进入2012年,随着Hinton的深度学习崭露头角,元学习与强化学习更是借着深度学习的大潮,在各个领域扩展到了极致(例如人脸识别领域等,均可用元学习来加以强化cross domain的性能)。
典型的元学习技术包括以下几个概念:
Task:元学习通常将训练数据切分成一个个小的数据子集来训练meta-learner。“task”的意思与多任务学习的“task”不同,是指元学习训练所使用的数据子集。
Support set & query set: 每个task分成support set 和query set两个子集。Support set对应于算法中的内部更新,query set对应于算法中的外部更新。在本论文中,support set被命名为meta-train set,query set被命名为meta-test set。
Way:是class(类别)的别称。
Shot:指的是每个类别的样本数量。例如:1-shot指的并不是一共只有一个数据样本,而是每个类有1个样本。
图1展示了一个典型的K-shot的元学习方法的一般套路,其训练阶段的数据和测试阶段的数据包含不同的类别,而训练的每个task又被切分成support set(又名meta-train set)和query set(又名meta-test set)。
在测试的时候,元学习同样是在task上面测,每个task测出的准确率,汇总求和后求整体的均值。但是,值得注意的是,这种测试方法并不被本文中的模拟器攻击所采用,因为我们的目标是攻击,而非测试各个task的准确度!
图2 是一个典型的元学习方法(MAML)的算法流程,它学习每个task的时候先执行内部更新,再执行外部更新。内部更新学习support set的数据并用SGD将参数 更新为 '。而外部更新利用 '作为网络参数,输入query set的数据,计算一个对 求导的高阶梯度meta-gradient。这些meta-gradient最终被用于外部更新,去更新元学习器。
三、元学习与对抗攻击的联姻
在ICLR2020的Meta Attack论文中,元学习与对抗攻击第一次结合。Meta Attack方法使用Reptile训练一个元学习器,这是一个典型的conv-deconv结构的auto-encoder。此auto-encoder学习不同网络的梯度数据来回归各种网络梯度。在攻击的时候,由于元学习器可以直接提供梯度输出,因此可以不用查询目标模型去估计梯度。然而如果图片分辨率较高,则梯度map是一个很大的矩阵,此时轻量级的auto-encoder就无法准确预测梯度map的梯度值。因此,Meta Attack采取了一种取巧的办法,它从梯度图选择最大梯度值的125个元素进行回归。但是这种做法在攻击高分辨率图片时仍显得心有余而力不足(关于Meta Attack的详细分析见《Simulating Unknown Target Models for Query-Efficient Black-box Attacks》的related work一节)。于是,一种新的基于元学习的攻击方法便呼之欲出。
四、模拟器攻击
模拟器攻击(Simulator Attack)这篇论文致力于降低query-based attack的查询复杂度,因为假若攻击单个样本仅需要两位数的查询量时,该攻击便具有现实威胁。我们发现,任何黑盒模型都可以被一个相似的代理模型(即模拟器)所替代,如果能将一部分查询转移到这个模拟器上,那么真正的目标模型的查询压力便随之降低。为了做出这种模拟器,研究者们不断探索,诞生了被称为模型窃取攻击的办法,然而,模型窃取攻击需要在训练模拟器的时候大量查询目标模型。因此,这种攻击方式仍然会造成大量的查询,而且这种查询可以轻易地被目标模型的拥有者检测和防御。模拟器攻击首次解决了这个问题,Simulator在训练的阶段中没有与目标模型有任何交互,仅仅是攻击时花费少量的查询,便可以极大地节省攻击的查询量。总结一下,模拟器攻击在训练阶段时使用大量不同的现有模型生成的训练数据,并且将知识蒸馏损失函数应用在元学习中,这样在测试的时候就可以模拟任何未知的黑盒模型。
模拟器的训练
模拟器的训练流程开始之前,为了达到模拟任意黑盒模型的泛化能力,我们收集了大量不同的分类网络,如VGG-19、ResNet-50、MobileNet等来构建task,如此便建造了一个巨大的模拟环境。每个task中包含的数据是如下步骤生成得到:1.随机选择一个已训网络;2.施加Bandits攻击来攻击该网络产生的中间数据,数据包括攻击中产生的query sequence和与之对应的该网络的输出logits两种;3.query sequence按照query pair生成对应的迭代编号被切分成两部分:meta-train set和meta-test set。
图3和算法1展示了模拟器攻击的训练过程。首先找一些真实图片作为输入,用黑盒攻击算法(Bandits)攻击一个随机选择的分类网络生成query sequence,这些query sequence都是攻击中间数据,被存储在硬盘上。另外除了query sequence,它们对应的那个分类网络的输出logits也被存储在硬盘上,被称为“伪标签”(即pseudo label)。生成好数据之后便是模拟器的训练过程了,其过程如下。
-
1.初始化。我们随机采样K个task组成一个mini-batch进行学习。在学习每个task之前,模拟器将其参数重新初始化为 (由上一批更新得到的),这些权重 在外部更新的时候还会再次使用,因此需要保存起来。
-
2.Meta-train。模拟器以meta-train set作为输入来进行内部更新,其内部更新过程是一个典型知识蒸馏:我们优化MSE损失函数来推动模拟器的输出与随机采样的分类网络一致,优化中采用SGD梯度下降若干次循环。这个过程对应于攻击阶段的微调过程。
-
3.Meta-test。在若干迭代次数之后,模拟器网络的参数收敛到 ‘。然后,损失函数值 通过输入第 个 task 的 meta-test set 到网络而得到。之后, 元梯度 meta-gradient) 对 计算得到。以上只是一个 task 得到的元梯度, 个task 的所有元梯度被汇总并且求均值 来更新模拟器 外部更新 ),,由此模拟器可以学到泛化的模拟任意网络的能力。
-
4.损失函数。为了训练模拟器,损失函数必不可少。我们选择了基于知识蒸馏的损失函数来让模拟器与随机选择的分类网络输出一致。这个损失函数同时被用在内部和外部更新中。给定一个 query pair 的两个 query 和 (由于Bandits攻击使用有限差分法去估计梯度,因此每次迭代生成一个query pair)。模拟器和随机选择的分类网络的logits输出分别记为 和p。如下MSE损失函数将使得模拟器的输出和伪标签趋近于一致。
模拟器攻击
模拟器攻击的算法流程如算法2和图4所示,它沿袭了Bandits攻击的逻辑,值得注意的是第8行至第17行:在刚开始攻击的t个迭代内(warm-up阶段),query直接被输入到目标模型中,并且使用一个双端队列收集这些输入和输出。在warm-up之后的迭代中,每隔m次迭代才使用一次目标模型,其余迭代一律输入使用模拟器来输出。因此目标模型和模拟器的使用是轮流交替进行的,这种方法一方面保证了大部分查询压力被转移到模拟器中,另一方面保证了模拟器每隔m次迭代就得到机会fine-tune一次,这保证了后期的迭代中模拟器能“跟得上不断演化的query的节奏,及时与目标模型保持一致”。
实验
我们在三个数据库上进行实验:CIFAR-10、CIFAR-100和TinyImageNet,其中CIFAR-10和CIFAR-100数据库上我们攻击PyramidNet-272、GDAS、WRN-28和WRN-40这四种网络,而TinyImageNet数据库上我们攻击ResNeXt-101 (32x4d)、ResNeXt-101 (64x4d)和DenseNet-121三种网络。
在targeted attack中,我们设置target label为原始(true label+1)%class_number。对比方法我们选择NES、RGF、P-RGF、Meta Attack和Bandits,其中Bandits被作为baseline。我们的方法设置参数可参见表1。
剥离实验的结果如图5所示。值得一看的是图5(b),它展示了不同的simulator-predict interval m设置下的untargeted和targeted attack的攻击结果,虽然越大的simulator-predict interval会造成越多的query被输入给模拟器,但是也意味着模拟器得到越少的机会被fine-tune,因此在targeted attack这种困难的攻击中很难达到较高的成功率。其他的结果的分析可详见原始论文。
表2-表5展示的10000次查询限制下实验结果,而不同的最大查询预算限制下的成功率见图6。可以得出结论:模拟器攻击相比于Bandits攻击和其他攻击,可以将查询复杂度降低几个数量级而不改变成功率!这一结果同样也显示在攻击防御模型的结果中(表6)!
结论
“万物皆可模拟!”运用模拟器可以模仿各种未知网络的输出,甚至是训练过程中没见过的网络,这就是模拟器攻击这篇论文所展现出的强大能力。这篇论文确定了一种新的攻击形式:攻击者可以在获知目标模型的最少量的信息的情况下成功地伪造出相似的模型,即模拟器。在攻击时,这就可以将大量的查询转移到模拟器上,从而将查询复杂度显著降低而不过多地改变成功率!
如果觉得有用,就请分享到朋友圈吧!
公众号后台回复“RegNet”获取资源链接~
顶会干货:CVPR 二十年,影响力最大的 10 篇论文!| CVPR2021 最新18篇 Oral 论文|学术论文投稿与Rebuttal经验分享
实操教程:PyTorch自定义CUDA算子教程与运行时间分析|pytorch中使用detach并不能阻止参数更新
招聘面经:秋招计算机视觉汇总面经分享|算法工程师面试题汇总
最新CV竞赛:2021 高通人工智能应用创新大赛|CVPR 2021 | Short-video Face Parsing Challenge
# 极市原创作者激励计划 #