• Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples


    Athalye A, Carlini N, Wagner D, et al. Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples[J]. arXiv: Learning, 2018.

    @article{athalye2018obfuscated,
    title={Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples},
    author={Athalye, Anish and Carlini, Nicholas and Wagner, David},
    journal={arXiv: Learning},
    year={2018}}

    由于有很多defense方法都是基于破坏梯度(不能有效计算梯度, 梯度爆炸, 消失), 但是作者提出一种算法能够攻破这一类方法, 并提议以后的defense方法不要以破坏梯度为前提.

    主要内容

    (f(cdot)): 模型;
    (f(x)_i): 样本(x)为类别(i)的概率;
    (f^j(cdot)): 第(j)层;
    (f^{1..j}(cdot)): 第(1)(j)层;
    (c(x)): (arg max_i f(x)_i);
    (c^*(x)): 真实标签.

    Obfuscated Gradients

    • Shattered Gradients: 一些不可微的defense, 或者一些令导数不存在的defense造成;
    • Stochastic Gradients: 一些随机化的defense造成;
    • Exploding & Vanishing Gradients: 通常由一些包括多次评估的defense造成.

    BPDA

    特例

    有很多方法, 会构建一个不可微(或者其导数"不好用")的函数(g), 然后用模型(f(g(x)))替代(f(x)), 从而防御一些基于梯度的攻击方法, 而且这类方法往往要求(g(x) approx x).

    这类防御方法, 可以很简单地用

    [ abla_x f(g(x))|_{x=hat{x}} leftarrow abla_x f(x)|_{x=g(hat{x})}, ]

    替代, 从而被攻破(如果我们把(g(x))视为模型的第1层, 那我们实际上就是攻击第二层).

    一般情形

    假设(f^i(x))(即第i层)是不可微, 或者导数“不好用", 则我们首先构造一个可微函数(g(x)), 使得(g(x) approx f^i(x)), 在反向传递导数的时候(注意只在反向用到(g)), 用( abla_x g)替代( abla f^i(x)).

    注: 作者说在前向也用(g(x))是低效的.

    EOT

    这类方法使用于攻破那些随机化的defense的, 这类方法往往会从一个变换集合(T)中采样(t), 并建立模型(f(t(x))), 如果单纯用( abla f(t(x))) 来攻击效果不好, 可以转而用( abla mathbb{E}_{t sim T} f(t(x)) = mathbb{E}_{t sim T} abla f(t(x)))替代.

    Reparameterization

    重参用于针对梯度爆炸或者消失的情况, 因为这种情况往往出现于(f(g(x))), 而(g(x))是对(x)的一个多次评估(所以(f(g(x)))可以理解为一个很深的网络).

    策略是利用构建(x=h(z)), 并且满足(g(h(z))=h(z)) (咋看起来很奇怪, 看了下面的DefenseGAN就明白了).

    利用(f(h(z))), 我们找到对应的对抗样本(h(z_{adv})).

    具体的案例

    Thermometer encoding

    这里的( au)是针对样本每一个元素(x_{i,j,c})的, ( au:x_{i,j,c} ightarrow mathbb{R}^l):

    [ au(x_{i, j, c})_k= left { egin{array}{ll} 1 & x_{i,j,c}>k/l \ 0 & else. end{array} ight. ]

    只需令

    [g(x_{i,j,c})_k= min (max (x_{i, j, c} - k/l, 0),1). ]

    Input transformations

    包括:
    image cropping, rescaling, bit-depth reduction, JPEG compression, image quilting

    既包括随机化又包括了不可微, 所以既要用EPDA, 也要用EOT.

    LID

    LID能够防御

    [min quad | x-x'|_2^2 + alpha(ell(x')+mathrm{LID_{loss}} (x')), ]

    的攻击的主要原因是由于该函数陷入了局部最优. 因为LID高的样本不都是对抗样本, 也有很多普通样本.
    忽视LID, 用原始的L2attack就能够有效攻破LID.

    Stochastic Activation Pruning

    SAP实际上是dropout的一个变种, SAP会随机将某层的(f^i)的某些元素突变为0(其概率正比于元素的绝对值大小).

    这个方法可以用EOT攻破, 即用(sum_{i=1}^k abla_xf(x))来代替( abla_x f(x)).

    Mitigating through randomization

    这个方法的输入是(229 imes 229)的图片, 他会被随机变换到(r imes r)大小, (rin[229, 331)), 并随机补零使得其大小为(331 imes 331).

    同样, 用EOT可以攻破.

    PixelDefend

    pass

    DenfenseGAN

    对于每一个样本, 首先初始化(R)个随机种子(z_0^{(1)}, ldots, z_0^{(R)}), 对每一个种子, 利用梯度下降((L)步)以求最小化

    [ ag{DGAN} min quad |G(z)-x|_2^2, ]

    其中(G(z))为利用训练样本训练的生成器.

    得到(R)个点(z_*^{(1)},ldots, z_*^{(R)}), 设使得(DGAN)最小的为(z^*), 以及(hat{x} = G(z^*)), 则(hat{x})就是我们要的, 样本(x)在普通样本数据中的投影. 将(hat{x})喂入网络, 判断其类别.
    在这里插入图片描述

    这个方法, 利用梯度方法更新的难处在于, (x ightarrow hat{x})这一过程, 包含了(L)步的内循环, 如果直接反向传梯度会造成梯度爆炸或者消失.

    所以攻击的策略是:

    [min quad |G(z)-x|_2^2 + c cdot ell (G(z)) ]

    找到(z_{adv}), 于是(x_{adv}=G(z_{adv})).

    注意, 通过这个式子能找到对抗样本说明, 由训练样本训练生成器, 生成器的分布(p_G), 实际上并不能能够撇去对抗样本.

  • 相关阅读:
    VsCode 各场景高级调试与使用技巧
    rust type
    解决Chrome浏览器控制台请求返回值中的中文显示为乱码的问题
    js 固定时间运行任务
    rust 泛型
    根据值选择
    js reload window.onerror
    rust 个例
    rust index
    rust return impl Trait
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/12980944.html
Copyright © 2020-2023  润新知