深度学习测试-DeepXplore

  • (一)为什么研究深度学习的测试方法
    • 深度学习应用广泛
    • 深度学习并不鲁棒
  • (二)DeepXplore
    • 启示(idea)
    • DeepXplore的贡献
    • DeepXplore贡献具体内容
    • DeepXplore算法
  • (三)实验过程
  • (四)验证Neuron Coverage的有效性
    • (1)Neuron coverage VS Code coverage
    • (2)不同class的数据激活更多神经元

(一)为什么研究深度学习的测试方法

深度学习应用广泛

Deep Learning system目前很火,已经应用于多个领域,包括图像识别、语音识别,同时自动驾驶及流氓软件的检测等问题上也已经开始使用。

深度学习并不鲁棒

对抗攻击:
图像经过针对深度学习模型的对抗攻击,对图片增加噪点,合成出新的图像。该图像人眼识别没有改变,却使得深度学习模型产生了错误的行为。
在安全性要求极强的领域中,如自动驾驶问题,并不鲁棒的模型可能会导致无法承受的后果,所以迫切需要对DL system有效的测试方法,来验证DL system是否鲁棒。

(二)DeepXplore

启示(idea)

传统软件需要充分的测试来保证其鲁棒性,同样深度学习系统也需要测试。
在测试传统软件时,代码覆盖率(即:测试案例执行代码语句占所有语句的百分比)是衡量系统测试充分性的重要指标。
将这一思想映射到深度学习系统中:测试集执行深度学习系统的占比,作为衡量深度学习系统测试充分性的重要指标。

DeepXplore的贡献

(1)神经元覆盖率:Neuron Coverage
深度学习系统第一个白盒测试标准,用来评估一组测试集所执行的逻辑量。
(2)生成新输入集(可以触发深度学习系统不同的逻辑)
建立联合优化问题,利用梯度来进行求解,最终生成新的输入集。联合优化问题有两个目标:最大化神经元覆盖率,最大化差异行为(differential behaviors)。
(3)新输入集自动打label
训练多个DNN,输入input后,多个DNN进行投票。
(4)新输入集再训练
用新输入集对模型进行再训练,用来提升模型的准确率和识别被污染的数据。

DeepXplore贡献具体内容

(1)定义神经元覆盖率(NC:Neuron coverage):

首先需要明白的概念:
什么样的神经元叫做被激活了的:一个神经元的输出值高于阈值,即被激活。

DNN的神经元集合为 N={ n1 , n2 , n3…};测试集 T = {x1 , x2 , x3…};out(n,x)是输入值为x,神经元n的输出值。

NC=激活的神经元个数 / 所有的神经元个数

举个例子:

阈值设置为0,则NC=5/8=0.625.

(2)生成新的测试集:

生成的新的输入集要满足两个目标:
目标1:覆盖更多的神经元(达到覆盖更多的逻辑的目的)
目标2:新输入集可以使得模型出错

构建联合优化问题来达成目标:

1.最大化差异行为(Maximizing differential behaviors)
目的:有n个DNN,通过对输入的干扰,使得n个DNN中至少有一个DNN与其他的DNN行为不同。

有n个DNN,Fk表示一个DNN,k∈[0,n]。

object 1 = 多个DNN的输出值 - 某个DNN的输出值
object 1的值越大,则说明他们的差距越大,即行为越不同。

2. 最大化神经元覆盖率(Maximizing neuron coverage)
目的:覆盖更多的逻辑块
实现的方法:迭代的挑选没有激活的神经元,对输入进行干扰,使得经过该神经元得到的输出大于阈值,即神经元被激活。

object 2 = 输入x,经过神经元n之后的输出值
通过对x干扰,使得object 2 > 阈值

3.联合优化:

λ1与λ2作为权重,也可以看作是开关,来控制平衡两个目标。
λ1:用来控制某一DNN和其他DNNs的output的差,λ1越大,差越大,分类也就越不相同
λ2:用来设置优先权,最大化神经元覆盖率和最大化差异行为谁更优先
采用梯度上升的方法进行联合优化,object joint的值越大,说明object 1的值与object 2值越大,则行为越不同,神经元输出值越大。object joint的每一项都是可微的。

3.特定的约束
在满足两个目标的同时,生成的测试集还需满足一些特定的约束。例如测试集是图片,则需要满足像素在0-255。

DeepXplore算法

(三)实验过程

五个数据集:MNIST、ImageNet、Driving、Contagio、Drebin
DNN:每个数据集使用三个DNN,总共15个。


特定约束:
1.图片类数据集:(1)用于模拟不同照明强度的照明效果,(2)由单个小矩形遮挡,用于模拟攻击者可能遮挡图像的某些部分,以及(3)由多个小黑色矩形遮挡,用于模拟灰尘对照相机镜头的影响。

(四)验证Neuron Coverage的有效性

利用了两个方法来验证有效性:

(1)Neuron coverage VS Code coverage

对比神经元覆盖率和代码覆盖率,得出神经元覆盖率是更好的测试标准。
C1,C2,C3是三个DNN
从原始的数据集中随机选取10个input,发现代码覆盖率都达到了100%,神经元覆盖率没有超过34%,即使使用完整的测试集,例如MNIST数据集,C1、C2和C3的神经元覆盖率仅分别达到57.7%、76.4%和83.6%,仍有许多神经元未被覆盖。
实验结果:

