目前,研究者们提出了越来越多的黑盒攻击算法,其中基于「模拟」的攻击成为了一种新的攻击形式。来自清华的研究者解决了模型窃取攻击中长久以来存在的一个问题:训练代理模型的时候需要查询目标模型。训练了一个「万能的模拟器」,可以模拟任何未知模型的输出,并且该模拟器在训练的时候无需查询目标模型。
介绍
最近几年,元学习风生水起,这阵风也刮到了对抗攻击领域。本文解读对抗攻击与元学习联姻的两篇典型的论文(本文分为上下两篇,此为上篇),希望对后来的研究者有所启发。
利用元学习,可以将黑盒攻击的查询复杂度降低几个数量级!CVPR2021的《SimulatingUnknownTargetModelsforQuery-EfficientBlack-boxAttacks》这篇论文解决了模型窃取攻击中长久以来存在的一个问题:训练代理模型的时候需要查询目标模型,因此查询量仍然很大,而且更为严重的问题是这种攻击方式可以被轻易地检测和防御。所以本篇论文的工作目标是训练一个「模拟器」(即Simulator)可以模拟任何未知模型的输出。为此,基于知识蒸馏的MSE损失函数被应用在元学习中的内部和外部更新来学习多种不同网络模型的输出。如此,一旦训练完成,模拟器只需要少量的查询数据微调(fine-tune)就可以精确地模拟未知网络的输出,从而使大量的查询转移到模拟器上,有效降低攻击中目标模型的查询复杂度。
在正式介绍模拟器攻击之前,我们先看看对抗攻击的分类。
本文介绍的方法对应于Query-basedattacks下的Score-basedsetting。
元学习帝国的崛起:背景知识
典型的元学习技术包括以下几个概念:
Task:元学习通常将训练数据切分成一个个小的数据子集来训练meta-learner。“task”的意思与多任务学习的“task”不同,是指元学习训练所使用的数据子集。
Supportset&queryset:每个task分成supportset和queryset两个子集。Supportset对应于算法中的内部更新,queryset对应于算法中的外部更新。在本论文中,supportset被命名为meta-trainset,queryset被命名为meta-testset。
Way:是class(类别)的别称。
Shot:指的是每个类别的样本数量。例如:1-shot指的并不是一共只有一个数据样本,而是每个类有1个样本。
图1展示了一个典型的K-shot的元学习方法的一般套路,其训练阶段的数据和测试阶段的数据包含不同的类别,而训练的每个task又被切分成supportset(又名meta-trainset)和queryset(又名meta-testset)。
图1:一个典型的元学习将数据切分成task训练,而每个task包含的5个分类不同,1-shot是指每个分类只有一个样本。
在测试的时候,元学习同样是在task上面测,每个task测出的准确率,汇总求和后求整体的均值。但是,值得注意的是,这种测试方法并不被本文中的模拟器攻击所采用,因为该研究的目标是攻击,而非测试各个task的准确度。
图2是一个典型的元学习方法(MAML)的算法流程,它学习每个task的时候先执行内部更新,再执行外部更新。内部更新学习supportset的数据并用SGD将参数θ更新为θ'。而外部更新利用θ'作为网络参数,输入queryset的数据,计算一个对θ求导的高阶梯度meta-gradient。这些meta-gradient最终被用于外部更新,去更新元学习器。
图2:MAML的训练流程,内部更新将初始化参数的θ更新为θ',而外部更新利用θ'去计算loss。
元学习与对抗攻击的联姻
在ICLR2020的MetaAttack论文中,元学习与对抗攻击第一次结合。MetaAttack方法使用Reptile训练一个元学习器,这是一个典型的conv-deconv结构的auto-encoder。此auto-encoder学习不同网络的梯度数据来回归各种网络梯度。在攻击的时候,由于元学习器可以直接提供梯度输出,因此可以不用查询目标模型去估计梯度。然而如果图片分辨率较高,则梯度map是一个很大的矩阵,此时轻量级的auto-encoder就无法准确预测梯度map的梯度值。因此,MetaAttack采取了一种取巧的办法,它从梯度图选择最大梯度值的125个元素进行回归。但是这种做法在攻击高分辨率图片时仍显得心有余而力不足(关于MetaAttack的详细分析见《SimulatingUnknownTargetModelsforQuery-EfficientBlack-boxAttacks》的relatedwork一节)。于是,一种新的基于元学习的攻击方法便呼之欲出。
模拟器攻击
模拟器攻击(SimulatorAttack)这篇论文致力于降低query-basedattack的查询复杂度,因为假若攻击单个样本仅需要两位数的查询量时,该攻击便具有现实威胁。研究发现,任何黑盒模型都可以被一个相似的代理模型(即模拟器)所替代,如果能将一部分查询转移到这个模拟器上,那么真正的目标模型的查询压力便随之降低。
为了做出这种模拟器,研究者们不断探索,诞生了被称为模型窃取攻击的办法,然而,模型窃取攻击需要在训练模拟器的时候大量查询目标模型。因此,这种攻击方式仍然会造成大量的查询,而且这种查询可以轻易地被目标模型的拥有者检测和防御。
模拟器攻击首次解决了这个问题,Simulator在训练的阶段中没有与目标模型有任何交互,仅仅是攻击时花费少量的查询,便可以极大地节省攻击的查询量。总结一下,模拟器攻击在训练阶段时使用大量不同的现有模型生成的训练数据,并且将知识蒸馏损失函数应用在元学习中,这样在测试的时候就可以模拟任何未知的黑盒模型。
模拟器的训练
模拟器的训练流程开始之前,为了达到模拟任意黑盒模型的泛化能力,研究人员收集了大量不同的分类网络,如VGG-19、ResNet-50、MobileNet等来构建task,如此便建造了一个巨大的模拟环境。每个task中包含的数据是如下步骤生成得到:
1.随机选择一个已训练的网络;
2.施加Bandits攻击来攻击该网络产生的中间数据,数据包括攻击中产生的querysequence和与之对应的该网络的输出logits两种;
3.querysequence按照querypair生成对应的迭代编号被切分成两部分:meta-trainset和meta-testset。
图3:模拟器攻击的数据生成流程和训练过程。
图3和算法1展示了模拟器攻击的训练过程。首先找一些真实图片作为输入,用黑盒攻击算法(Bandits)攻击一个随机选择的分类网络生成querysequence,这些querysequence都是攻击中间数据,被存储在硬盘上。另外除了querysequence,它们对应的那个分类网络的输出logits也被存储在硬盘上,被称为“伪标签”(即pseudolabel)。
生成好数据之后便是模拟器的训练过程了,其过程如下:
1.初始化。该研究随机采样K个task组成一个mini-batch进行学习。在学习每个task之前,模拟器将其参数重新初始化为θ(由上一批更新得到的),这些权重θ在外部更新的时候还会再次使用,因此需要保存起来。
2.Meta-train。模拟器以meta-trainset作为输入来进行内部更新,其内部更新过程是一个典型知识蒸馏:该研究优化MSE损失函数来推动模拟器的输出与随机采样的分类网络一致,优化中采用SGD梯度下降若干次循环。这个过程对应于攻击阶段的微调过程。
3.Meta-test。在若干迭代次数之后,模拟器网络的参数收敛到θ’。然后,损失函数值L_i通过输入第i个task的meta-testset到网络而得到。之后,元梯度(meta-gradient)对θ计算得到。以上只是一个task得到的元梯度,K个task的所有元梯度被汇总并且求均值来更新模拟器(外部更新),由此模拟器可以学到泛化的模拟任意网络的能力。
4.损失函数。为了训练模拟器,损失函数必不可少。我们选择了基于知识蒸馏的损失函数来让模拟器与随机选择的分类网络输出一致。这个损失函数同时被用在内部和外部更新中。给定一个querypairQ_i的两个queryQ_i,1和Q_i,2(由于Bandits攻击使用有限差分法去估计梯度,因此每次迭代生成一个querypair)。模拟器和随机选择的分类网络的logits输出分别记为和p。如下MSE损失函数将使得模拟器的输出和伪标签趋近于一致。
模拟器攻击算法介绍
模拟器攻击的算法流程如算法2和图4所示,它沿袭了Bandits攻击的逻辑,值得注意的是第8行至第17行:在刚开始攻击的t个迭代内(warm-up阶段),query直接被输入到目标模型中,并且使用一个双端队列收集这些输入和输出。在warm-up之后的迭代中,每隔m次迭代才使用一次目标模型,其余迭代一律输入使用模拟器来输出。因此目标模型和模拟器的使用是轮流交替进行的,这种方法一方面保证了大部分查询压力被转移到模拟器中,另一方面保证了模拟器每隔m次迭代就得到机会微调一次,这保证了后期的迭代中模拟器能「跟得上不断演化的query的节奏,及时与目标模型保持一致。」
图4:模拟器攻击。前t次迭代为warm-up阶段,收集输入图片和输出来微调模拟器,后面m次迭代直接输入模拟器,减轻查询压力。
实验
该研究在三个数据集上进行实验: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三种网络。
在targetedattack中,该研究设置targetlabel为原始(truelabel+1)%class_number。对比方法该研究选择NES、RGF、P-RGF、MetaAttack和Bandits,其中Bandits作为基准。方法设置参数可参见表1:
表1:模拟器攻击的默认参数设置。
图5:AblationStudy。
剥离实验的结果如图5所示。值得一看的是图5(b),它展示了不同的simulator-predictintervalm设置下的untargeted和targetedattack的攻击结果,虽然越大的simulator-predictinterval会造成越多的query被输入给模拟器,但是也意味着模拟器得到越少的机会被微调,因此在targetedattack这种困难的攻击中很难达到较高的成功率。其他的结果分析可详见原始论文。
表2:untargetedattack的CIFAR-10和CIFAR-100数据集的实验结果。
表3:targetedattack的CIFAR-10和CIFAR-100数据集的结果。
表4:范数下的untargetedattack攻击TinyImageNet的实验结果。
表5:范数下的targetedattack攻击TinyImageNet的实验结果。
图6:不同最大查询预算的限制下的成功率。
表2-表5展示的10000次查询限制下实验结果,而不同的最大查询预算限制下的成功率见图6。可以得出结论:模拟器攻击相比于Bandits攻击和其他攻击,可以将查询复杂度降低几个数量级而不改变成功率。这一结果同样也显示在攻击防御模型的结果中(表6)。
表6:范数攻击防御模型的结果,所有防御模型皆选择ResNet-50backbone。
结论
「万物皆可模拟!」运用模拟器可以模仿各种未知网络的输出,甚至是训练过程中没见过的网络,这就是模拟器攻击这篇论文所展现出的强大能力。这篇论文确定了一种新的攻击形式:攻击者可以在获知目标模型的最少量的信息的情况下成功地伪造出相似的模型,即模拟器。在攻击时,这就可以将大量的查询转移到模拟器上,从而将查询复杂度显著降低而不过多地改变成功率。