看到篇paper,提供了一个极其厉害的生成对抗样本的黑箱攻击方式,之前的对抗攻击必须要知道受攻击模型的详细信息(包括模型结构参数,训练样本集等),但是本文所要分享的方法,是完全不需要知道这些信息的,只需要可以接触到受攻击模型的判别label即可完成对抗攻击。多么神奇而牛气哄哄的方法,让我们一块膜拜下这篇文章,看看为什么会有效。
面对的问题:
在不知道受攻击模型的网络结构,参数设置,以及训练样本的情况下,如何能够生成对抗样本,来使得受攻击模型误判。
以往的方法:
大多数都是针对模型,猜测探索模型的误判方向,找到更容易产生偏差的方向,在这些方向上做扰动,从而达到迷惑模型的目的。
现在的难点,是无法接触的关于模型的任何信息(除了知道它对接受到的输入打的标签),那么基于梯度的方法,也就没有用武之地了,因为没法针对性地探索模型特性。
牛人的思路从来都是开创性的,没有路子也可以硬生生地走出一条路子来。无法接触到受攻击模型,那么就自己造个替代模型;接触不到训练数据,那么就自己造一批训练数据。被攻击的简直也是会哭晕的,这啥都不给你也能给攻击,简直就是没有天理。
没法接触到受攻击模型的信息是吧,那就生成个替代模型,来模拟近似受攻击模型的某些决策边界。注意,替代模型并不是用来学习判别最优的,而是学习能够模仿受攻击模型的决策边界的替代能力。
根据常识,选择替代模型的大体结构,比如图像识别通常使用CNN。
光有替代模型还是不行的,还需要有数据啊,但是训练数据也拿不到。那还怎么搞呢?不是还可以接触到受攻击模型打标签这个动作么,是可以充分利用起来的。那就先造一批随机数据,然后让受攻击模型打上标签,然后再想个高效的办法,尽快能够探测评估出误导方向。这个时候就用到了雅克比矩阵了,在上批随机数据的基础上,构造一波新的探测数据,再去打标签。
合成数据集的必要性,全部遍历真实输入是不可能的,query过多容易被封。
Jacobian-Based Dataset Augmentation:
雅克比矩阵 ∂(F(x,θ))∂(x) ∂ ( F ( x , θ ) ) ∂ ( x ) 描述了输出 F F 对输入x x 的敏感程度,大值表示很小的输入会导致很大的输出值变化幅度,这些方向上,也更能描述模型的分类边界的样本情况。如下图所示,梯度与边界样本:
如何根据正常的样本 x x 生成对抗样本x∗ x ∗ ,使得模型误判 F(x∗)=y∗≠yx F ( x ∗ ) = y ∗ ≠ y x 。
对抗生成方法有很多,大部分都是基于梯度的,该论文提及的有两种。
1)一种是Goodfellow的方法(也叫Fast Gradient Sign Method):
δx=ϵ∗sgn[∂Cost(F,x,y)∂x]⟶x∗=x+δx δ x = ϵ ∗ s g n [ ∂ C o s t ( F , x , y ) ∂ x ] ⟶ x ∗ = x + δ x
sgn是符号函数。
背后的主要想法是:代价函数在输入的某方向上变化率最大,那么也是最容易使得代价变化的方向,代价函数是用来指导优化的(以正确率为目标),也就更容易使得误判发生。
2)一种是Papernot的方法:适合指定误导类别的对抗生成。
想将样本 x x 误导为类别t=argmaxjFj(x) t = a r g m a x j F j ( x ) , t≠label(x) t ≠ l a b e l ( x ) ,定义saliency map如下:
S(x,t)[i]=⎧⎩⎨⎪⎪0(∂(Ft(x))∂(xi))|∑j≠t∂Fj(x)∂(xi)|ifFt(x)∂xi<0or∑j≠t∂(Fj(x))∂(xi)>0others S ( x , t ) [ i ] = { 0 i f F t ( x ) ∂ x i < 0 o r ∑ j ≠ t ∂ ( F j ( x ) ) ∂ ( x i ) > 0 ( ∂ ( F t ( x ) ) ∂ ( x i ) ) | ∑ j ≠ t ∂ F j ( x ) ∂ ( x i ) | o t h e r s
怎么生成对抗样本呢?选择 ∂(Ft(x,θ))∂(xi) ∂ ( F t ( x , θ ) ) ∂ ( x i ) >0且 ∑j≠t∂(Fj(x))∂(xi)<0 ∑ j ≠ t ∂ ( F j ( x ) ) ∂ ( x i ) < 0 的输入维度,做扰动更新。
背后的主要想法是:
雅克比矩阵 ∂(F(x,θ))∂(x) ∂ ( F ( x , θ ) ) ∂ ( x ) 表明了函数 F(x,θ) F ( x , θ ) 对 x x 的敏感度,其绝对值越大的点,越更可能是分类的临界点。因此,根据雅克比矩阵值,可以缩小查找输入扰动有效点的范围。