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\).

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

\[\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 False Sense of Security: Circumventing Defenses to Adversarial Examples的更多相关文章

  1. ICML 2019论文录取Top100:谷歌霸榜

    [导读]人工智能顶级会议ICML 2019发布了今年论文录取结果.提交的3424篇论文中,录取了774篇,录取率为22.6%,较去年有所降低.从录取论文数量来看,谷歌成为今年最大赢家,紧随其后的是MI ...

  2. Configuring Apache Kafka Security

    This topic describes additional steps you can take to ensure the safety and integrity of your data s ...

  3. 每日英语:Apple's Latest iPhone Puts Focus Back on Fingerprint Security

    Apple's latest product launch could breathe new life into a technology that failed to take hold the ...

  4. metasploit-post模块信息

    Name                                             Disclosure Date  Rank    Description ----           ...

  5. What does it mean for an algorithm to be fair

    What does it mean for an algorithm to be fair In 2014 the White House commissioned a 90-day study th ...

  6. Visual Studio TFS Branching and Merging Guidance

    Origin URL:https://msdn.microsoft.com/en-us/magazine/gg598921.aspx Bill Heys and Willy-Peter Schaub ...

  7. Chronic sleep loss cannot be cured that easily

    Chronic sleep loss cannot be cured that easily Sleeping in on Saturday after a few weeks of too litt ...

  8. 使用机器学习检测TLS 恶意加密流——业界调研***有开源的数据集,包括恶意证书的,以及恶意tls pcap报文***

    2018 年的文章, Using deep neural networks to hunt malicious TLS certificates from:https://techxplore.com ...

  9. 每日英语:A Buying Guide to Air-Pollution Masks

    Blue skies were finally visible in the capital on Thursday after the region suffered fromseven strai ...

随机推荐

  1. [云原生]Docker - 简介

    目录 什么是Docker? 为什么使用Docker? 对比传统虚拟机总结 什么是Docker? Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业务项目.它基于Go ...

  2. 容器之分类与各种测试(四)——multiset

    multiset是可重复关键字的关联式容器,其与序列式容器相比最大的优势在于其查找效率相当高.(牺牲空间换取时间段) 例程 #include<stdexcept> #include< ...

  3. Linux网络管理(一)之配置主机名与域名

    Linux网络管理(一)之配置主机名与域名参考自:[1]修改主机名(/etc/hostname和/etc/hosts区别) https://blog.csdn.net/shmily_lsl/artic ...

  4. oc中调用c函数 实现将字符串转换成unsigned char

    帮助码友解决问题,从而复习了一下oc中调用c函数的方式 1,新建c 头文件  test.h 定义 c 函数 #ifndef test_h #define test_h void verificatio ...

  5. CentOS6设置Django开发环境

    今天在我的Centos6.5机器上安装 Django 开发环境,在安装完使用 "django-admin.py startproject myapp" 创建应用的时候报了下面的错误 ...

  6. 使用$.ajax方式实现页面异步访问,局部更新的效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. 线程开启的第一种方法:通过创建Thread的子类的对象的方式

    package cn.itcast.demo16.demo06.Thread;/** * @author newcityman * @date 2019/7/22 - 21:47 */public c ...

  8. 【MySQL】统计累计求和

    https://geek-docs.com/sql/sql-examples/sql-cumulative-sum.html

  9. Java oop 笔记

    摘要网址:http://note.youdao.com/noteshare?id=bbdc0b970721e40d327db983a2f96371

  10. Java中的对于多态的理解

    一.什么是多态 面向对象的三大特性:封装.继承.多态 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 实现多态的技 ...