本文主要是介绍【论文阅读】DeepXplore: Automated whitebox testing of deep learning systems.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一.论文信息
- 二.论文结构
- 三.论文内容
- Abstract
- 摘要
- 现有工作存在的问题
- 作者贡献
- 总结
- 相关工作
- 四.论文总结
- 五.相关资料
一.论文信息
题目: Deepxplore: Automated whitebox testing of deep learning systems【DeepXpolre:深度学习系统的自动白盒测试】
发表年份: 2017
期刊/会议: proceedings of the 26th Symposium on Operating Systems Principles(SOSP, CCF-A会议, 2017SOSP会议最佳论文)
论文链接: https://dl.acm.org/doi/abs/10.1145/3132747.3132785
作者信息: Kexin Pei, Yinzhi Cao, Junfeng Yang, Suman Jana
二.论文结构
Abstract
1 Introduction
2 Background2.1 DL Systems2.2 DNN Architecture2.3 Limitations of Existing DNN Testing
3 Overview
4 Methodology4.1 Definitions4.2 DeepXplore algorithm
5 Implementation
6 Experimental Setup6.1 Test datasets and DNNs6.2 Domain-specific constraints
7 Results7.1 Benefits of neuron coverage7.2 Performance7.3 Improving DNNs with DeepXplore
8 Discussion
9 Related work
10 Conclusion
三.论文内容
Abstract
Deep learning (DL) systems are increasingly deployed in safety- and security-critical domains including self-driving cars and malware detection, where the correctness and predictability of a system’s behavior for corner case inputs are of great importance. Existing DL testing depends heavily on manually labeled data and therefore often fails to expose erroneous behaviors for rare inputs.
We design, implement, and evaluate DeepXplore, the first whitebox framework for systematically testing real-world DL systems. First, we introduce neuron coverage for systematically measuring the parts of a DL system exercised by test inputs. Next, we leverage multiple DL systems with similar functionality as cross-referencing oracles to avoid manual checking. Finally, we demonstrate how finding inputs forDL systems that both trigger many differential behaviors and achieve high neuron coverage can be represented as a joint optimization problem and solved efficiently using gradient-based search techniques.
DeepXplore efficiently finds thousands of incorrect corner case behaviors (e.g., self-driving cars crashing into guardrails and malware masquerading as benign software) in state-of-the-art DL models with thousands of neurons trained on five popular datasets including ImageNet and Udacity self-driving challenge data. For all tested DL models, on average, DeepXplore generated one test input demonstrating incorrect behavior within one second while running only on a commodity laptop. We further show that the test inputs generated by DeepXplore can also be used to retrain the corresponding DL model to improve the model’s accuracy by up to3%.
摘要
深度学习(DL)系统越来越多地部署在安全和安全关键领域(safety and security-critical domains),包括自动驾驶汽车和恶意软件检测,其中系统行为的正确性(correctness)和可预知性(predictability)对于极端案例(corner case)输入至关重要。现有的DL测试在很大程度上依赖于手动标记的数据(manually labeled data),因此通常无法发现罕见输入的错误行为。
我们设计、实施和评估了DeepXplore,这是第一个用于系统测试真实世界DL系统的白盒框架。首先,我们介绍了神经元覆盖率(neuron coverage),通过测试输入(by test inputs),用于系统地测量强化学习系统的各个部分。接下来,我们利用具有类似功能的多个DL系统作为交叉引用Oracle,以避免手动检查(munual checking)。最后,我们演示了如何用联合优化问题来表示DL系统的输入,并使用基于梯度的搜索技术有效地解决这些输入,这些输入既可以触发许多差异行为,又可以实现高神经元覆盖率。
DeepXplore在最先进的DL模型中有效地发现了数千种错误的案例行为(incorrect corner case behaviors)(例如,自动驾驶汽车撞上护栏(self-driving cars crashing into guard rails),恶意软件伪装成良性软件),这些模型中有数千个经过训练的神经元,包括ImageNet和Udacity自动驾驶挑战数据等流行数据集。对于所有测试过的DL模型,平均而言,DeepXplore在一秒钟内生成一个测试输入,显示仅在便携笔记本电脑上运行时的错误行为。我们进一步表明(we further show that),DeepXplore生成的测试输入也可以用于重新训练相应的DL模型,以将模型的精度提高3%。
现有工作存在的问题
对应的论文部分:2.3.Limitations of Existing DNN Testing
- 昂贵的人工数据标记工作。 现有的深度学习测试技术需要花费高昂的人力来为目标任务提供正确的标签,而对于复杂任务来说,即使是领域专家也很难做这项工作。例如,考虑一个用于识别潜在恶意可执行文件的DNN。即使是安全专业人员,如果不执行可执行文件,也很难确定它是恶意的还是良性的。然而,在沙箱中执行和监视恶意软件会产生巨大的性能开销,因此,手动标记很难扩展到大量输入。
- 测试覆盖率低(Low test coverage)。 现有的DNN测试方案都没有试图涵盖DNN的不同规则。(即使是对抗样本攻击,也只能说明DNN系统存在漏洞,至于系统还有没有其他漏洞或者存在其他问题,这是无法揭示的)。
例如上图的图(a)所示(传统测试语句),只有当x等于0xdeadbeef的时候才会发现到软件存在缺陷,但随机测试或者测试覆盖率较小的测试中,出现x等于0xdeadbeef的几率很小,那就很难发现系统缺陷。
作者贡献
(1)定义了神经元覆盖率(NC:Neuron coverage)。
神经元“激活” 是指:一个神经元的输出值高于阈值(人为设定的),即被激活。
神经元覆盖率(Neuron coverage, NC) 是指:激活的神经元个数 / 所有的神经元个数。
如图所示,假设阈值为0,那么神经元输出值大于0的即为 “激活的神经元”。所以在这个神经网络中,一共有8个神经元,输出值大于0的有5个,所以NC=5/8。
(2)生成了新的数据集。
(3)新的输入集合可以自动打标签。
(4)模型利用新的数据集进行训练,可以提升模型的准确率和识别被污染的数据。
总结
- 首先作者表明,在测量DNN测试输入的综合性方面,神经元覆盖率比代码覆盖率要好得多。 更具体地说,我们发现少量测试输入可以实现所有DNN的100%代码覆盖率,其中神经元覆盖率实际上小于34%。(在少量测试集的情况下,代码覆盖率很容易达到100%,但神经元覆盖率却很难。)
- 不同类别的输入比同一类别的输入更容易激活独特的神经元。
这两个发现都证实,神经元覆盖率可以很好地估计输入所执行的DNN规则的数量和类型。
相关工作
-
对抗性深度学习(Adversarial deep learning)
局限性:
1)神经元覆盖率低。
2)对抗性攻击要求使用微小的、无法检测到的扰动。有时候需要进行较大扰动的测试,那对抗性攻击就不适用了。 -
DNN的测试和验证(Testing and verification of DNNs)
-
DNN梯度的其他应用(Other applications of DNN gradients)
-
传统软件的差异测试(Differential testing of traditional software)
四.论文总结
-
本文是深度学习系统测试领域的第一篇比较重要的工作DeepXplore,它是2017年SOSP会议最佳论文(SOSP, ACM Symposium on Operating Systems Principles)。
-
DeepXplore是一种基于测试用例生成的深度学习系统测试技术。生成的测试输入既可以扩充训练集,重新训练以提高准确率和鲁棒性,也可以检测训练集可能存在的数据污染攻击。
五.相关资料
目前测试面对的挑战:
1)大规模人工标注难以实现。
2)测试覆盖率很低。测试深度学习系统的常用方法是收集尽可能多的真实数据并手工标注,或者生成大量仿真数据。然而,实际场景中深度学习系统的输入空间非常大,很多方法只能覆盖到很小的一部分情况,甚至都不能触发极端情况(corner case)导致的系统异常。对于对抗攻击来说,它也只是揭示了深度学习系统中存在了某些错误,并不能完全覆盖系统中的系统逻辑。
3)传统软件系统和深度学习系统的输入空间都无法穷举,总会存在一些未经测试的输入,那我们如何来判断当前测试是否充分呢?深度学习的程序模型,并非显式的写在代码中,即使采用随机测试,仍然有大量的错误行为未被检查。所以如何生成测试输入?如何保证尽可能出发不同系统的逻辑并发性错误行为。
这篇关于【论文阅读】DeepXplore: Automated whitebox testing of deep learning systems.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!