Madry A, Makelov A, Schmidt L, et al. Towards Deep Learning Models Resistant to Adversarial Attacks.[J]. arXiv: Machine Learning, 2017.

@article{madry2017towards,

title={Towards Deep Learning Models Resistant to Adversarial Attacks.},

author={Madry, Aleksander and Makelov, Aleksandar and Schmidt, Ludwig and Tsipras, Dimitris and Vladu, Adrian},

journal={arXiv: Machine Learning},

year={2017}}

利用特定的方法产生"坏"样本(Adversarial samples), 以此来促进网络的稳定性是当下的热点之一, 本文以实验为主, 比较PGD( projected gradient descent) 和 FGSM(fast gradient sign method)在不同数据下的表现, 以及由普通样本产生"坏"样本会出现的一些现象.

主要内容

Adversarial attacks 主要聚焦于下列问题:

\[\tag{2.1}
\min_{\theta} \rho (\theta) \quad where \quad \rho(\theta) =\mathbb{E}_{(x,y)\sim D}[\max_{\delta \in S} L(\theta, x+\delta, y)].
\]

其中\(S\)是我们指定的摄动集合, 直接一点就是\(|\delta| <constant\)之类.

通过FGSM产生"坏"样本:

\[x + \epsilon \: \mathrm{sgn}(\nabla_x L(\theta,x,y)).
\]

这个思想是很直接的(从线性感知器谈起, 具体看here).

PGD的思路是, 给定摄动集\(S\), 比如小于某个常数的摄动(e.g. \(\{\tilde{x}:\|x-\tilde{x}\|_{\infty}<c\}\)), 多次迭代寻找合适的adversarial samples:

\[x^{t+1} = \prod_{x+S} (x^t + \alpha \: \mathrm{sgn} (\nabla_x L(\theta,x, y)),
\]

其中\(\prod\)表示投影算子, 假设\(S=\{\tilde{x}:\|x-\tilde{x}\|_{\infty}<c\}\),

\[x^{t+1} = \arg \min_{z \in x+S} \frac{1}{2} \|z - (x^t + \alpha \: \mathrm{sgn} (\nabla_x L(\theta,x, y))\|_2^2,
\]

实际上, 可以分开讨论第\((i,j)\)个元素, \(y:=(x^t + \alpha \: \mathrm{sgn} (\nabla_x L(\theta,x, y))\), 只需找到\(z_{ij}\)使得

\[\|z_{ij}-y_{ij}\|_2
\]

最小即可. 此时有显示解为:

\[z_{ij}=
\left \{
\begin{array}{ll}
x_{ij} +c & y_{ij} > x_{ij}+c \\
x_{ij} -c & y_{ij} < x_{ij}-c \\
y_{ij} & else.
\end{array} \right.
\]

简而言之就是一个截断.

重复几次, 至到\(x^t\)被判断的类别与初始的\(x\)不同或者达到最大迭代次数.

Note

  • 如果我们训练网络能够免疫PGD的攻击, 那么其也能很大一部分其它的攻击.
  • FGSM对抗训练不能提高网络的稳定性(在摄动较大的时候).
  • weak models may fail to learn non-trival classfiers.
  • 网络越强(参数等程度)训练出来的稳定性越好, 同时可转移(指adversarial samples 在多个网络中被误判)会变差.

Towards Deep Learning Models Resistant to Adversarial Attacks的更多相关文章

  1. How to Grid Search Hyperparameters for Deep Learning Models in Python With Keras

    Hyperparameter optimization is a big part of deep learning. The reason is that neural networks are n ...

  2. a Javascript library for training Deep Learning models

    w强化算法和数学,来迎接机器学习.神经网络. http://cs.stanford.edu/people/karpathy/convnetjs/ ConvNetJS is a Javascript l ...

  3. Run Your Tensorflow Deep Learning Models on Google AI

    People commonly tend to put much effort on hyperparameter tuning and training while using Tensoflow& ...

  4. What are some good books/papers for learning deep learning?

    What's the most effective way to get started with deep learning?       29 Answers     Yoshua Bengio, ...

  5. (转) Awesome Deep Learning

    Awesome Deep Learning  Table of Contents Free Online Books Courses Videos and Lectures Papers Tutori ...

  6. (转)分布式深度学习系统构建 简介 Distributed Deep Learning

    HOME ABOUT CONTACT SUBSCRIBE VIA RSS   DEEP LEARNING FOR ENTERPRISE Distributed Deep Learning, Part ...

  7. The Brain vs Deep Learning Part I: Computational Complexity — Or Why the Singularity Is Nowhere Near

    The Brain vs Deep Learning Part I: Computational Complexity — Or Why the Singularity Is Nowhere Near ...

  8. Paper Reading——LEMNA:Explaining Deep Learning based Security Applications

    Motivation: The lack of transparency of the deep  learning models creates key barriers to establishi ...

  9. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Regularization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Regularization Welcome to the second assignment of this week. Deep ...

随机推荐

  1. Hive(十三)【Hive on Spark 部署搭建】

    Hive on Spark 官网详情:https://cwiki.apache.org//confluence/display/Hive/Hive+on+Spark:+Getting+Started ...

  2. Scala(五)【集合的高级使用】

    目录 一.集合属性 size length contains mkString 二.集合方法 drop.dropRight distinct:去重 head.last:获取第一个.最后一个元素 tai ...

  3. Sharding-JDBC 实现垂直分库水平分表

    1.需求分析

  4. Shell学习(二)——变量和基本数据类型

    参考博客: [1]LinuxShell脚本--变量和数据类型 [2]shell只读变量删除 一.变量 定义变量的语法 定义变量时,变量名和变量值之间使用"="分隔,并且等号两边不能 ...

  5. Android 极光推送集成

    集成Jpush 1.用Android Studio创建一个Demo 2.创建激光推送开发者账号,要创建极光推送开发者帐号,请访问极光推送官方网站https://www.jiguang.cn/push ...

  6. Oracle 创建 md5 加密函数

    使用 Oracle 的 utl_raw.DBMS_OBFUSCATION_TOOLKIT 可以获取 md5 加密字符串: select utl_raw.cast_to_raw(DBMS_OBFUSCA ...

  7. spring基于注解的声明式事务控制

    package com.hope.service.impl;import com.hope.dao.IAccountDao;import com.hope.domain.Account;import ...

  8. 【C/C++】习题3-7 DNA/算法竞赛入门经典/数组与字符串

    [题目] 输入m组n长的DNA序列,要求找出和其他Hamming距离最小的那个序列,求其与其他的Hamming距离总和. 如果有多个序列,求字典序最小的. [注]这道题是我理解错误,不是找出输入的序列 ...

  9. 前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?

    传统混合移动App开发模式,通常会使用WebView作为桥接层,但随着iOS和Android应用商店审核政策日趋严格,有时会被错误判定为简单网页打包成App,上架容易遭到拒绝. 既然可能存在风险,那我 ...

  10. vue文件上传及压缩(canvas实现压缩)

    // 读取文件结果 afterRead(files) { let that = this; let file = files.file; if (file === undefined) { retur ...