前言
看到篇paper,提供了一个极其厉害的生成对抗样本的黑箱攻击方式,之前的对抗攻击必须要知道受攻击模型的详细信息(包括模型结构参数,训练样本集等),但是本文所要分享的方法,是完全不需要知道这些信息的,只需要可以接触到受攻击模型的判别label即可完成对抗攻击。多么神奇而牛气哄哄的方法,让我们一块膜拜下这篇文章,看看为什么会有效。
攻击的限制
面对的问题:
在不知道受攻击模型的网络结构,参数设置,以及训练样本的情况下,如何能够生成对抗样本,来使得受攻击模型误判。
以往的方法:
大多数都是针对模型,猜测探索模型的误判方向,找到更容易产生偏差的方向,在这些方向上做扰动,从而达到迷惑模型的目的。
现在的难点,是无法接触的关于模型的任何信息(除了知道它对接受到的输入打的标签),那么基于梯度的方法,也就没有用武之地了,因为没法针对性地探索模型特性。
基本思路
牛人的思路从来都是开创性的,没有路子也可以硬生生地走出一条路子来。无法接触到受攻击模型,那么就自己造个替代模型;接触不到训练数据,那么就自己造一批训练数据。被攻击的简直也是会哭晕的,这啥都不给你也能给攻击,简直就是没有天理。
1) 替代模型
没法接触到受攻击模型的信息是吧,那就生成个替代模型,来模拟近似受攻击模型的某些决策边界。注意,替代模型并不是用来学习判别最优的,而是学习能够模仿受攻击模型的决策边界的替代能力。
根据常识,选择替代模型的大体结构,比如图像识别通常使用CNN。
2) 合成样本
光有替代模型还是不行的,还需要有数据啊,但是训练数据也拿不到。那还怎么搞呢?不是还可以接触到受攻击模型打标签这个动作么,是可以充分利用起来的。那就先造一批随机数据,然后让受攻击模型打上标签,然后再想个高效的办法,尽快能够探测评估出误导方向。这个时候就用到了雅克比矩阵了,在上批随机数据的基础上,构造一波新的探测数据,再去打标签。
合成数据集的必要性,全部遍历真实输入是不可能的,query过多容易被封。
Jacobian-Based Dataset Augmentation:
雅克比矩阵 ∂(F(x,θ))∂(x) ∂ ( F ( x , θ ) ) ∂ ( x ) 描述了输出 F F 对输入
的敏感程度,大值表示很小的输入会导致很大的输出值变化幅度,这些方向上,也更能描述模型的分类边界的样本情况。如下图所示,梯度与边界样本:

因此在根据前面的一批合成样本,来生成后续的样本集时,想要更有效地合成数据集,就要强化这些方向上的数据的合成(基于雅克比的数据集合成方法)。
新样本的合成如下:
S:={ x+λsgn(JF[O(x)]):x∈S}∪S S := { x + λ s g n ( J F [ O ( x ) ] ) : x ∈ S } ∪ S
O(x) O ( x ) 是 x x 在受攻击模型下的label,