热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模糊神经网络_DeepHunter:深度神经网络覆盖导向的模糊测试框架

1、引用XiaofeiXie,LeiMa,FelixJuefei-Xu,MinhuiXue,HongxuChen࿰

1、引用

Xiaofei Xie, Lei Ma, Felix Juefei-Xu, Minhui Xue, Hongxu Chen, Yang Liu, Jianjun Zhao, Bo Li, Jianxiong Yin, and Simon See. 2019. DeepHunter:a coverage-guided fuzz testing framework for deep neural networks. In Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2019). Association for Computing Machinery, New York, NY, USA, 146–157. DOI:https://doi.org/10.1145/3293882.3330579

2、摘要

基于深度神经网络(DNN)的软件应用于关键安全场景有着巨大的潜力,比如自动驾驶。与传统软件类似,DNNs 可能会出现错误的行为,由于一些隐患而导致严重的事故和损失。在本文中,我们提出了 DeepHunter,一个覆盖导向的模糊测试框架,用于检测通用 DNNs 的潜在缺陷。首先提出一个变形策略来生成新的语义保留测试,并利用多个可扩展的覆盖率标准作为反馈来指导测试生成。在此基础上,提出了基于多样性和基于新近性的种子选择策略,整体上实施并整合了 5 个现有的测试标准和 4 个种子选择策略。

大规模实验表明:(1)我们的变形变异策略能够有效地生成与原始种子语义相同的新的有效测试,其有效性高达 98%;(2)在提高覆盖率和检测缺陷方面,基于多样性的选种一般比基于新近性的选种权重大;(3) DeepHunter 在覆盖率、缺陷的数量和多样性方面优于现有技术;(4)在基于角域的准则指导下,DeepHunter 在平台迁移的 DNN 量化过程中有利于捕获缺陷。

关键字:深度学习测试,变形测试,覆盖导向模糊

3、引言

近十年来,深度学习(DL)在许多前沿智能应用领域取得了巨大成功,如图像处理、语音识别、视频、棋类游戏。然而,与传统软件一样,基于 DNN 的软件尽管在对抗攻击测试精度非常高,但仍然存在缺陷。一些真实的案例,如报道的 Tesla/Uber 事故,智能语音机器人(如 Siri, Alexa)被隐藏的命令操纵,可能会造成严重的安全隐患。因此 DL 的质量和安全保证的重要性开始引起人们的注意,特别是那些应用于安全和关键任务场景的 DL。

基于 DNN 的软件在部署前也需要进行系统测试,重点在于早期识别其潜在的缺陷和脆弱性,据此向开发人员反馈,以进一步分析根本原因,增强健壮性。传统软件和 DNN 软件编程范式和开发流程的根本差异,导致传统软件的测试技术不能直接应用于基于 DNN 的软件,这对 DL 软件的测试提出了新的挑战。传统软件的测试标准(如行覆盖、分支覆盖)直接遵循源代码结构,而 DNNs 的现有测试标准(如神经元覆盖、KMNC)则没有这种明确的结构。直观地看,增加测试标准以覆盖特定的代码片段(如分支)是检测缺陷的必要条件(见图 1)。当涉及到深度测试标准时,这种随意的联系就变得模糊。

ec711bd4da582aab49805cff28f39971.png

图 1 传统软件和 DNN 软件决策流比较。强调对最终输出决策做出主要贡献的神经元

近年来,DL 软件的测试取得了一些进展,主要围绕软件测试中的两个重要问题:1)测试标准,如神经元覆盖率、k-multisection 神经元覆盖率(KMNC)和神经元边界覆盖率(NBC);2)最大化覆盖的测试策略,如覆盖导向模糊(CGF)测试技术。但是 DNN 测试处于起步阶段,仍然有很多问题需要深入研究。DNN 软件其中一个就是不能遵守源代码结构,还有一个就是 DNN 测试期间,新生成的测试没有明确的断言,在 DNN 软件测试的框架下生成有效测试显得尤为重要。

在本文中,我们提出了一个用于 DNNs 的通用覆盖引导模糊测试框架 DeepHunter。具体地说,我们提出了一种图像生成的变形变异策略,在很大程度上保留了变异前后的测试输入语义,以及一种基于模糊化种子次数的频率感知种子选择策略。DeepHunter 是可扩展的,因为新的测试标准、种子选择策略和突变策略可以很容易地实现并插入到框架中。DeepHunter 整合了最近提出的 5 个测试标准和 4 种选种策略。本文贡献如下:

