【论文阅读】DeepXplore: Automated whitebox testing of deep learning systems.

一.论文信息

题目: Deepxplore: Automated whitebox testing of deep learning systems【DeepXpolre:深度学习系统的自动白盒测试】

发表年份: 2017

期刊/会议: proceedings of the 26th Symposium on Operating Systems Principles(SOSP, CCF-A会议)

论文链接: https://dl.acm.org/doi/abs/10.1145/3132747.3132785

作者信息: Kexin Pei, Yinzhi Cao, Junfeng Yang, Suman Jana

二.论文结构

Abstract
1 Introduction
2 Background
	2.1 DL Systems
	2.2 DNN Architecture
	2.3 Limitations of Existing DNN Testing
3 Overview
4 Methodology
	4.1 Definitions
	4.2 DeepXplore algorithm
5 Implementation
6 Experimental Setup
	6.1 Test datasets and DNNs
	6.2 Domain-specific constraints
7 Results
	7.1 Benefits of neuron coverage
	7.2 Performance
	7.3 Improving DNNs with DeepXplore
8 Discussion
9 Related work
10 Conclusion

三.论文内容

摘要

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)对于角落案例输入至关重要。现有的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%。

作者贡献

  • 作者引入神经元覆盖率(neuron coverage)作为DL系统的第一个白盒测试指标,它可以估计由一组测试输入探索的DL逻辑的数量。
  • 作者证明,在最大化神经元覆盖范围的同时,发现相似DL系统之间大量行为差异的问题可以被视为一个联合优化问题。我们提出了一种基于梯度的算法来有效地解决这个问题。
  • 作者将所有这些技术作为Deep Xplore的一部分来实现,DeepXplore是第一个白盒DL测试框架,它在15个最先进的DL模型中暴露了数千种错误的拐角情况行为。
  • 实验表明,DeepXplore生成的测试也可以用于重新培训相应的DL系统,以将分类准确率提高3%。

相关工作

  • 对抗性深度学习(Adversarial deep learning)
  • 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)传统软件系统和深度学习系统的输入空间都无法穷举,总会存在一些未经测试的输入,那我们如何来判断当前测试是否充分呢?深度学习的程序模型,并非显式的写在代码中,即使采用随机测试,仍然有大量的错误行为未被检查。所以如何生成测试输入?如何保证尽可能出发不同系统的逻辑并发性错误行为。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年10月8日 下午8:44
下一篇 2022年10月8日 下午8:46

相关推荐