0%

DNN测试输入生成论文可控制参数及变量总结

共同参数或变量总结

初始输入种子集合相关变量

  • 数量:1个到几千个不等
  • 采样方式:均为随机
    • DeepXplore还要求了类别平衡
  • 是否标注
    • 若已标注,是否要求初始预测结果正确(DeepCT要求了)
    • 未标注(DeepXplore要求其使用的多个模型预测一致,DLFuzz)

测试标准/覆盖率相关变量

  • 已有测试/覆盖标准
    • 神经元覆盖率(DeepXplore)
      • DeepTest中修改了卷积层神经元覆盖率的计算方式:输出特征图的平均值与激活阈值做比较
      • 神经元覆盖率采用的激活阈值
        • 原算法:将所有输出值缩放到[0,1],然后设置阈值(离群点等会否导致不同数据集阈值差距很不同
        • DeepXplore中用过多种阈值(0、0.25、0.75等),后人多数用的0,也有0.75等
    • 神经元主功能区、边界区覆盖率、top-k神经元覆盖率(DeepGauge)
    • MC/DC覆盖(DeepCover)
    • 输入样本的Surprise Adequacy
    • 2-路覆盖(Towards Improved Testing For Deep Learning)
    • 重要神经元覆盖(DeepImportance)
    • 近邻覆盖(TensorFuzz)
    • 利普希茨覆盖(DeepConcolic)
    • 组合覆盖(DeepCT,包括$t$-路组合稀疏覆盖、$t$-路组合稠密覆盖、$(p,t)$完备性)
  • 覆盖神经元集合的选择:
    • 多数选择所有层的神经元
    • 个别选择去掉一些层
      • 如DeepXplore测试达到100%覆盖率所用的时间时去掉了全连接层(但覆盖全连接层意义应该更大?)
      • TensorFuzz要求用户自己选择层
      • DeepImportance仅选择部分层里重要的神经元覆盖

图像上增加的扰动相关变量

  • 扰动生成方式
    • 基于梯度优化
    • 基于覆盖率引导的模糊测试
    • 基于约束求解
    • 基于搜索
    • 基于已有的对抗样本生成方法
  • 扰动种类
    • DeepTest说不同种类变换能激活不同神经元(存疑
  • 扰动位置:
    • DeepXplore中的单个矩形位置由用户提前设定,多个黑色矩形的位置随机
  • 扰动大小:
    • DeepXplore中的矩形大小由用户提前设定(与数据集图像大小有关)
  • 扰动约束条件:
    • $L_0-norm$
      • 如DeepCheck(识别重要像素攻击)
    • $L_1-norm$
      • DeepXplore未对距离做限制,甚至认为$L_1$距离越多样性越好
    • $L_2-norm$
      • 如DLFuzz:满足L2距离(<0.02)(计算方式为L2_norm / orig_L2_norm)
    • $L\infty-norm$
      • 如TensorFuzz
    • 平衡$L_0$和$L\infty-norm$
      • 如DeepHunter采用的
    • 约束MSE(DeepTest):$|MSE(trans,param)-MSE_{org}|\leq \epsilon$ (用到了oracle)

模糊测试相关变量(DLFuzz、TensorFuzz、DeepHunter、DeepTest)

  • 判断种子是否应该保留在队列时最少需提升的覆盖率
  • 每个种子的迭代次数
  • 从队列中优先挑选哪些种子的策略
    • 随机
    • 选择新鲜的
    • 平衡新鲜和多样性

优化算法相关变量

  • 优化目标选择需要新激活的神经元个数

其他

  • 每个种子生成对抗样本的个数
    • 有的方法只生成一张,有的多张
  • 蜕变关系
    • 图像分类问题:扰动满足约束的情况下,预测类别应该不变
    • 回归问题:
      • DeepTest:因为只测试了Driving数据集(回归问题),使用MSE判断蜕变关系是否满足$(\theta_i-\theta_{ti}) \leq \lambda MSE_{orig}$
      • DeepRoad:没有使用MSE,直接比较输出结果是否小于阈值$\epsilon$

测试输入生成类论文总结

文章名 可控制参数/变量总结
DeepXplore
(SOSP’17)
DeepXplore
TensorFuzz
(ICML’19)
TensorFuzz
DeepTest
(ICSE’18)
DeepTest
DLFuzz
(ESEC/FSE’18)
DLFuzz
DeepHunter
(ISSTA’19)
DeepHunter
DeepConcolic
(ASE’18)
DeepConcolic
DeepCT
(SANER’19)
(未找到代码)
DeepCT
DeepCheck
(ISSRE’18)
(未找到代码)
DeepCheck
DeepRoad
(ASE’18)
(未找到代码)
DeepRoad
DeepGauge
(ASE’18)
DeepGauge
DeepCover
(TECS’19)
DeepCover
Surprise Adequacy(ICSE’19) Surprise
Towards Improved Testing For Deep Learning
(ICSE-NIER’19)
(未找到代码)
借鉴DeepXplore使用多种实现作为oracle,只用了一种图像处理方式——亮度
DeepImportance
(ICSE’20)
DeepImportance