(1)提出一个生成有效测试用例的变形变异策略。通过对三个流行数据集的用户研究,证明了该方法的有效性。

(2)提出一个用于测试 DNNs 的通用 CGF 框架 DeepHunter。采用了 5 个最先进的试验标准,3 个现有的和 1 个新的选种策略。

(3)对不同测试策略和标准在增加 DNNs 的覆盖率和检测缺陷方面的有效性进行了系统的大规模研究。结果还表明,DeepHunter 比最先进的工具更有效。

(4)我们进一步进行了一个案例研究,以证明 DeepHunter 在检测 DNN 平台迁移过程中量化引入的小缺陷方面的有用性。

4、研究方法

典型的 CGF 迭代执行以下步骤:(1)从种子队列中选择种子;(2)将种子变异一定次数,以产生新的检测;(3)针对新生成的测试运行目标程序,如果检测到崩溃,则报告失败的测试,并将那些包含新跟踪的感兴趣的测试保存到种子队列中。尽管传统项目与 DNNs 存在很大差距,但 CGF 在传统项目上的成功仍可为 DNNs 的测试提供借鉴。考虑到 DNN 的独特特性,本文旨在设计一个有效的 CGF 框架,以便在 DNN 开发和部署过程中提供质量保证。

3d4fee6a481a92098a0501952647b60c.png

图 2 可扩展种子选择策略、变异策略和覆盖指导的 DeepHunter 工作流

4.1 转换和变异

4.1.1 测试断言

传统的模糊处理(例如,AFL[1])通过按位/字节翻转、块替换、输入文件之间的交叉等方式对种子进行突变。在任意变异的情况下,产生了各种各样的测试扩大覆盖范围。突变体在 DNN 测试中并不有用,因为没有明确的断言来判断突变体的结果。例如,突变器可能会生成人类无法识别的图像(如图 1 中无效的输入)。本工作采用测试图像在转换过程中的变形关系作为断言。

实际上,保证在任何情况下生成保留语义测试的完美变形变异策略可能并不存在。在本文中,我们应用特定领域的知识来设计一个允许生成具有低误报率的保留语义测试的保守变异策略。为 CGF 设计有效的变异策略,在增加变异的可变性和生成保留语义的测试之间保持平衡是一个挑战。如果突变策略使种子发生了非常小的变化,那么新生成的测试可能几乎没有变化,fuzzer 具有更低的发现失败测试或提高覆盖率的机会。如果种子更改太多,生成的测试可能会更改语义。针对这一挑战,我们提出了一种新的图像处理领域的变形变异策略。

4.1.2 变异突变

为了增加突变的可变性,我们选择了两类的 8 种图像变换:

l 像素值变换 P:图像对比度,图像亮度,图像模糊,图像噪声。

l 仿射变换 G:图像平移,图像缩放,图像剪切,图像旋转。

直观上,像素值变换改变像素值,而仿射变换(AF)移动图像的像素。这些转换已经被证明有效。为了保持突变体的语义接近于原始种子,我们采取保守策略,选择使用仿射变换只有一次(假设突变不影响精心挑选的语义参数)作为图像更不容易认出来如果他被多个仿射变换改变。可以多次使用像素值变换来增加可变性,我们使用 L0 和 L∞ 来约束像素级的变化。假设图像 s’是由 s 经过像素值变换得到的,那么 s’如果满足 f(s,s’)则为有效:

dce8db087c781f354a73240fc7279438.png

其中 0 <α&#xff0c; β <1&#xff0c;L0(s&#xff0c;s’)表示 s 与 a 之间的最大变化像素数。

4.1.3 变异突变算法

