美文网首页
Obfuscated Gradients Give a Fals

Obfuscated Gradients Give a Fals

作者: 馒头and花卷 | 来源:发表于2020-05-28 15:07 被阅读0次

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): 第1j层;
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.

这类防御方法, 可以很简单地用
\nabla_x f(g(x))|_{x=\hat{x}} \leftarrow \nabla_x f(x)|_{x=g(\hat{x})},
替代, 从而被攻破(如果我们把g(x)视为模型的第1层, 那我们实际上就是攻击第二层).

一般情形

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

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

EOT

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

这里的\tau是针对样本每一个元素x_{i,j,c}的, \tau:x_{i,j,c} \rightarrow \mathbb{R}^l:
\tau(x_{i, j, c})_k= \left \{ \begin{array}{ll} 1 & x_{i,j,c}>k/l \\ 0 & else. \end{array} \right.

只需令
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 \nabla_xf(x)来代替\nabla_x f(x).

Mitigating through randomization

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

同样, 用EOT可以攻破.

PixelDefend

pass

DenfenseGAN

对于每一个样本, 首先初始化R个随机种子z_0^{(1)}, \ldots, z_0^{(R)}, 对每一个种子, 利用梯度下降(L步)以求最小化
\tag{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 \rightarrow \hat{x}这一过程, 包含了L步的内循环, 如果直接反向传梯度会造成梯度爆炸或者消失.

所以攻击的策略是:

\min \quad \|G(z)-x\|_2^2 + c \cdot \ell (G(z))
找到z_{adv}, 于是x_{adv}=G(z_{adv}).

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

相关文章

  • Obfuscated Gradients Give a Fals

    1. 介绍 作为基于迭代优化攻击的基准测试已经成为评估防御的标准实践,新的防御出现了,似乎对这些强大的基于优化的攻...

  • Obfuscated Gradients Give a Fals

    Athalye A, Carlini N, Wagner D, et al. Obfuscated Gradien...

  • 前端小常识总结(渐变色)

    1、渐变色 渐变 gradients水平渐变 linear gradients 语法 background:li...

  • Gradients

    Quartz为创建渐变提供了CGShadingRef和CGGradientRef两种不透明的数据类型。您可以使用其...

  • CSS3渐变效果

    CSS3 定义了两种类型的渐变(gradients): 线性渐变(Linear Gradients)- 向下/向上...

  • CSS进阶知识点--渐变

    渐变(gradients)可以在两个或多个指定的颜色之间显示平稳的过渡 线性渐变(linear-gradients...

  • CSS3 渐变(Gradients)

    CSS3 渐变(Gradients) CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平...

  • 渐变

    CSS3 渐变(Gradients) CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平...

  • CSS 渐变

    1、CSS3 渐变(Gradients) 线性渐变CSS3 渐变(gradients)可以让你在两个或多个指定的颜...

  • Tensorflow 2 错误处理

    RuntimeError: loss passed to Optimizer.compute_gradients ...

网友评论

      本文标题:Obfuscated Gradients Give a Fals

      本文链接:https://www.haomeiwen.com/subject/pnhaahtx.html