基于Fuzz的人工神经网络测试的研究与工具开发毕业论文
2020-04-20 13:51:21
摘 要
在过去几年中,大量人力物力被投入到深度神经网络的研究中,用于提高神经网络的分类和识别能力。随着研究的不断深入,神经网络模型的识别准确率不断提高,应用场景愈加广泛,但其易受对抗样本攻击的缺陷也引起了研究人员们的注意。众所周知,许多关键系统,比如自动驾驶,其安全性与可靠性必须得到保障。然而,并非所有系统都具有足够的鲁棒性,因此有必要在投入使用之前对这些系统进行测试。
本文分析了模糊测试技术,并开发了一个模糊测试工具,用于暴露神经网络错误行为的自动模糊测试技术。在神经元覆盖度量指导下,模糊测试过程旨在通过变异正确分类的神经网络图像,找到让神经网络产生错误分类的异常输入。 FDFuzz采用特征检测技术来分析输入图像,并通过关键点的特征来引导和提高变异效率。同时,我们采用了pug等技术,搭建了一个用于进行测试结果展示的网页。
关键词:模糊测试 神经网络 机器学习 对抗样本
Research and tool development of artificial neural network testing based on Fuzzing
ABSTRACT
In the past years, so many resources have been spent on researches into deep learning networks for better classification and recognition. These models have higher accuracy and wider application contexts, while the weakness of easily being attacked by adversarial examples have raised our concern. It is widely acknowledged that the reliability of many safety-critical systems must be confirmed. However, not all the systems have sufficient robustness, which makes it necessary to test these models before going into service.
In this work, we make the analysis of fuzzing technology, and introduce an automated fuzzing tool for exposing incorrect behaviors of neural networks. Under the guidance of neuron coverage metric, the fuzzing process is aimed to find those examples to let the network make mistakes via mutating inputs which are correctly classified. Our tool employs feature detection technique to analyze input images and improve the efficiency of mutation by features of keypoints. We also leverage framework like pug to design the web page for showing testing results.
Keywords: fuzz testing; neuron network; machine learning; adversarial examples
目录
摘要 I
ABSTRACT II
第一章 绪论 1
1.1 课题背景及研究意义 1
1.2 系统目标 2
1.3 章节安排 2
第二章 系统开发环境介绍 3
2.1 Python简介 3
2.2 PyCharm开发环境 4
2.3 Tensorflow 4
2.4 前后端技术 4
第三章 工具设计 6
3.1 总体流程 6
3.2理论知识 6
3.2.1模糊测试 7
3.2.2 SIFT算法 8
3.2.3神经元激活比覆盖值分析 10
3.3功能模块 11
3.3.1本地训练 11
3.3.2模糊测试 12
3.3.3前端展示 12
第四章 本地训练模块 13
4.1工作流程说明 13
4.2关键代码实现 14
4.3结果展示 17
第五章 模糊测试模块 19
5.1 模糊测试流程 19
5.2 自定义类分析 20
5.3 关键代码实现 23
5.4 结果展示 30
第六章 前端展示模块 31
6.1 前端展示流程 31
6.2 主要关键代码实现 31
6.3 结果展示 36
第七章 总结与展望 39
参考文献 40
致谢 42
第一章 绪论
随着人工智能研究的不断深入,涌现了大量精心设计的,分类效果良好的学习模型。作为机器学习的重要分支,深度学习主要通过构建人工神经网络来解决贡献度分配问题,这样构建出的模型不仅适用于表示学习问题,也可以良好地解决一批通用人工智能问题。一个学习表现良好,同时鲁棒性强的学习模型,可以催生出大量科技产品,推动社会进步。因此研究和开发一个针对人工神经网络的分析工具,用于甄选和评估神经网络的准确率和鲁棒性,是十分有必要的。
1.1 课题背景及研究意义
在过去的数年里,随着人们对神经网络研究的不断深入,学界涌现了大量优秀的,应用广泛的深度学习模型,涉及领域包括人脸识别、医疗诊断、自动驾驶、智能合约等。和传统机器学习模型相比,神经网络模型在感知、学习和认知等诸多子任务中表现更好,由此神经网络模型更能胜任复杂任务。然而,在一片叫好声中,基于神经网络模型的深度学习系统也暴露出了很多问题,其中最严重的就是鲁棒性不足。经过研究者大量测试,通过合理利用一些精心设计的误导输入样本,甚至是生成一大批足够数量的随机样本,就可以成功引发深度学习系统的工作错误。这样的缺陷是不可容忍的,尤其是在许多安全性或准确性要求极高的重点研究的领域中,如自动驾驶和智能司法,一次系统错误就可能给使用者带来重大损失以至生命危险。如果不能有效降低深度学习系统被对抗样本误导的概率,那么这样的产品就无法给使用者提供保障,其投入使用必将遥遥无期。
目前,模糊测试被认为是当前发掘软件漏洞的最强大测试技术,因此也是最广泛使用的发掘手段。在传统软件领域,大量比较严重的安全漏洞,比如远程代码执行和特权提升等,都是使用模糊测试技术发现的。模糊测试通过向待测系统不断提供初始输入的变异结果,并检测系统的中间过程和输出结果,结合系统的结构信息,对测试流程进行启发性指导,并最终发现系统的漏洞。AFL和LibFuzzer都是基于模糊测试的著名工具。然而朴素的Fuzzing技术仍然存在着覆盖率低的缺陷,许多的代码漏洞需要更大的路径覆盖率才能触发,而不是通过简单的随机尝试。为了解决这一问题,已经有不少人提出利用被测试系统的其他信息以引导和增强测试技术的方法,如语义库蒸馏、流分析、符号执行和静态分析等。然而,试图将模糊测试技术应用到对深度学习系统的研究尚未成熟。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: