对抗样本之黑箱对抗:Practical Black-Box Attacks Against Machine Learning

前言

  看到篇paper,提供了一个极其厉害的生成对抗样本的黑箱攻击方式,之前的对抗攻击必须要知道受攻击模型的详细信息(包括模型结构参数,训练样本集等),但是本文所要分享的方法,是完全不需要知道这些信息的,只需要可以接触到受攻击模型的判别label即可完成对抗攻击。多么神奇而牛气哄哄的方法,让我们一块膜拜下这篇文章,看看为什么会有效。

攻击的限制

面对的问题:
  在不知道受攻击模型的网络结构,参数设置,以及训练样本的情况下,如何能够生成对抗样本,来使得受攻击模型误判。
以往的方法:
  大多数都是针对模型,猜测探索模型的误判方向,找到更容易产生偏差的方向,在这些方向上做扰动,从而达到迷惑模型的目的。
现在的难点,是无法接触的关于模型的任何信息(除了知道它对接受到的输入打的标签),那么基于梯度的方法,也就没有用武之地了,因为没法针对性地探索模型特性。

基本思路

  牛人的思路从来都是开创性的,没有路子也可以硬生生地走出一条路子来。无法接触到受攻击模型,那么就自己造个替代模型;接触不到训练数据,那么就自己造一批训练数据。被攻击的简直也是会哭晕的,这啥都不给你也能给攻击,简直就是没有天理。

1) 替代模型

  没法接触到受攻击模型的信息是吧,那就生成个替代模型,来模拟近似受攻击模型的某些决策边界。注意,替代模型并不是用来学习判别最优的,而是学习能够模仿受攻击模型的决策边界的替代能力
  根据常识,选择替代模型的大体结构,比如图像识别通常使用CNN。

2) 合成样本

  光有替代模型还是不行的,还需要有数据啊,但是训练数据也拿不到。那还怎么搞呢?不是还可以接触到受攻击模型打标签这个动作么,是可以充分利用起来的。那就先造一批随机数据,然后让受攻击模型打上标签,然后再想个高效的办法,尽快能够探测评估出误导方向。这个时候就用到了雅克比矩阵了,在上批随机数据的基础上,构造一波新的探测数据,再去打标签。
  合成数据集的必要性,全部遍历真实输入是不可能的,query过多容易被封。
  Jacobian-Based Dataset Augmentation:
  雅克比矩阵 (F(x,θ))(x) ∂ ( F ( x , θ ) ) ∂ ( x ) 描述了输出 F F 对输入x x 的敏感程度,大值表示很小的输入会导致很大的输出值变化幅度,这些方向上,也更能描述模型的分类边界的样本情况。如下图所示,梯度与边界样本:

对抗样本之黑箱对抗:Practical Black-Box Attacks Against Machine Learning_第1张图片

  因此在根据前面的一批合成样本,来生成后续的样本集时,想要更有效地合成数据集,就要强化这些方向上的数据的合成(基于雅克比的数据集合成方法)。
  新样本的合成如下:
   S:={x+λsgn(JF[O(x)]):xS}S S := { x + λ s g n ( J F [ O ( x ) ] ) : x ∈ S } ∪ S
   O(x) O ( x ) x x 在受攻击模型下的label,JF=Fxi J F = ∂ F ∂ x i 。合成新数据多少条,就要query多少次受攻击模型。
   Notice: 替代模型的学习目标;合成样本的可靠性
  利用合成数据训练替代模型,学习到分类边界。OK了,剩下的就是利用已经学习了分类边界识别能力的模型,做迁移对抗。

对抗样本的生成方法

  如何根据正常的样本 x x 生成对抗样本x x ∗ ,使得模型误判 F(x)=yyx 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 ) tlabel(x) t ≠ l a b e l ( x ) ,定义saliency map如下:
   S(x,t)[i]=0((Ft(x))(xi))|jtFj(x)(xi)|ifFt(x)xi<0orjt(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且 jt(Fj(x))(xi)<0 ∑ j ≠ t ∂ ( F j ( x ) ) ∂ ( x i ) < 0 的输入维度,做扰动更新。
  背后的主要想法是
  雅克比矩阵 (F(x,θ))(x) ∂ ( F ( x , θ ) ) ∂ ( x ) 表明了函数 F(x,θ) F ( x , θ ) x x 的敏感度,其绝对值越大的点,越更可能是分类的临界点。因此,根据雅克比矩阵值,可以缩小查找输入扰动有效点的范围。

思考

  1. 真的无先验知识么?
    说是什么先验信息都没有获取到,其实隐含着知道通用视觉模型使用CNN这一基本先验知识,实际上还是针对性地做对抗。
  2. 这种方法,对于人脸识别模型的攻击是否仍然可以有效?
    答案是模糊的。难点之一在于交互困难,另外通常的分类边界是否还有效有待验证,可能需要更为针对的合成数据方法。
  3. 如何计算F(x,θ)x ∂ F ( x , θ ) ∂ x ?
    papernot是将梯度推导出来,将 x,θ,y x , θ , y 联系到一起。直观上,可以对每条样本都能搞个对抗样本出来。
    但是在tf里面,可自动推导梯度,我们还需要那么麻烦地推导么?貌似不用就可以,直接固定 θ θ ,将x设定为tf.variable。正常x作为初始值,从而自动求导。

    • 对抗样本是针对单条样本来生成,还是针对某类别样本来生成。
      这是个问题,看实际情况,想对单条样本搞还是对某类样本搞,看实际问题。
    • Reference

      1. 《Practical Black-Box Attacks Against Machine Learning》
      2. 《Explaining and Harnessing Adversarial Examples》
      3. 《The Limitations of Deep Learning in Adversarial Setting》

你可能感兴趣的:(技术博客,对抗样本,adversarial,examples,CNN,black-box,attacks,adversarial,methods)