CN113743572A - 一种基于Fuzz的人工神经网络测试方法 - Google Patents

一种基于Fuzz的人工神经网络测试方法 Download PDF

Info

Publication number
CN113743572A
CN113743572A CN202010487164.7A CN202010487164A CN113743572A CN 113743572 A CN113743572 A CN 113743572A CN 202010487164 A CN202010487164 A CN 202010487164A CN 113743572 A CN113743572 A CN 113743572A
Authority
CN
China
Prior art keywords
neural network
sample
fuzzy
function
tested
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010487164.7A
Other languages
English (en)
Inventor
房春荣
曹可凡
吕军
章许帆
顾逸飞
沪胜浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202010487164.7A priority Critical patent/CN113743572A/zh
Publication of CN113743572A publication Critical patent/CN113743572A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)

Abstract

一种基于Fuzz的人工神经网络测试方法,将待测神经网络表示为一个Tensor流图,Tensor图的相关参数在本地训练待测模型时获得。基于在训练时获得的Tensor图,引入传统Fuzz的思想,在Tensor图的相关部分做一些模糊扰动,并用覆盖值计算函数计算出扰动后的覆盖值。在比较扰动覆盖值与扰动前语料集中的各元素的覆盖值,评估新生成的语料是否可以整合到语料集中,并作为下次扰动的待选集合。如果得到的模糊结果已经满足目标函数,则中断模糊进程,返回对应扰动结果,并以图片的方式呈现出来。

Description

