采用基于区域的神经元选择策略的模糊测试方法及终端

文档序号:28692537发布日期:2022-01-29 11:44阅读:146来源:国知局
采用基于区域的神经元选择策略的模糊测试方法及终端

1.本发明属于深度神经网络测试的技术领域,具体涉及一种采用基于区域的神经元选择策略的深度神经网络的覆盖率引导的模糊测试方法及终端。


背景技术:

2.随着深度神经网络的发展,深度学习系统已越来越多地应用于安全关键场景,例如自动驾驶汽车、恶意软件检测、医疗诊断等。然而其往往会表现出可能导致严重后果的错误行为。因此,通过系统化的测试来保证和提高深度神经网络模型的质量十分重要。由于深度神经网络与传统软件编程范式的不同,传统软件的测试方法与测试标准无法直接应用于深度神经网络模型的测试中。目前,一些工作提出了针对深度神经网络的覆盖率引导的模糊测试方法。其中,该方法的一个关键步骤是迭代选择神经元来计算它们的梯度,然后产生微小的扰动来改变种子输入以最大化覆盖率。因此,神经元选择策略是影响该方法有效性的关键因素之一。
3.当前,已经提出的神经元选择策略大多利用神经元的激活次数、神经元所在神经网络中的层、神经元拥有的权值、神经元的输出值是否接近激活阈值等条件来筛选神经元。然而,人为设定的激活阈值不能客观的代表深度神经网络的特性,而且所有神经元采用同一激活阈值,无法考虑到不同神经元之间功能分布的差异。由于,深度神经网络模型的内部逻辑是从训练数据中学习得到的,每个神经元的功能是由训练数据客观确定。因此,每个神经元从整个训练集上得到的输出分布能近似表征其功能分布。若是神经元选择策略能够利用每个神经元的输出分布,选择出有价值的神经元作为目标损失函数中所需的神经元,可以提高测试的有效性。此外,目前的深度神经网络的覆盖率引导的模糊测试,大多从测试集中随机选择一定数量的测试数据作为测试过程中所需的种子输入。然而,不同的测试数据能够探索深度神经网络模型不同的内部状态,影响测试的有效性。


技术实现要素:

4.针对于上述现有技术的不足,本发明的目的在于提供一种采用基于区域的神经元选择策略的模糊测试方法及终端,以克服现有深度神经网络的模糊测试方法中采用的神经元选择策略未考虑到不同神经元之间功能分布差异的问题;本发明将从所有训练数据上得到的每个神经元的输出分布划分为五个区域,当面对一个测试输入时,根据神经元的输出值位于其输出分布的区域来划分神经元,然后再进一步筛选位于神经元覆盖率表现最好的区域里的神经元作为目标损失函数中所需的神经元。本发明还利用了深度神经网络模型的最大预测概率选择模型不确定性高的种子输入,提高了深度神经网络覆盖率引导的模糊测试的有效性。
5.为达到上述目的,本发明采用的技术方案如下:
6.本发明的一种采用基于区域的神经元选择策略的模糊测试方法,包括步骤如下:
7.1)采用基于模型最大预测概率的种子选择策略从测试数据中选择一定数量的种
子输入形成种子输入列表;
8.2)选取种子输入列表的一个种子输入,生成相应的扰动信息,并将扰动信息加入到种子输入上,生成新的中间测试输入;
9.3)将新生成的中间测试输入作为被测深度神经网络模型的输入,模型返回对该中间测试输入的分类标签,将得到的分类标签与该中间测试输入对应的种子输入的原始标签进行比对,以判断深度神经网络模型是否发生错误行为;
10.4)计算未检测到深度神经网络模型错误行为的中间测试输入的神经元覆盖率和扰动程度,若神经元覆盖率比对应的种子输入的神经元覆盖率高且扰动程度满足限制要求,则将该中间测试输入加入到种子输入列表中进行进一步突变,继续对深度神经网络模型进行模糊测试。
11.进一步地,所述步骤1)具体包括:
12.11)从被测深度神经网络模型的全部测试数据中随机选择一定数量的能够被深度神经网络模型正确分类的测试数据,并记录这些测试数据的原始标签;
13.12)根据深度神经网络模型返回的关于随机选择出的测试数据的预测概率,优先选择最大预测概率值越小的测试数据,作为模糊测试所需的种子输入,形成种子输入列表。
14.进一步地,所述步骤2)具体包括:
15.21)收集被测深度神经网络模型中的每个神经元在整个训练集上输出值的最小值和最大值,近似代替每个神经元的输出分布;
16.22)将得到的每个神经元在整个训练集上输出值的最小值和最大值所构成的区域再细致划分成5个不同区域;
17.23)每次只在某一个区域中选择固定数量的神经元作为模糊测试中目标损失函数所需的神经元,来判断选择哪个区域的神经元时达到的神经元覆盖率最高;
18.24)在神经元覆盖率最高的区域中选择激活次数最少的神经元作为目标损失函数中所需的神经元,对目标损失函数进行梯度上升求解产生扰动信息,将扰动信息加入到种子输入上对其进行突变,生成新的中间测试输入。
19.进一步地,所述步骤4)具体包括:
20.41)计算新生成的中间测试输入的神经元覆盖率,与对应的种子输入的神经元覆盖率相比较,判断此中间测试输入是否提高了深度神经网络模型的神经元覆盖率;
21.42)计算所述中间测试输入与种子输入之间欧式距离,来代表两者之间的扰动程度,判断两者之间的欧式距离是否超过预先设置的阈值大小;
22.43)将提高了神经元覆盖率且扰动程度小于设定阈值的中间测试输入加入到种子输入列表中,对深度神经网络模型继续进行模糊测试,以最大化神经元覆盖率且能够检测到模型的错误行为。
23.本发明利用每个神经元在训练集上的输出分布来筛选神经元,选择位于自身输出分布不同区域的神经元会收获不同的神经元覆盖率。本发明方法在获得更高神经元覆盖率的同时能够检测到更多深度神经网络模型的错误行为,有效的提高了深度神经网络的测试有效性。
24.本发明还提供了一种采用基于区域的神经元选择策略的模糊测试终端,包括:处理器、通信接口、存储器和通信总线;其中,处理器、通信接口以及存储器通过通信总线完成
相互间的通信;
25.存储器,用于存放计算机程序;
26.处理器,用于执行存储器上所存放的程序时,实现如上所述的采用基于区域的神经元选择策略的模糊测试方法中的步骤。
27.本发明的有益效果:
28.本发明充分利用了深度神经网络中每个神经元在全部训练数据集上的输出分布,将其划分为5个不同的区域。给定一个测试输入时,按照神经元的输出值位于其自身的输出分布的区域来筛选神经元,同时提出了一种种子选择策略,选择模型不确定性高的测试数据作为种子输入。具体说,主要有如下优点:
29.本发明考虑到深度神经网络模型对每个输入返回的预测概率可以直观的反映模型对于分类结果的置信程度,具有较小的最大预测概率值的输入更有可能暴露深度神经网络模型的错误行为。本发明提出一种基于模型最大预测概率的种子选择策略,从测试集中选择模型不确定性高的测试数据作为模糊测试所需的种子输入,进一步提高测试有效性。
30.本发明避免了现有的深度神经网络覆盖率引导的模糊测试方法中关键因素之一的神经元选择策略没有考虑到不同神经元之间功能分布的差异的问题,充分利用了每个神经元在所有训练数据上得到的输出分布,将其划分为5个不同的区域,并基于区域的神经元覆盖率表现,从位于表现最好的区域的神经元中再进一步筛选重要神经元,以最大化神经元覆盖率,并同时检测模型的错误行为。
附图说明
31.图1为本发明的方法架构图。
32.图2为本发明中将每个神经元的输出分布划分为5个区域的示意图。
33.图3为在对不同深度神经网络模型进行神经元覆盖率引导的模糊测试时,选择不同区域的神经元作为目标损失函数所需神经元时神经元覆盖率区域表现图。
34.图4为在对在不同的深度神经网络模型进行神经元覆盖率引导的模糊测试时,生成的对抗性输入的示例图。
具体实施方式
35.为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。
36.参照图1所示,本发明的一种采用基于区域的神经元选择策略的模糊测试方法,包括步骤如下:
37.步骤1):种子输入获取:采用基于模型最大预测概率的种子选择策略从测试数据中选择一定数量的种子输入,形成种子输入列表;其中,
38.11)从被测深度神经网络模型的全部测试数据中随机选择一定数量的能够被深度神经网络模型正确分类的测试数据,并记录这些测试数据的原始标签;
39.12)根据深度神经网络模型返回的关于随机选择出的测试数据的预测概率,优先选择最大预测概率值小的测试数据,作为模糊测试过程中所需的种子输入,形成种子输入列表;深度神经网络模型的最大预测概率的定义为:
[0040][0041]
其中,x表示深度神经网络模型d的一个输入,c表示深度神经网络模型d能够分类的类标签种类数,pi(x)表示深度神经网络模型d预测输入x属于第i类的概率;输入x的p
max
(x)越小,说明深度神经网络模型对于分类结果置信度越低,输入x对于深度神经网络模型越具有挑战性,越有可能暴露深度神经网络模型隐藏的缺陷。
[0042]
步骤2):中间测试输入的生成:选取种子输入列表中的一个种子输入,生成相应的扰动信息,将扰动信息加入到种子输入上,生成新的中间测试输入;其中,
[0043]
21)收集被测深度神经网络模型中的每个神经元在整个训练集上的输出值的最小值和最大值,近似代替每个神经元的输出分布;由于实际应用中的深度神经网络复杂程度高,神经元个数多,训练数据庞大,如果获得每个神经元在全部训练数据上的精确输出分布需要消耗大量的时间与成本。因此,为了使方法具有实用性和可扩展性,本发明使用每个神经元在训练数据集上输出值的最大值和最小值近似表征输出分布;其中,每个神经元在训练数据集上输出值的最大值和最小值将模型划分成主要功能区major和边届功能区corner,如图2所示。
[0044]
22)将得到的每个神经元在整个训练集上的输出值的最小值和最大值所构成的major区域和corner区域再细致划化成这5个区域:下边届区域lower
lower
、主要功能区中靠近下边界的区域main
lower
、主要功能区的中心区域main
main
、主要功能区中靠近上边界的区域main
upper
、上边界区域upper
upper
,如图2所示。
[0045]
23)当给定一个输入时,深度神经网络模型中的每个神经元的输出值可能位于下边届区域lower
lower
,又或者可能位于主要功能区中心区域main
main
;当输入发生改变时,每个区域范围内的神经元也在动态发生变化。本发明分别以这个五个区域为目标区域,每次只在指定目标区域中选择固定数量的神经元作为模糊测试中目标损失函数中所需的神经元,对所有种子输入进行覆盖率引导的模糊测试,来判断选择位于哪个区域的神经元时收获的神经元覆盖率最高(如图3所示,选择位于不同区域的神经元得到的神经元覆盖率有较大的差异,图中region1,region2,region3,region4,region5分别指lower
lower
,main
lower
,main
main
,main
upper
,∪pper
upper
),本发明的目标损失函数如公式(2)所示:
[0046][0047]
其中,l表示输入的原始类标签,li(0≤i≤k)表示预测概率仅仅低于l的前k个类标签之一,最大化目标损失函数的第一部分是为了使测试输入跨越深度神经网络模型的决策边界,使深度神经网络模型产生错误分类;ni表示经过神经元选择策略选出的神经元,最大化目标损失函数的第二部分是为了最大化神经元覆盖率。
[0048]
24)对步骤1)中得到的所有种子输入,重新采用基于区域的神经元选择策略进行模糊测试,即在位于神经元覆盖率表现最好区域的神经元中进一步筛选出测试过程中激活次数最少的神经元作为目标损失函数中所需的神经元(若神经元的输出值大于设定的激活阈值,则该神经元的激活次数加一);然后采用梯度上升方法对目标损失函数进行计算产生扰动信息,将扰动信息加入到种子输入上对其进行突变,生成新的中间测试输入。
[0049]
步骤3):模型错误行为检测:将新生成的中间测试输入作为深度神经网络模型的输入,得到深度神经网络模型返回的关于新生成的中间测试输入的分类标签,如果该分类标签与对应的种子输入的原始标签不一致,则表示新生成的中间测试输入使模型产生错误行为,此时新生成的中间测试输入为对抗性输入;
[0050]
步骤4):计算未检测到深度神经网络模型错误行为的中间测试输入的神经元覆盖率和扰动程度,若神经元覆盖率比对应的种子输入的神经元覆盖率高且扰动程度满足限制要求,则将该中间测试输入加入到种子输入列表中进行进一步突变,继续对深度神经网络模型进行模糊测试;其中,
[0051]
41)计算步骤3)得到的未使深度神经网络模型发生错误行为的中间测试输入的神经元覆盖率,若比对应的种子输入的神经元覆盖率高,则表示该中间测试输入覆盖了深度神经网络模型新的内部状态,对此进行进一步突变可以探索更多深度神经网络模型的内部逻辑;神经元覆盖率的定义为:
[0052][0053]
42)同时要保证该测试输入是一个合法的测试输入,即其与对应的原始种子输入之间的差异需人为不可察觉,因此通过公式(4)的欧式距离来代表对该测试输入的扰动程度,判断两者之间的欧式距离是否小于设定的阈值;
[0054][0055]
其中,x=(x1,x2,

,xn),y=(y1,y2,

,yn);
[0056]
43)若该测试输入满足神经元覆盖率和扰动程度的要求,则将其加入到种子输入列表中进行进一步突变,重复上述的步骤2)、步骤3)、步骤4),对深度神经网络模型继续模糊测试,以最大化神经元覆盖率且能够检测到深度神经网络模型的错误行为。本方法应用在不同的深度神经网络模型时,生成的能够检测到模型错误行为的输入(即对抗性输入)部分示例如图4所示。
[0057]
本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1