结论:神经元覆盖率 better than 代码覆盖率

(2)不同class的数据激活更多神经元

每个神经元会在训练过程中,学习到相应的能力,能够识别特定的特征。

那么同一class的数据,特征更加相似。

则同一class的数据激活的神经元,就会有大量重复的。

那么不同class的数据,理论上来说,会激活更多的神经元。

实验结果:

结论:不同类别的input,确实可以达到更高的神经元覆盖率

下一篇:DeepGauge

深度学习测试-DeepXplore相关推荐

  1. 英伟达RTX 2080 Ti值得买么?深度学习测试来了!

    Lambda Lab 出品  伊瓢 编译  量子位 报道 | 公众号 QbitAI 英伟达新发布的RTX 2080 Ti跑深度学习怎么怎么样? 美国人工智能公司Lambda用TensorFlow测试了 ...

  2. 百面机器学习和百面深度学习-测试1

    11 1.特征归一化: 数据的量纲和大小不同会导致数据对模型的影响程度不同,每个特征对模型造成的影响不同. 2.怎么处理类别特征: (类似于男女之类的类别)one-hot编码 3.什么是组合特征,怎么 ...

  3. 深度学习测试结果可视化分析——matplotlib 鼠标响应事件

    前段时间在IP102数据集上做了一些实验,在测试集上的预测结果通过文本的方式不便于直接观察,于是有了一些可视化的需求:可视化数据的原始分布和各类别的预测情况. 分析 可视化数据的原始分布直接通过 pl ...

  4. NVIDIA深度学习Tensor Core性能解析(下)

    NVIDIA深度学习Tensor Core性能解析(下) DeepBench推理测试之RNN和Sparse GEMM DeepBench的最后一项推理测试是RNN和Sparse GEMM,虽然测试中可 ...

  5. 【深度学习】深度学习中的单元测试

    作者 | Manpreet Singh Minhas 编译 | VK 来源 | Towards Data Science 深度学习/机器学习工作流程通常不同于人们对正常软件开发过程的期望.但这并不意味 ...

  6. 360题带你走进深度学习!吴恩达深度学习课程测试题中英对照版发布

    吴恩达的深度学习课程(deepLearning.ai)是公认的入门深度学习的宝典,本站将课程的课后测试题进行了翻译,建议初学者学习.所有题目都翻译完毕,适合英文不好的同学学习. 主要翻译者:黄海广 内 ...

  7. 成本低廉的深度学习与渲染显卡购买方案--英伟达矿卡P106

    此方案适用于个人或小型企业,此方案有不稳定性,如果预算充足请购买Tesla 显卡 转载请注明出处 视频:https://www.bilibili.com/video/av35317062 渲染,深度学 ...

  8. 机器学习和深度学习的三点关键区别

    机器学习和深度学习的三点关键区别 最简单.最重要的三点区别 深度学习是机器学习的一种子类,通常我们讲的机器学习是传统机器学习方法,比较也是建立于传统机器学习和深度学习两者的区别. 学习的东西不同 训练 ...

  9. 深度学习与中文短文本分析总结与梳理

    感谢原著,原文出处:https://www.cnblogs.com/wangyaning/p/7853879.html 1.绪论 过去几年,深度神经网络在模式识别中占绝对主流.它们在许多计算机视觉任务 ...

最新文章

  1. 【转】常见系统中文字体的英文名
  2. 程序员需要牢记的一点
  3. linux 命令行使用wget下载百度云资源
  4. C语言读取大文件的问题 内存映射
  5. wordpress教程之函数site_url()、home_url()、bloginfo(‘url’)的区别
  6. “异常的”间谍软件窃取工业企业凭据
  7. Oracle常用操作【自己的练习】
  8. 蓝桥ROS机器人之51单片机C代码编译和下载
  9. 基于linux下QT象棋,课内资源 - 基于QT实现的网络象棋游戏
  10. torchtext.vocab
  11. 数字与英文字母转换matlab,MATLAB编程:数值(0-25)转换成大写英文字母
  12. 【转】我奋斗了18年不是为了和你一起喝咖啡
  13. 大牛手把手教你!Service有几种启动方式?吐血整理
  14. 法律诉讼知识:民事诉讼流程
  15. 404错误页面的设置方法步骤(图)附404模板下载
  16. linux下 恢复gho镜像,手动使用ghost恢复win7系统gho镜像包教程
  17. 【网络文摘】一家公司要了你后,凭什么给你开高工资?
  18. java swing做横排下拉菜单
  19. FreeCAD源码分析:FreeCADMain模块
  20. 中国十大最意想不到的外资企业(转)

热门文章

  1. selenium启动常用浏览器驱动方式
  2. a到z的ascii码值是多少_字符A到Z的ASCII代码是多少?
  3. 75亿“迎娶”ZeniMax,钟情游戏的微软在坚持什么?
  4. 【历史上的今天】7 月 2 日:BitTorrent 问世;商业系统 Linspire 被收购;索尼部署 PlayStation Now
  5. 关于探索者机器人模块的相关学习(一)——机械运动
  6. c语言算卦:生成随机数组、逆序输出、循环
  7. 【亲测】后台功能强大的PHP开源版授权系统
  8. 送给博士生的20条人生建议
  9. JSP CMS 管理系统
  10. java图片文字识别tesseract-ocr