一种基于Fuzz的人工神经网络测试方法
技术领域
本发明属于软件工程和机器学习领域,尤其是代码表示和深度学习方法在软件工程领域的应用,用于检测代码神经网络的鲁棒性。
背景技术
在过去的数年里,随着人们对神经网络研究的不断深入,涌现了越来越多的优秀深度学习模型,其应用范围也不断拓宽,包括医疗诊断、自动驾驶、智能合约和智慧法院等。然而,在被广泛应用的同时,深度学习系统(DL system)也暴露出了很多问题,其中之一就是鲁棒性的提升。在许多安全要求极高的重点研究的领域中,如自动驾驶和智能司法,一次错误的判断可能给使用者带来重大损失以至生命危险。如果不能有效降低神经网络模型被对抗样本误导的概率,即提高模型的鲁棒性,那么其投入使用必将遥遥无期。
然而,众所周知的是,神经网络的调试比较困难,其鲁棒性缺陷的理论分析也尚不完备。在传统的软件测试领域,模糊测试是发现软件安全性漏洞的常用方式。然而神经网络和传统软件相比,在软件内在结构上有巨大的差距,也就是说,现成的Fuzz工具,无法直接应用于神经网络模型。尽管如此,神经网络的鲁棒性测试可以借鉴Fuzz的思想,并作出一些相应的调整。本发明采用SIFT算法发掘图像特征,并以此生成大量对抗样本。对抗样本是指对数据集中样本添加干扰,形成的特殊输入样本,其目的是导致模型以高置信度给出一个错误的输出。
本发明旨在提出一个轻量级的Fuzz工具,通过以启发式生成算法结合SIFT特征点生成大批对抗样本,而后作为模型输入进行执行,并计算覆盖值对新样本进行评估。模糊测试流程通过快速浏览整个语料集,并在短时间内大批对抗样本,可以为待测神经网络模型的后续测试提供一些指导性的描述。
发明内容
本发明要解决的问题是:模糊测试思想如何应用到当前的神经网络检测中,发现更多对抗样本,从而引导神经网络模型质量的提高。
本发明的技术方案为:一种基于Fuzz的人工神经网络测试方法,包括以下步骤:
1)将待测神经网络在本地进行训练,并获取神经网络的Tensor流图的结构参数,主要通过以下几个详细步骤:
1.1)首先,预设训练过程的相关参数,包括与Tensor流图相关的数据的保存路径,训练数据集的保存路径,以及训练的步数等;
1.2)其次,使用Python的Keras包,构建出待测神经网络每一层的架构layeri,再将已经建立好的各层神经网络进行组织,搭建出待测的n层神经网络Net={layer1→layer2→...→layern};
1.3)然后,对2)中所获得的神经网络Net,分析并选出所需要保存的,与Tensor流图相关的数据(比如说神经网络激活层的输出结果),添加到collectionk中,collectionk={layera,layerb,...,layeri}(1≤i≤n),k为设定的集合个数。
1.4)接着,设定loss值的表达式,并选用合适的optimizer,训练待测神经网络Net。
1.5)最后,观察训练过程中获得的准确率,以确定是否完成待测神经网络Net。在训练过程中,Tensor图的相关数据,已经保存到预设目录下的checkpoint文件中;
2)设定模糊测试参数,包括与Tensor流图相关的数据的保存路径,模糊测试的迭代次数以及一次迭代中生成的扰动样本个数。然后设定几个相关的功能函数
2.1)选择对应的sample function,用于规定如何从语料集中选择一个样本,作为扰动过程的输入。该函数有多种已经预设好的选择规则供选择,每次模糊操作前,都需要调用该函数,从语料集里选择一个元素。推荐使用recent_sample_function,即优先选择新加入的元素。
选择对应的mutate function,用于规定如何对选出的样本进行扰动。对于每次从语料集corpus中选择出的元素corpusElement,可以使用不同的方式来改变样本的参数值,包括对样本放缩,改变样本的参数精度,或是改变样本的像素值等。每次扰动是一个批量任务,通过一定的随机过程,可以批量生成一组扰动结果,并以列表的形式作为返回值。本发明使用sift_filtered_mutation,即通过分析corpusElement的图片参数,标记出图片的关键节点集合Keypoints={point1,point2,...,pointm},其中m表示节点个数。这些关键点具有图片特征信息,且与图片尺度无关,对于pointi(1≤i≤m),包含如下参数{angle,pt,response,size},其中angle表示关键点的矢量方向,pt表示对应的坐标,response表示该点的相应程度,size表示该点的大小。
2.2)当使用白噪声对图片进行扰动后,通过response和pt,对关键节点进行二次扰动,以提高扰动效果。
2.3)选择对应的coverage function,用于规定以何种方式计算新生成的扰动样本的覆盖值信息。由于新生成的扰动样本需要作为待测神经网络的输入,并获得样本对应的分类标签,故通过获取保存在checkpoint文件中的参数,可以计算出对应的覆盖值信息。根据计算得到的覆盖值,算法可以评估新生成的扰动样本是否可以加入语料集;
3)从数据集中获取一个样本作为初始输入,包含图片的相关信息和对应的标签(如果是无监督学习则无标签)。然后将得到的图片标签对(image,label)转换成语料集的元素类型corpusElement,使其成为语料集的第一个元素。
4)创建模糊操作对象Fuzzer。在创建Fuzzer对象时,提供相关参数,包括对应的语料集,功能函数和抽取函数,其中抽取函数规定了如何从checkpoint中获取collectionk的信息。
5)模糊对象Fuzzer调用其loop方法,执行模糊测试,具体分为如下几步:
5.1)首先,调用sample function从语料集中抽取出一个样本。如果是初始语料集,那么其中必然只包含一个对象,即从数据集中选择的样本转换成的corpusElement对象;
5.2)接着调用mutate function,对从语料集中选中的样本进行扰动,生成k个(k由用户设定)扰动后的图片mutatelist={mutate1,mutate2,...,mutatek};
5.3)最后将mutatei(1≤i≤k)转换成corpusElement,并使用coverage function计算新生成的覆盖值信息,并与原来对象的覆盖值信息进行对比,如果接近最近邻距离大于某一阈值,则将新生成的样本加入到原语料集中;本发明的coverage function基于每层网络的输出,通过计算每层神经元的输出值是否大于设定的阈值,来判断神经元是否被“激活”,并计算激活的神经元占总神经元个数的比值,即coverage=neuronactivated/neurontotal
6)判断生成的新元素是否满足目标函数要求,如果满足要求则终止程序返回并新生成的扰动元素,否则继续进行模糊操作,直到完成规定的迭代次数。经过实验发现,相比于基于随机变化的模糊方法,基于SIFT的模糊方法在效率上有明显的提高。
本发明的特点在于:1、将传统软件工程的Fuzz思想,应用到神经网络测试中;2、将SIFT方法与白噪声相结合,成功且高效生成了对抗样本;3、运用新的覆盖值计算方式,更有效地运用了Tensor流图的相关信息;
本发明的有益效果是:作为一个轻量级的Fuzz工具,通过将传统Fuzz思想应用到神经网络测试,可以快速浏览数据集并生成一部分对抗样本。
附图说明
图1为本发明整体流程图。
图2为训练用神经网络的架构图。
图3为参数设置流程
具体实施方式
本发明中涉及的关键技术是构建待测神经网络模型和表征神经网络模型,具体使用了Keras库、从神经网络中获取的Tensor流图、SIFT算法和计算覆盖值的神经元覆盖值算法来实现。
1、构建待测神经网络模型
在本发明中,采用Keras构建待测神经网络模型,并在本地进行训练。Keras是基于Theano和TensorFlow的,用Python编写的高级神经网络API。Keras模型可理解为一个层的序列或数据的运算图,也就是网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是相互独立的,因此可以方便清晰地搭建自己的模型。
2、表征神经网络模型
在本发明中,采用Tensor流图的节点信息表征神经网络模型,利用节点数据生成对抗样本。Tensor流图是用来记录神经网络状态的一个图结构。在训练神经网络的过程中,使用tensorflow的add_to_collection方法,将模型的结构添加到对应的集合中,并保存在本地文件中。当进行模糊测试时,新生成的测试样本通过神经网络,根据结构信息收集对应的运行参数,并用于计算覆盖值。
下面用一个具体的示例来说明本方法的步骤,并展示结果。
实验环境为:Windows 10,运行内存16GB,显卡为GeForce GTX 1080
本发明的整体流程如图1所示,具体实施步骤如下:
1)设定checkpoint的保存路径为:″.\\model″,训练步数为100000;
2)使用Keras库,搭建经典分类模型LeNet,并使用MNIST作为数据集。神经网络架构由图2所示。选用的优化器为自动变更学习速率优化器,学习率设定为0.1;
3)获取神经网络的Tensor流图,保存神经网络各层的输出信息到集合coverage_tensors中,保存最后的输出结果到″metadata_tensors″中,保存输入的图片和标签到″input_tensors″中;然后训练神经网络,得到本地文件checkpoint
4)设定模糊测试总迭代次数为20次,每次生成的模糊测试样本为100个,激活阈值为1e-7。sample function为recent_sample_function,即优先选择新加入的元素;coverage function为each_layer_coverage_function,基于每层的输出值计算覆盖值;mutate function为sift_filtered_mutation,即基于SIFT的启发式模糊算法,具体流程见图3。
5)创建Fuzzer对象,将功能函数作为参数传递,并执行loop()函数,进行模糊测试;
6)分析返回结果,可以发现针对图2结构的预训练神经网络,我们的工具可以有效地发现一批对抗样本,同时工具显示平均生成时间和总测试时间。

