zoukankan      html  css  js  c++  java
  • Towards Evaluating the Robustness of Neural Networks

    Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks

    提出了在不同范数下(ell_0, ell_2, ell_{infty})下生成adversarial samples的方法, 实验证明此类方法很有效.

    主要内容

    基本的概念

    本文主要针对多分类问题, 假设神经网络(F:x in mathbb{R}^n ightarrow y in mathbb{R}^m), 其网络参数为( heta).

    假设:

    [F(x)=mathrm{softmax}(Z(x))=y, ]

    其中(mathrm{softmax}(x)_i=frac{e^{x_i}}{sum_j e^{x_j}}).

    [C(x) = arg max_i F(x)_i, ]

    (x)的预测类, 不妨设(C^*(x))为其真实的类别.

    Adversarial samples 的目标就是构建一个与(x)相差无几的(x')((|x-x'|)足够小),但是(C(x') ot =C^*(x)). 很多构建Adversarial samples可以指定类别:

    • Average Case: 在不正确的标签中随机选取类别;
    • Best Case: 对所有不正确的标签生成Adversariak samples, 并选择最容易成功(即骗过网络)的类别;
    • Worst Case:对所有不正确的标签生成Adversariak samples, 并选择最不容易成功的类别.

    文章中介绍了不少现有的方法, 这里不多赘述.

    目标函数

    一般可以通过如下问题求解(x'=x+delta):

    [egin{array}{ll} min & mathcal{D}(x, x+delta) \ mathrm{s.t.} & C(x+delta)=t \ & x + delta in [0, 1]^n, end{array} ]

    其中(mathcal{D})衡量(x,x+delta)之间的距离, 常常为(ell_0, ell_2, ell_{infty}).

    但是(C(x+delta)=t)这个条件离散, 这个问题很难直接求解, 作者给出的思路是构造一些函数(f(x,t)), 使得当且仅当(f(x,t)le0)的时候此条件满足.
    则问题转换为:

    [egin{array}{ll} min & mathcal{D}(x, x+delta) \ mathrm{s.t.} & f(x,t) le 0 \ & x + delta in [0, 1]^n, end{array} ]

    进一步

    [egin{array}{ll} min & mathcal{D}(x, x+delta) + cf(x,t) \ mathrm{s.t.} & x + delta in [0, 1]^n. end{array} ]

    作者给出了7种符合此类条件的函数(作者尤为推荐第6种):
    在这里插入图片描述

    如何选择c

    binary search

    如何应对Box约束

    图片的元素需要满足(0le x_i le 1), 如何满足此约束:

    • 简单粗暴地对其裁剪, 大于1的为1, 小于0的为0, 但是这种方法在梯度下降方法比较复杂(如带momentum)的时候效果可能不会太好(既然momemtum要记录变量改变的方向, 而我们又擅自对此方向进行更改);
    • (f(min (max(x+delta,0),1))替代(f(x+delta)), 我的理解是, 每次不改变原变量(x'), 然后把clip后的(x')喂给(f). 作者说此类方法容易方法在次优解间来回振荡的现象;
    • 定义

    [delta_i = frac{1}{2}( anh (w_i) +1)-x_i, ]

    于是我们只需优化(w_i), 且保证(x_i + delta_i in [0, 1]).

    (L_2) attack

    [min quad |frac{1}{2}( anh(w)+1)-x|_2^2+ccdot f(frac{1}{2}( anh(w)+1), t), ]

    其中

    [f(x',t)=max(max {Z(x')_i:i ot =t}-Z(x')_t, -kappa), ]

    是对第6种方法的一个小改进, 其中(kappa)反应了我们对误判发生的信心.

    (L_0) attack

    因为(L_0)范数不可微, 所以每一次, 我们先利用(L_2) attack来寻找合适的(delta), 令(g= abla f(x+delta)), 根据(g_i delta_i)判断每个像素点的重要性, 最不重要的我们删去(根据文中的意思是永久删去).

    • Input: (x, c)
    • (I=empty)
    • Do ...:
      1. 计算在(L_2)下的解(x+delta)(倘若在(c)下找不到, 则在(2c)条件下找(嵌套));
      2. (g= abla f(x+delta));
      3. (i=arg min_i g_i cdot delta_i, i ot in I), 然后(I=I cup {i});

    在利用(L_2)寻找(delta)的过程中, 若失败, 令(c=2c)并重复进行, 直到其成功或者超过了最大的迭代次数.

    (L_{infty}) attack

    (|delta|_{infty})作为惩罚项(?)只会针对个别元素, 这在实际实验的时候并不友好, 往往会出现振荡, 于是作者想了一种替代

    [min quad c cdot f( x+ delta) + sum_i [(delta_i- au)^+], ]

    这样我们就把可以关注部分突出而非个别.

  • 相关阅读:
    系统数据库如何恢复Master数据库
    在Orderby子句中使用CASE 语句
    SQL NOTECURSOR
    MVC 中静态文件部分动态化
    SQL NOTCTE
    Get data style from Excel
    SQL NOTPARTITION
    LAMDA表达式学习
    SQL NOTEVARIABLE
    起II6.0中使用windows2003自带的虚拟主机管理系统
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/12661003.html
Copyright © 2011-2022 走看看