如图 3 算法所示&#xff0c;以一个图像 s 和将要生成的图像总数 K 作为输入&#xff0c;创建一组新生成的测试 T 作为输出。第一行首先获得初始种子 s0 和参考图像 s0’&#xff0c;然后生成 K 个新测试(第 3- 20 行)&#xff0c;为生成一个测试&#xff0c;DeepHunter 尝试用最大试验次数 TRY_NUM 对种子 s 进行突变(5-18 行)。如果参考图像与种子相同&#xff0c;则表示没有采用仿射变换。这样&#xff0c;既可以选择仿射变换&#xff0c;也可以选择像素值变换(第 7 行)&#xff0c;否则只能使用像素值变换(第 9 行)。所选择的转换 t&#xff0c;它随机选择一个参数(第 10 行)并执行转换(11 行)。如果选择了仿射变换&#xff0c;它将更新参考图像(14- 15 行)。如果经过最大次数训练后没有成功的突变则将原始图像 s 添加到 T 中(第 20 行)。

fc0bf55c5c27bb7eae8b5d3898cb1b24.png

4.2 可扩展的测试标准

有各种各样的标准被提出来测量神经网络的内部行为。在本文中&#xff0c;我们实现了 5 个现有的标准作为不同的反馈度量&#xff0c;比如深度学习系统的多粒度测试标准&#xff0c;从而确定是否应该保留新生成的测试以备进一步突变。该标准代表了现状并已被证明是有用的&#xff0c;以捕获内部 DNN 状态。

4.3 种子优先级

在传统的程序中&#xff0c;如果一个种子覆盖了一个分支&#xff0c;因为分支之间存在层次关系它更有可能通过改变种子来覆盖下面的分支。因此&#xff0c;传统的覆盖引导模糊器通常倾向于从队列中选择新生成的测试。当前的技术遵循类似的想法&#xff0c;对新生成的测试进行优先级选择。在 DeepHunter 中实现了两个策略&#xff1a;1)从队列中随机选择一颗种子的均匀采样策略。2)一种根据种子被模糊化的次数概率选择种子的新策略。选择种子 s 的概率由下面公式决定

7328ced5c9f0881bc2532b0b48c5e60b.png

其中 g(s)代表了多少次种子已经春光&#xff0c;pmin > 0 是一个选择种子最低概率。γ 是约束概率下降率的参数。

5、实验设计与分析

选择三个流行的公开数据集(即 MNIST、CIFAR-10 和 ImageNet)作为评估主题数据集。对于每个数据集&#xff0c;我们研究了之前工作中使用的几个流行的预训练 DNN 模型&#xff0c;从而达到测试精度。

afb95d0f09814580db04cbe726e03bb7.png

我们对三种不同的限制测试图像(DeepHunter、TensorFuzz、TensorFuzz)生成的策略进行了用户研究&#xff0c;并评估了它们在生成有效测试图像方面的有效性。对于每个数据集&#xff0c;随机选取 30 幅图像作为种子&#xff0c;三种突变策略每一种都生成 5000 幅图像。最后生成 9 个集合&#xff0c;共 45000 张测试图像(&#61;3 个数据集 x 3 个策略 x 5000 代)。我们为用户研究招募了 9 名参与者&#xff0c;并为每个参与者分配了一个测试集。考虑此外还现有的检测准则是否有助于指导误差检测和在不同的检测准则下&#xff0c;种子选择策略如何影响检测的有效性(包括检测到的误差的覆盖率、数量和多样性)这两个方面进行控制实验。以不同测试标准的结合为指导&#xff0c;对以下 5 种策略进行了深入的评估&#xff1a;

没有覆盖指导的随机测试(RT)&#xff1b;

DeepHunter&#43;同类 (DH&#43;UF)&#xff1b;

DeepHunter &#43;概率(DH &#43;概率)&#xff1b;

深度测试种子选择策略与覆盖指导&#xff1b;

TensorFuzz 种子选择策略与覆盖指导。

5.1 RQ1 变异突变的用户研究

表 2 显示了通过手动分析不同策略生成的无效图像的数量。三种策略中&#xff0c;CIFAR-10 的无效率普遍高于 MNIST 和 ImageNet。原因是 CIFAR-10 的分辨率相对较低。因此&#xff0c;即使是能够被 DNN 正确预测的有效输入&#xff0c;CIFAR-10 图像也很难被人类识别。虽然 DeepTest 中使用的转换参数相当保守&#xff0c;但它会生成许多没有约束的无效图像。例如&#xff0c;CIFAR-10 和 ImageNet 的无效图像分别占 32.0%和 18.3%。

8e4cd2d6e7803a5713eb6175cf1f1a22.png