Claims (5)

1.一种基于Fuzz的人工神经网络测试方法,其特征是将待测神经网络表示为一个Tensor流图,Tensor图的相关参数在本地训练待测神经网络模型时获得。基于在训练时获得的Tensor图,引入Fuzz的思想生成新的输入样本,并计算覆盖值;在比较扰动后与扰动前的覆盖值,评估新生成的样本是否可以整合到语料集中,并作为下次扰动的待选集合;如果得到的测试结果已经满足目标函数,则中断模糊测试进程并以图片的方式呈现结果。
2.根据权利要求1所描述的一种基于Fuzz的人工神经网络测试方法,其特征是在本地训练待测神经网络的过程中,获取神经网络的Tensor流图的结构参数,主要通过以下几个步骤进行收集:
1)预设训练过程的相关参数,包括与Tensor流图相关的数据的保存路径,训练数据集的保存路径,以及训练的步数等;
2)使用Python的Keras包,构建出待测神经网络每一层的架构layeri,再将已经建立好的各层神经网络进行组织,搭建出待测的n层神经网络Net={layer1→layer2→…→layern};
3)分析2)中所获得的神经网络Net,并选出所需要保存的,与Tensor流图相关的数据(比如说神经网络激活层的输出结果),添加到多个数据集合collectionk中;
4)设定损失函数的表达式,并选用合适的优化器optimizer,训练待测神经网络Net,并保留Tensor图的相关数据;
5)分析待测神经网络Net的准确率,以确定待测神经网络Net是否可用。
3.根据权利要求1所描述的一种基于Fuzz的人工神经网络测试方法,其特征是对于每一个待测神经网络模型,需要创建模糊测试操作对象Fuzzer;Fuzzer对象调用其loop方法,执行模糊测试;在创建Fuzzer对象时,需要设定相关参数,包括存放测试样本的语料集corpus,抽取函数sample function和扰动函数mutate function。
4.根据权利要求1所描述的一种基于Fuzz的人工神经网络测试方法,其特征是模糊对象Fuzzer负责完成整个模糊测试过程;首先,调用sample function从语料集中抽取出一个样本。接着调用mutate function,对从语料集中选中的样本进行扰动,生成k个(k由用户设定)扰动后的新样本mutatelist={mutate1,mutate2,...,mutatek};最后将mutatei(1≤i≤k)转换成corpusElement,并使用coverage function计算新生成样本的覆盖值信息,并与已有样本的覆盖值信息进行对比;如果新样本与已有样本的最近邻距离大于某一阈值,则将新生成的样本加入到原语料集中。
5.根据权利要求1所描述的一种基于Fuzz的人工神经网络测试方法,其特征是最终的模糊测试结果应满足目标函数要求;目标函数比较新生成样本的自带标签与模型分析后得到的结果标签,如果二者不一致,则说明模糊测试成功发现使神经网络模型出现错误判断的输入样本,目标函数返回真,并以图片形式输出这一样本;否则,目标函数返回假。
CN202010487164.7A 2020-05-27 2020-05-27 一种基于Fuzz的人工神经网络测试方法 Pending CN113743572A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010487164.7A CN113743572A (zh) 2020-05-27 2020-05-27 一种基于Fuzz的人工神经网络测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010487164.7A CN113743572A (zh) 2020-05-27 2020-05-27 一种基于Fuzz的人工神经网络测试方法

