0%

【论文笔记】DeepCheck

原文:Symbolic Execution for Deep Neural Networks (ISSRE’18)

代码:没找到

概括

提出DNN上的符号执行测试方法。将DNN转换为程序(激活函数转换成if-else),利用相关性识别出重要像素。约束求解器求解激活模式相同但预测标签不同的输入(改变重要像素的值)。

动机

传统软件测试的符号执行

软件测试中的符号执行主要目标是: 在给定的探索尽可能多的、不同的程序路径(program path)。对于每一条程序路径,(1) 生成一个具体输入的集合(主要能力);(2) 检查是否存在各种错误,包括断言违规、未捕获异常、安全漏洞和内存损坏。使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,然后通过约束求解器来得到可以触发目标代码的具体值。

在DNN上使用符号执行的挑战

  • DNN没有分支
  • DNN高度非线性,没有约束求解器
  • 扩展性差:DNN神经元数量庞大,远远超出了当前符号推理工具的能力。

我们的方法:

  • 将ReLU激活函数看作if-else语句,这样DNN就有了分支

符号执行框架

翻译DNN:

  • 将ReLU函数转换为分支语句,则一个神经元可以看做代码段:

    Fig2

识别重要像素

维护一个相关性数组$coef^h_{i,j}$:$h$层第$i$个神经元与输入中第$j$个像素的相关性

  • 初始化:若$i=j$,$coef^0_{i,j}=1$,其他为0

  • 迭代计算coef:

    Fig3

  • 最终输出单元的Coef计算结果为:

    Eq1

    从像素$x_j$到输出$y_i$的所有路径(输出非0)上所有权重的总和(依赖于给定输入集合的具体执行)

然后我们计算每个输入变量重要分数,使用三个指标:

  • $co$: 相关性分数,即$C_{i,j}$
  • $coi$:相关性分数乘以对应的输入变量:$C_{i,j} \times x_j$
  • $abs$:相关性分数的绝对值$|C_{i,j}|$

确定攻击像素

构造约束求解问题:改变像素的值,使得新图片与原图激活模式相同,但预测标签不同。使用约束求解器Z3求解。

  • 激活模式相同:($H$为神经网络中所有激活函数的个数,即每个神经元激活模式都保持不变)

    $ PC= \land _{h=1}^{H}(B^{h}+ \sum _{i=1}^{t}C_{i}^{h} \cdot X_{i} \gamma 0) $ , 其中$ \gamma \in \left\{ > , \leq\right\} $

  • 预测标签不同:($l’ \neq l$)

  • 约束:$ RA= \land _{1}^{t} lo \leqslant X_i \leqslant hi $ ($lo$和$hi$是输入值标准化后的上下界)

  • 最终约束求解器目标:$PC \land AC \land RA$

  • 攻击

    • 1像素攻击
    • 2像素攻击:对前5%的重要像素的任意两两组合进行约束求解。

实验

实验配置

  • 数据集和模型
    • MNIST
    • 模型结构:784×10×10×10×10
    • 训练集:60000张图片
    • 准确率:92%
  • 选择训练集里的10张图片(0-9)作为原始图片种子

实验1:重要像素识别效果

  • Top 5% 和10%重要像素识别结果
    • 总的来说,符号执行的使用能够识别重要的像素,这有助于解释神经网络的分类决策。

table1

实验2:用符号执行进行1或2像素攻击的效果

  • 对1像素攻击:首先穷举每个像素(共784个)来确认其是否可攻击(改变像素值后激活模式不变,但预测标签改变),10张图片的可攻击像素如下:

fig5

  • 1-像素攻击:10个数字可攻击像素的个数和最小可攻击像素的ID(即穷举搜索需要尝试的个数)

    table2

  • 2-像素攻击:

    • 许多2像素攻击由一个可攻击1像素的像素组成。然而,一些新的攻击对不包括任何像素可攻击的像素被发现为1像素攻击。

    table3

实验3:比较识别出的重要像素和攻击使用的像素

table5

  • 表V显示了对于每幅图像,在发现1像素攻击之前,三个指标中的每一个都必须探索的重要像素的最小数量。对于所有指标和所有图像,需要检查的重要像素不超过前三分之一,以找到攻击像素。
  • coi识别效果最好。
  • 总的来说,利用本文重要像素识别算法,对于寻找1像素和2像素攻击具有重要作用。

可控制参数及变量总结

  • 重要像素百分比(如5%、10%)
  • 初始种子集合:10张图片
  • 重要像素判断指标:$co,coi,abs$
  • 攻击像素个数

思考

本文将DNN转换成程序从而获得执行路径的方法或许值得借鉴。

但开销过大,只能在小型数据集和模型上使用。