图 2 不同突变策略产生的无效图像的数量和比例

用户研究表明&#xff0c;每种变形变异策略都可能产生无效图像。通过适当的约束设计和参数调整&#xff0c;有可能进一步降低失效率。我们的变异策略生成的测试图像具有较高的有效性。

5.2 RQ2 覆盖率增加的结果

表 3 显示了不同标准下的平均覆盖率结果。行 Init 显示初始种子所达到的覆盖度&#xff0c;粗体数字表示使用不同策略的特定标准的最佳情况。总的来说&#xff0c;我们有以下发现&#xff1a;

尽管与传统软件有本质上的不同&#xff0c;CGF 仍然比随机测试有效地最大化覆盖率&#xff0c;特别是对于那些难以覆盖的标准。尽管现有的 DL 测试标准没有像源代码中那样显示出显式的结构信息&#xff0c;但是这些标准可能仍然包含一些隐藏的决策流信息&#xff0c;这些信息使得覆盖指导策略在提高覆盖率方面更加有效。

与传统软件的 fuzzers 通常优先选择新生成的测试不同&#xff0c;在 DNN 测试中从队列中取样不同的种子也很重要。总的来说&#xff0c;在许多情况下&#xff0c;DH&#43;UF 和 DH&#43;Prob 比 Tensorfuzz 和 DeepTest 获得更高的覆盖率。后两种倾向于选择新生成的测试&#xff0c;而前两种倾向于选择更多样化的种子。

不同标准提高覆盖率的难度不同。对于 KMNC、TKNC 和 NC 来说&#xff0c;提高覆盖率相对比较容易。对于 NBC 和 SNAC 来说&#xff0c;由于它们代表的是边缘区域&#xff0c;所以很难覆盖&#xff0c;这样的结果已经在其他论文中得到验证。

ecf08efefb5a0ae9845375b9fe40b4f8.png

图 3 使用不同配置的模糊器运行超过 10 次的平均覆盖结果(%)

5.3 RQ3 误差检测结果

从队列中选择种子多样性是重要的&#xff0c;因此从某种程度上讲&#xff0c;误差的数量越多越好。例如&#xff0c;在大多数情况下&#xff0c;DH&#43;Prob 比其他策略检测到更多的错误。在较小的模型中&#xff0c;DH&#43;Prob 和 DH&#43;UF 检测到的错误数量是相似的。然而&#xff0c;当模型变得更复杂时&#xff0c;DH&#43;Prob 比 DH&#43;UF 检测到更多的错误。例如&#xff0c;在 VGG16 中&#xff0c;DH&#43;Prob 检测到 10553 个唯一错误&#xff0c;而 DH&#43;UF 只发现了 5437 个唯一错误。除了误差的数量&#xff0c;误差的多样性也很重要。不同的错误提供了更多的反馈&#xff0c;使开发人员能够理解问题&#xff0c;从而进一步增强的健壮性。研究表明&#xff0c;种子选择策略在 DNN 检测中具有重要意义。对选种的强烈偏好可能会达到极值&#xff0c;但会导致产生缺乏多样性的试验。一个简单的随机选择增加了多样性&#xff0c;但可能找不到角落的情况。

覆盖引导的模糊检测方法是一种有效的检测 DNNs 误差的方法。这种有效性受到测试策略的高度影响。在种子选择中同时考虑多样性和优先性的平衡策略 DeepHunter&#43;Prob 可以有效地检测出不同的错误。

5.4 RQ4 量化的错误检测

30600b744a6c205e6ccbefbd434c534b.png

表 4 DeepHunter&#43;Prob 和 TensorFuzz 在不同的 DNN 数量比设置(从 32 位到 16 位)下运行 5 次时检测到的唯一错误的平均数量。

表 4 总结了 DeepHunter&#43;Prob 和 TensorFuzz 在量化过程中引入的错误检测结果。在我们的实验中&#xff0c;对于所有情况&#xff0c;每个数据集的所有初始种子都无法检测量化前后的误差。

我们可以看到在不同的覆盖指导下 DeepHunter 发现的错误数量是不同的。使用 NBC 时&#xff0c;DeepHunter 发现 LeNet-5 和 ResNet-20 的错误更多。对于 MobileNet&#xff0c;错误发现与 NBC&#xff0c; SNAC&#xff0c; TKNC 超过其他两个标准。结果显示&#xff0c;代表 DNNs 总体主要行为的 KMNC 和 NC 在此类场景中相对无效。基于角域的标准对于捕获量化误差可能更有用。

在基于角域的标准下&#xff0c;DeepHunter 对于检测 DNN 量化过程中引入的误差更有用。较大的 QR 常常在量化前后引入较大的决策逻辑不一致性。同样&#xff0c;在较大的模型中&#xff0c;相同的 QR 通常会带来更高的影响力。

6、讨论与总结

主题数据集和 DNN 模型的选择可能对有效性构成威胁&#xff0c;我们试图通过使用 3 个经过充分研究的具有不同复杂性的数据集和流行的预训练的 DNN 模型来解决这个问题。此外&#xff0c;变异突变不能保证在所有情况下生成的图像的有效性&#xff0c;测试生成和混合精度模型量化过程中的随机性因素也是一大威胁。我们通过对每个配置重复多次、生成多个量化模型并平均结果来解决这个问题。

我们提出的 DeepHunter 是可扩展的&#xff0c;目前集成了四种种子选择策略和五种测试标准。进行大规模的比较研究来评估不同测试策略对不同标准的影响&#xff0c;最终证明了 DeepHunter 的有效性。由于关于深度学习质量保证的调查仍处于早期阶段&#xff0c;我们希望 DeepHunter 能让 SE 和 AI 社区都受益&#xff0c;并促进构建高质量 DNN 软件的进一步广泛研究。

7、致谢

本文由南京大学软件学院 2021 级硕士石孟雨翻译转述。




推荐阅读
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 图像分割技术在人工智能领域中扮演着关键角色,其中语义分割、实例分割和全景分割是三种主要的方法。本文对这三种分割技术进行了详细的对比分析,探讨了它们在不同应用场景中的优缺点和适用范围,为研究人员和从业者提供了有价值的参考。 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 短暂的人生中,IT和技术只是其中的一部分。无论换工作还是换行业,最终的目标是成功、荣誉和收获。本文探讨了技术人员如何跳出纯技术的局限,实现更大的职业发展。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 当前物联网领域十大核心技术解析:涵盖哪些关键技术?
    经过近十年的技术革新,物联网已悄然渗透到日常生活中,对社会产生了深远影响。本文将详细解析当前物联网领域的十大核心关键技术,包括但不限于:1. 军事物联网技术,该技术通过先进的感知设备实现战场环境的实时监测与数据传输,提升作战效能和决策效率。其他关键技术还包括传感器网络、边缘计算、大数据分析等,这些技术共同推动了物联网的快速发展和广泛应用。 ... [详细]
  • 8月16日,由容联主办,清华大学五道口金融学院和阿里达摩院共同支持的“科技助力金融50人论坛”在深圳成功举办。此次论坛作为通讯云中国行系列活动的重要组成部分,汇聚了行业精英,深入探讨了金融科技的最新趋势和发展机遇,旨在推动金融行业的创新与变革,开启金融未来的新篇章。容联创始人兼CEO在会上发表了重要演讲,分享了公司在金融科技领域的最新成果和未来展望。 ... [详细]
  • 不用蘑菇,不拾金币,我通过强化学习成功通关29关马里奥,创造全新纪录
    《超级马里奥兄弟》由任天堂于1985年首次发布,是一款经典的横版过关游戏,至今已在多个平台上售出超过5亿套。该游戏不仅勾起了许多玩家的童年回忆,也成为强化学习领域的热门研究对象。近日,通过先进的强化学习技术,研究人员成功让AI通关了29关,创造了新的纪录。这一成就不仅展示了强化学习在游戏领域的潜力,也为未来的人工智能应用提供了宝贵的经验。 ... [详细]
  • 全球计算机视觉顶会CVPR2018(ConferenceonComputerVisionandPatternRecognition,即IEEE国际计算机 ... [详细]
  • 了解供应链简单来说,供应链涉及一系列旨在向最终用户提供产品或服务的步骤。企业组织及其供应商之间始终存在一个网络,来生产特定产品并将其交付给最终用户。该网络包括不同的活动、人员、实体 ... [详细]
author-avatar
潮人-小麦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有