Publications (1)

Publication Number Publication Date
CN113743572A true CN113743572A (zh) 2021-12-03

Family

ID=78727938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010487164.7A Pending CN113743572A (zh) 2020-05-27 2020-05-27 一种基于Fuzz的人工神经网络测试方法

Country Status (1)

Country Link
CN (1) CN113743572A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374898A (zh) * 2022-08-02 2022-11-22 清华大学 神经网络测试方法、装置、设备及存储介质
CN116185843A (zh) * 2023-01-16 2023-05-30 天航长鹰(江苏)科技有限公司 基于神经元覆盖率引导的两阶段神经网络测试方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103941590A (zh) * 2014-04-25 2014-07-23 卢万银 一种基于数学模型的过程模糊控制器系统与编程设计方法
CN108470003A (zh) * 2018-03-24 2018-08-31 中科软评科技(北京)有限公司 模糊测试方法、装置和系统
CN109190379A (zh) * 2018-08-03 2019-01-11 清华大学 一种深度学习系统的漏洞检测方法和装置
CN109379329A (zh) * 2018-09-05 2019-02-22 中国人民解放军战略支援部队信息工程大学 基于lstm的网络安全协议模糊测试方法及系统
CN110727871A (zh) * 2019-10-21 2020-01-24 河海大学常州校区 基于卷积分解深度模型的多模态数据采集及综合分析平台
WO2020061586A1 (en) * 2018-09-22 2020-03-26 Manhattan Engineering Incorporated Code completion

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103941590A (zh) * 2014-04-25 2014-07-23 卢万银 一种基于数学模型的过程模糊控制器系统与编程设计方法
CN108470003A (zh) * 2018-03-24 2018-08-31 中科软评科技(北京)有限公司 模糊测试方法、装置和系统
CN109190379A (zh) * 2018-08-03 2019-01-11 清华大学 一种深度学习系统的漏洞检测方法和装置
CN109379329A (zh) * 2018-09-05 2019-02-22 中国人民解放军战略支援部队信息工程大学 基于lstm的网络安全协议模糊测试方法及系统
WO2020061586A1 (en) * 2018-09-22 2020-03-26 Manhattan Engineering Incorporated Code completion
CN110727871A (zh) * 2019-10-21 2020-01-24 河海大学常州校区 基于卷积分解深度模型的多模态数据采集及综合分析平台

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AUGUSTUS ODENA 等: "TensorFuzz: Debugging Neural Networks with Coverage-Guided Fuzzing", 《ARXIV》, pages 1 - 12 *
JIE WANG 等: "FDFuzz: Applying Feature Detection to Fuzz Deep Learning Systems", 《INTERNATIONAL JOURNAL OF PERFORMABILITY ENGINEERING》, vol. 15, no. 10, pages 2675 - 2682 *
崔建峰 等: "面向神经网络的模糊测试算法优化", 《厦门理工学院学报》, vol. 27, no. 5, pages 41 - 46 *
徐鹏 等: "基于循环神经网络的模糊测试用例生成", 《计算机应用研究》, vol. 36, no. 9, pages 2679 - 2685 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374898A (zh) * 2022-08-02 2022-11-22 清华大学 神经网络测试方法、装置、设备及存储介质
CN115374898B (zh) * 2022-08-02 2023-04-25 清华大学 神经网络测试方法、装置、设备及存储介质
CN116185843A (zh) * 2023-01-16 2023-05-30 天航长鹰(江苏)科技有限公司 基于神经元覆盖率引导的两阶段神经网络测试方法及装置
CN116185843B (zh) * 2023-01-16 2023-12-08 天航长鹰(江苏)科技有限公司 基于神经元覆盖率引导的两阶段神经网络测试方法及装置

Similar Documents

Publication Publication Date Title
Zhong et al. Hierarchical tracking by reinforcement learning-based searching and coarse-to-fine verifying
Russakovsky et al. Detecting avocados to zucchinis: what have we done, and where are we going?
CN108961308B (zh) 一种漂移检测的残差深度特征目标跟踪方法
CN113688167A (zh) 基于深度兴趣网络的深度兴趣捕获模型构建方法及装置
CN109325517A (zh) 一种基于Attention的循环神经网络模型的图分类方法
CN108009593A (zh) 一种迁移学习最优算法选取方法及系统
CN113743572A (zh) 一种基于Fuzz的人工神经网络测试方法
CN114298851A (zh) 基于图表征学习的网络用户社交行为分析方法、装置及存储介质
CN114511710A (zh) 一种基于卷积神经网络的图像目标检测方法
Fan et al. Gcn-se: Attention as explainability for node classification in dynamic graphs
CN115358337A (zh) 一种小样本故障诊断方法、装置及存储介质
CN114037871A (zh) 一种基于神经支持决策树的图像分类可解释方法
Xia et al. Evaluation of saccadic scanpath prediction: Subjective assessment database and recurrent neural network based metric
Daniel Loyal et al. A Bayesian nonparametric latent space approach to modeling evolving communities in dynamic networks
CN116432184A (zh) 基于语义分析和双向编码表征的恶意软件检测方法
CN110489602B (zh) 知识点能力值预估方法、系统、设备及介质
CN116166890B (zh) 基于浅层自动编码器模型的推荐方法、系统、设备及介质
CN109934352B (zh) 智能模型的自动进化方法
Miseta et al. Surpassing early stopping: A novel correlation-based stopping criterion for neural networks
Pang et al. Salient object detection via effective background prior and novel graph
CN115392434A (zh) 一种基于图结构变异测试的深度模型加固方法
CN115631526A (zh) 基于自监督学习技术的被遮挡的人脸表情识别方法及应用
CN114299342A (zh) 一种基于深度学习的多标记图片分类中未知标记分类方法
Klawonn et al. Exploiting class learnability in noisy data
Shaheen et al. Autonomic workload performance modeling for large-scale databases and data warehouses through deep belief network with data augmentation using conditional generative adversarial networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination