CN115757103A - 基于树结构的神经网络测试用例生成方法 - Google Patents

基于树结构的神经网络测试用例生成方法 Download PDF

Info

Publication number
CN115757103A
CN115757103A CN202211370880.2A CN202211370880A CN115757103A CN 115757103 A CN115757103 A CN 115757103A CN 202211370880 A CN202211370880 A CN 202211370880A CN 115757103 A CN115757103 A CN 115757103A
Authority
CN
China
Prior art keywords
neural network
deep neural
tree
layer
tree structure
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
CN202211370880.2A
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.)
Beihang University
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN202211370880.2A priority Critical patent/CN115757103A/zh
Publication of CN115757103A publication Critical patent/CN115757103A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种基于树结构的神经网络测试用例生成方法,用于实现对深度神经网络的白盒测试。本发明方法包括:根据输入样本激活的多层神经元将深度神经网络映射为树结构;设计设计树结构变动的测试指标,衡量输入样本发生变化后对所映射的树结构的影响,用于检测测试样本是否合适;构建最大化深度神经网络预测输出的差异和最大化多层神经元覆盖率指标的联合优化函数,随机生成一组输入样本,使用梯度下降算法迭代求解联合优化函数得到梯度信息,根据梯度信息生成所需的测试用例。本发明方法关注不同层之间神经元的关联关系以及整体模型的结构信息,能生成较少且高质量的测试用例,可覆盖大部分训练集状态并激活额外的神经元结构状态。

Description

基于树结构的神经网络测试用例生成方法
技术领域
本发明面向神经网络白盒测试领域,具体涉及一种基于树结构映射的神经网络测试用例的生成方法。
背景技术
深度学习技术是引领未来发展的主导学科之一,其各相关方向的研究成果已被广泛地应用于国民生活、工业生产、国防建设等各个领域,并取得了许多重大成果。深度学习技术可用于机器的异常检测与故障诊断,在保证机器的质量安全的同时提升自动化程度,也可应用于自然语言处理、计算机视觉领域。伴随着大数据时代的到来,深度学习技术能与传统技术协作,更好地处理大数据,从中提取有价值的信息。但与此同时,深度学习组件的质量问题也愈发引起人们的广泛关注。因此,深度学习中神经网络的质量保障是目前亟待解决的关键问题。
对于深度神经网络而言,必须要像测试传统软件的过程一样,对深度神经网络进行额外的测试构建,验证实际输入是否与设计好的输出一致,从而验证深度神经网络的正确性、安全性、完整性和质量的可靠性、鲁棒性。但是对于某些领域的深度神经网络而言,它们的样本空间属于无穷大的,对于收集全部的测试用例从而构建测试不太现实,因此针对以上的问题,需要构建一种更加完善可靠的方案对深度神经网络测试从而提升安全性和鲁棒性。
目前,针对深度学习组件的测试技术可以大致分成两大类,第一类方法将深度学习组件完全视为传统软件,利用传统软件黑盒测试方法对其进行测试。例如,根据输入合法区域,采取等价类划分等黑盒测试方法产生用例等。这类方法能基于输入输出规范找到部分异常用例,检测深度学习组件的基础功能。但该类方法未充分考虑到深度学习技术的数据驱动特性,基于此类方法生成的用例数量及测试场景覆盖均不充足,在此基础上计算模型的评价指标置信度较低,且难以实现大规模的自动化。传统的方法和测试工具不能满足测试这些系统的需要,单纯将传统软件系统的测试方法向深度学习系统移植,忽视了深度学习技术的智能性,可能会起到相反的效果。另一类是以白盒测试中通过分析程序的内部逻辑结构从而设计测试用例的方法,如图1中左侧的示例。研究DNN(深度神经网络)系统内神经元的激活值分布,对于发现DNN系统的边界行为具有重要作用。受传统测试覆盖思想的启发,他们通过统计和追踪神经元激活值的分布、或相邻层神经元之间激活值的变化关系,提出了基于神经元激活值的结构化测试覆盖指标,以此定义测试输入对于DNN系统的覆盖率,并提出了基于覆盖引导的测试输入生成方法。
但是基于白盒测试指导的深度神经网络测试方法,很多研究出发点都是对神经元能否激活或者激活值能否被覆盖出发,然后与其被测试的深度神经网络对应部分的测试单元总数相比作为白盒测试方法的覆盖率指标。因此基于白盒的覆盖率指标的设计方式都是以有限神经元是否被激活或者输出值作为统计标准,并没有充分考虑深度神经网络多层神经元之间的关联,也没有考虑模型整体结构相关信息。
发明内容
由于深度神经网络模型的特点,拥有强大的表达能力的同时也存在一定的不可靠性,近年来借助传统软件测试的思想,研究人员希望能够提出一套对深度神经网络进行更加全面的测试方法,但是现有的方法都是针对某些神经元的输出值和是否被激活的信息,没有关注不同层之间神经元的关联关系以及整体模型的结构信息。因此,基于现有问题和需求,本发明提出一种基于树结构的神经网络测试用例生成方法。
本发明的基于树结构的神经网络测试用例生成方法,包括:
(1)将深度神经网络映射为树结构;
映射方法为:输入一个样本到深度神经网络,记录该样本输入网络后每一层被激活的神经元,将输出层值最大的神经元作为树结构的根节点,然后将每一层激活的神经元连接到上一层树结构的第一个节点上,连接完成后得到在该输入样本下该深度神经网络映射的树结构;
(2)设计设计树结构变动的测试指标,衡量输入样本发生变化后对所映射的树结构的影响程度;
所述树结构变动指标定义为:两不同样本分别输入深度神经网络映射得到两个树结构,计算两树的编辑距离与深度神经网络中所有神经元节点数量的比值,作为树结构变动指标;
(3)利用多层(Multi-layer)测试用例生成方法生成深度神经网络的测试用例;
所述Multi-layer测试用例生成方法为:构建最大化深度神经网络预测输出的差异和最大化Multi-Layer神经元覆盖率指标的联合优化函数,随机生成一组输入样本,使用梯度下降算法迭代求解联合优化函数得到梯度信息,根据梯度信息生成所需的测试用例。
所述Multi-Layer神经元覆盖率指标是指:对于一组测试用例,输入深度神经网络,计算在每层神经元激活状态数占该层神经元激活状态的全部可能状态数的比例,将对所有层计算出的比例加权求和,作为该组测试用例的Multi-Layer神经元覆盖率。
所述联合优化函数构建方式是:构建最大化深度神经网络预测输出差异的损失函数obj1,构建用于最大化Multi-Layer神经元覆盖率指标的损失函数obj2,构建联合优化函数
objjoint=obj1+obj2
所述生成的新的测试用例,计算与对应输入样本的输入树之间的树结构变动指标,判断是否位于该样本对应的翻转树与输入树的树结构变动指标内,若是保留新的测试用例,否则丢弃新的测试用例。
相对于现有的技术,本发明方法的优点和积极效果在于:
(1)本发明方法通过生成较少高质量的测试用例集合,对深度神经网络不同激活神经元结构进行测试,覆盖大部分训练集状态并激活额外的神经元结构状态,使用测试指标衡量测试用例集合质量和覆盖率情况,经过试验证明,通过本发明方法生成的测试用例集在三个模型综合64.4%的覆盖率,相比训练集提升6.2%覆盖率,覆盖训练集89%状态空间,额外激活34%状态空间。
(2)本发明方法将深度神经网络映射为树结构,使用相关的树结构距离算法衡量两个测试样本所映射树结构的距离,进而将深度神经网络内部节点变动情况进行量化,从白盒角度完善了测试方法。
(3)本发明方法提出了基于神经网络结构的Multi-Layer测试用例生成方法,能够生成高质量的Multi-Layer测试用例。该测试用例生成方法将生成目标测试用例问题转为一个联合优化问题,通过实现最大化目标神经网络预测输出的差异和最大化Multi-Layer神经元覆盖率指标的目的,构建联合优化函数,使用梯度下降算法迭代求解得到梯度信息,根据梯度信息生成所需的测试用例。利用本发明方法能生成较少高质量的测试用例集合,对深度神经网络不同激活神经元结构进行测试,可覆盖大部分训练集状态并激活额外的神经元结构状态。
(4)本发明方法提出了基于神经网络结构的Multi-Layer测试指标,该测试指标能够从模型结构的角度对模型的状态进行评价,将模型全部层的激活神经元分布考虑在内,从结构层面验证测试用例集对于模型状态的覆盖率,从而验证测试的充分性程度。
附图说明
图1是神经网络的传统白盒测试用例生成示例和本发明方法的测试用例生成示例;
图2是本发明实施例中层神经元被激活状态的示例图;
图3是本发明实施例进行树编辑距离计算的一个示例图;
图4是本发明方法中三种树之间的编辑距离定义示意图;
图5是本发明实施例中模型在样本9的激活分布图;
图6是本发明实施例中模型在样本6的激活分布图;
图7是本发明实施例中样例样本之间的树编辑距离示意图;
图8是本发明的Multi-layer深度神经网络测试用例生成方法流程图;
图9是采用本发明方法生成测试用例集状态覆盖指标结果图;
图10是采用本发明方法生成的测试用例集新激活状态指标结果图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明提出了一种基于树结构的神经网络测试用例生成方法,针对神经网络内部结构特性,将神经网络节点映射为树节点,将神经网络内部神经元节点之间的关系映射为树分支,抽象神经网络的树结构;针对不同类别的神经网络测试数据集输出之间的差异,设计了一种针对神经网络内部神经元整体结构信息的Multi-Layer测试指标,将生成目标测试用例问题转为一个联合优化问题,实现最大化目标神经网络预测输出的差异和最大化Multi-Layer(多层)神经元覆盖率指标的目的;然后对构建的联合优化函数,使用梯度下降算法迭代求解得到梯度信息,根据梯度信息生成所需的测试用例。最后,将本发明方法应用于神经网络功能测试系统中,基于应用场景应用于实际案例中,进行可行性验证。如图1的右侧所示,为采用本发明方法生成的测试用例示例。
本发明实施例实现的一种基于树结构映射的神经网络测试用例生成的方法,提出了基于神经元网络结构的测试指标及评价方法,Multi-Layer深度神经网络测试用例生成方法及评价,最后实现了深度神经网络自动化测试系统,具体实施包括如下三部分。
第一部分,将神经网络内部结构抽象为树结构。
首先说明深度神经网络映射树结构方法的实现,该方法的思路为:首先将样本数据seed输入深度神经网络后,记录这个样本输入模型后每一层被激活的神经元,之后将该模型输出层值最大的神经元作为树结构数据的根节点,然后将每一层激活的神经元连接到上一层树结构数据的第一个节点上,只连接到第一个节点的原因是为了避免计算的复杂度过高,因为某些层的神经元数量是一个特别大的数量,尤其是更加复杂的深度网络模型。连接完成之后,即可得到在一个输入样本下该深度神经网络映射的树结构数据,得到树结构数据之后,可以使用多叉树编辑距离算法(APTED)衡量两个树之间的编辑距离。如图2所示,为一个样本输入神经网络后各层节点激活状态的示例,其中灰色节点代表被激活,然后按照上述方法可以将激活神经元之间的位置关系抽象为一个多叉树。
深度神经网络模型比较偏向黑盒方法,因其内部计算复杂度比较高,整体模型的优劣只有通过数据集中的测试集才能验证好坏,本发明通过将深度神经网络每一层不同结构抽象成为神经元单位,由此将每层神经元单位映射为多叉树的每层节点,通过这样的构建方式,把深度神经网络模型变成可观测的状态。
从深度神经网络的角度来说,输出为相同值的神经网络内部中激活的神经元分布在统计上应该是具有相似性的,输出为不同值的神经网络内部中激活的神经元在统计上应该是有较大差异性。从聚类的角度来说,输出一致的神经网络可以通过树编辑距离算法聚成一类。因此本发明针对这个推论提出树结构集合距离(Tree Structure Set Distance)的定义,如下:
将数据集按照标签(label)分类,分别输入神经网络,能够得到不同标签下的神经网络激活节点的树结构数据,例如将标签为x的一个样本数据输入神经网络得到的多叉树数据定义为tx,由标签为x的数据集输入神经网络获得的树结构集合为σlebel=x(x)。
对于同组内的树结构数据tx∈σlebel=x(x)的内部距离(Tree Structure SetInternal Distance,TSSID),计算为:
Figure BDA0003925456790000051
其中,σlebel=x(x)表示输入DNN的样本标签和DNN的输出均为x的树结构集合,其中共包含n个树结构数据,对应有n个输入样本;APTED表示树编辑距离算法,DNN表示被测试的神经网络,Tree表示神经网络映射的树结构算法;xi、xj分别表示标签为x的数据集中第i个和第j个样本,Tree(DNN(xi))、Tree(DNN(xj))分别表示将第i个和第j个样本输入被测深度神经网络映射得到的树结构。公式(1)中对n个数据采用双循环计算方式,第一个循环是i由第一个树结构到第n个树结构,第二个循环是j从i+1个树结构到第n个树结构,即j=i+1,这样就得到同组内的树结构的内部距离。
对于不同组的树结构数据tx和ty,分别属于不同的集合,对于ty∈σlebel=y(y),两组树结构数据tx,ty的外部距离(Tree Structure Set Outer Distance,TSSOD)计算为:
Figure BDA0003925456790000052
其中,x和y分别代表不同标签,集合σlebel=y(y)表示输入DNN的样本标签和DNN的输出均为y的树结构集合,该集合中共有m个树结构数据,对应有m个输入样本;yj表示标签为y的数据集中第j个样本。
树的编辑距离定义为有序标记树之间将一棵树转换为另一棵树的节点编辑操作的最小成本序列,它可以用来衡量树的结构数据的相似性。本发明实施例的树编辑距离算法APTED通过构建以下三个关于标记有序树的编辑操作,来计算两颗树之间的距离:
(1)删除节点:删除节点并将该节点的子节点连接到该节点维度顺序的父节点;
(2)插入节点:在现有节点和该节点的连续子节点之间插入一个新的节点;
(3)转换节点:重命名节点的标签来变更节点。节点的标签在生成树结构的时候附加上,用于标识节点,每个节点的标签唯一,本发明实施例中节点标签设定为对应所属神经网络层名称+位于神经网络层的神经元编号。
首先,利用单路径函数根据所选择的路径计算两个相关子树之间的树编辑距离。对于给定两棵树F和G,单路径函数计算以所选的路径为根的F的每个子树与G的所有子树之间的距离,储存在矩阵中以供后续使用。然后,分两步计算两棵树之间的距离,先选中其中一个路径,计算关于相关子树之间的距离,再自下而上的计算F和G之间的距离,计算F相关的子层和G对应子层之间的距离。
如图3所示,计算两树的编辑距离,左侧树通过执行上面两个编辑操作转换为右侧树,因此树编辑距离为2。
第二部分,将深度神经网络的树结构进行变异,计算树结构变动指标。
本发明定义了树结构变动(Tree Structure Change,TSC)指标,用于衡量在不同规模的树结构下结构发生变化的百分比指标。对于同一个神经网络而言,计算神经网络激活的节点数量百分比,不同的输入经过神经网络后树结构发生异变的百分比也不一样。
设样本xp输入神经网络后映射得到树结构数据tx∈σlebel=x(x),将样本xp经变异算法改变后得到样本yv,样本yv输入神经网络后映射得到树结构数据ty,则定义此次由样本xp变异导致的树结构变动指标TSCT(tx,ty)计算如下:
Figure BDA0003925456790000061
其中,Num表示神经网络中所有神经元节点总数量。
因此通过TSCT(tx,ty)指标,可以衡量在同一神经网络模型下,不同输入映射为树结构之后的结构变动百分比指标,从而能够衡量输入发生变化后对于树结构的影响程度。
从抽象出来的树结构来看,定义翻转树为将输入样本映射的神经网络树中激活的节点变为不激活状态,未激活节点变为激活状态;如图4所示,对于一个输入树进行变异,最大的变异距离就是输入树本身和翻转树之间的距离,所以定义变异树为在输入树和翻转树之间的树结构,变异树可通过对输入样本变异输入神经网络后映射得到。
本发明定义以下三个编辑距离,如图4所示:输入树与翻转树的距离DistanceMax,输入树与变异树的距离DistanceIM,以及翻转树和变异树的距离DistanceTM。其中DitanceMax定义为输入树和翻转树的APTED距离,DistanceIM定义为输入树和变异树的APTED距离,DistanceTM定义为翻转树和变异树的APTED距离。从树结构构建上来看输入树和翻转树的APTED距离也是理论上树结构发生变异的最大距离,通过实验,本发明也验证了DitanceMax的距离是严格大于DistanceIM和DistanceTM的,变异树的结构发生变化时将会落在DitanceMax的范围之内,通过DistanceIM和DistanceTM也能够衡量变异树的结构异动情况。
图5为MNIST数据集样本9输入LeNet-1模型的情况下的激活神经元分布图,其中神经元的分布层为卷积层、池化层、卷积层、池化层、全连接层以及最后的预测层,总共52个神经元,左上角为样本的具体样本9展示,第一层block1_conv1中2个神经元激活,第二层block1_pool1全部4个神经元激活,第三层block2_conv1有2个神经元激活,第四层block2_pool1总共8个神经元激活,第五层before_softmax总共8个神经元激活,最后预测层则是神经元9激活,和样本标签值保持一致。图5和图6中黑色神经元表示被激活,灰色神经元表示未激活。
图6为MNIST数据集样本6输入LeNet-1模型的情况下的激活神经元分布图,其中神经元的分布层为卷积层、池化层、卷积层、池化层、全连接层以及最后的预测层,总共52个神经元,左上角为样本的具体图片6展示,第一层block1_conv1中2个神经元激活,第二层block1_pool1全部3个神经元激活,第三层block2_conv1有1个神经元激活,第四层block2_pool1总共6个神经元激活,第五层before_softmax总共7个神经元激活,最后预测层则是神经元6激活,和样本标签值保持一致。
下面再随机挑选两个标签值为9和6的样本,使用APTED树编辑距离算法计算4个样本所映射的树结构之间的编辑距离,从图7中可以看到样本1和样本2都是数字9,样本之间的树编辑距离为6,TSC指标为11.5%;样本3和样本4为数字6,样本之间的编辑距离为5,TSC指标为9.6%。样本1和样本3、样本4的编辑距离分别为10和14,TSC指标分别为19.2%和26.9%;样本2和样本3、样本4的编辑距离分别为10和6,TSC指标分别为19.2%和11.5%。
第三部分,测试用例生成。
参照软件白盒测试的思想,测试人员需要充分了解程序的运行状态和逻辑代码,从而设计专门的测试用例来验证软件代码的正确性。将传统软件白盒测试思路用于测试深度神经网络时,在设计和选择新的测试用例时,也需要充分了解深度神经网络的运行状态和内部结构,因此本发明将神经网络映射为树结构,通过树结构衡量神经网络在不同输入下的变化情况。
本部分设计并实现了Multi-layer(多层)测试用例生成方法,该方法在生成Multi-Layer测试用例时需要满足两个目标:(1)能够让深度神经网络原始输出发生变化,(2)能够提升Multi-Layer神经元覆盖率。将两个目标建立在一起构建联合优化函数,通过梯度下降求解联合优化函数的最优解,最后得到所需的Multi-Layer测试用例。此外该方法设计实现了多模型联合测试模式框架和单模型测试模式框架两种模式,分别应对不同情况下的多个相同功能模型和单个模型的测试场景。
本发明从深度神经网络的整体神经元结构出发,构建了三种覆盖率指标用于衡量整体神经元的覆盖率情况:
(1)Multi-Layer神经元测试覆盖指标,是构建在整个深度神经网络结构之上的测试指标,具体描述为:对于一组测试用例T,计算这组测试用例对于深度神经网络每一层的层神经元激活状态(LAS),然后将每一层的LAS值与每一层的层神经元激活状态的全部可能状态的比值乘上层数权重,将最后的加权求和值作为Multi-Layer神经元覆盖率。每一层的神经元激活状态的全部可能状态定义为:层节点数量加1。
Multi-Layer神经元覆盖测试指标MLNC的具体定义为:
Figure BDA0003925456790000081
其中,DNN为被测深度神经网络模型,n为模型DNN的层数,DNNl是DNN的第l层,LAS(DNNl)是位于DNNl层的神经元激活状态,Nums(DNNl)是DNNl层的神经元节点数量,所加的数字1代表没神经元激活的情况。公式(4)中每层设置的权重为1/n。
(2)第二个测试覆盖指标是从训练集和测试集的角度出发,计算构建的测试用例所覆盖的层神经元激活状态占训练集样本的层神经元激活状态的百分比。区别于构建的MLNC测试指标在于:MLNC测试指标是从整体的神经网络模型结构出发,构建理论上可能出现的结构状态,但是对于神经网络而言,某些状态出现的概率在这个类样本空间上基本为0,因此通过训练集所收集到的层结构状态可以认为是该模型在这个样本空间下所出现的基本可能的状态。定义测试集占训练集的多层神经元结构覆盖率(Test in Train Multi-Layer Neuron Coverage)测试指标TTMLNC为:
Figure BDA0003925456790000082
其中,LASTest(DNNl)表示在构建的测试集上DNN的第l层的层神经元激活状态数量,LASTrain(DNNl)表示在训练集上DNN的第l层的层神经元激活状态数量。
(3)此外还可以衡量在测试集中新激活的状态占训练集状态的百分比,定义测试新状态多层神经元结构覆盖率(Test in New Multi-Layer Neuron Coverage)测试指标TNMLNC为:
Figure BDA0003925456790000083
通过TNMLNC测试指标,可以衡量新构建的测试用例集合激活多少百分比的以前神经网络模型没有激活过的结构状态,这是训练集中没有产生过的状态,但是按照深度神经网络测试用例生成方法,可以覆盖到这些没有在训练集中出现的但是应该被覆盖的状态,从而构建整体深度神经网络白盒测试流程的充分性。
在模型的最后一层会得到每种输出的置信度,取置信度最高的前k个数,对于置信度最高的输出,一般为模型的预测值,因此通过让所取第2到k个输出的置信度变大,最大的输出值变小,直到某个所取输出的置信度超过原最大输出的置信度,那么模型的预测将会发生错误。通过损失函数以及梯度下降算法可以达成这样的设计方式,对模型预测输出进行扰动,以达到最大化目标神经网络预测输出的差异的目的。
具体操作为:设测试样本seed的原始标签值为类别c,将测试样本seed输入测试神经网络模型后,让该模型输出类别c下的置信度与其他类别下的置信度求和之间的差异尽可能大,通过梯度下降调整预测值,假如超过类别c的置信度那么可以认为被测模型发生错误。
深度神经网络最后一层(Prediction层)的每个节点对应一个类别,节点的输出值是样本属于该类别的置信度值,样本seed输入深度神经网络后,取输出值最大的前k个节点,标记最大置信度的节点为Nc,AP(Nc)为节点Nc的输出值,标记第2至k个节点为Ni,i=2,3,…k,AP(Ni)为神经元节点Ni的激活函数(Activate Function)的输出值,通过设置一个超参数w1控制扰动模型输出预测的程度,构建一个关于最大化目标神经网络预测输出的差异的损失函数obj1,如下:
Figure BDA0003925456790000091
通过控制超参数w1的大小,可以控制最大化目标深度神经网络预测输出的差异的比例程度。
生成的测试用例需要能够激活更多不同的神经网络抽象出来的树结构,激活越多不同的树结构代表能够运行覆盖更多的神经网络逻辑分支,所以这个过程的目的在于最大化的提升定义的Multi-layer神经元覆盖率,Multi-layer神经元覆盖率指标提升了,说明神经网络每层的神经元状态取得了新的情况。从树结构上来看,通过对树映射到神经网络的神经元节点调整变化,能够得到更多不一样的树结构,这意味着更多的逻辑状态能够被测试到。
定义AL(Ni)为神经网络的第L层的第i个神经元的激活函数的输出值,通过遍历神经网络每一层中每一个节点,得到已经激活的神经元集合(Activate Neuron Set,ANS)和未激活的神经元集合(Unactivate Neuron Set,UNS),通过构建损失函数,使得神经网络对于输入样本seed而言,已经激活的神经元集合ANS能够变成不激活状态,未激活的神经元集合UNS能够变成激活状态,通过构建如下损失函数obj2,使得神经元抽象出来的树结构能够向翻转树方向变化:
Figure BDA0003925456790000092
其中,n表示深度神经网络的层数,aL表示深度神经网络第L层神经元的数量;a和b为预先设定的激活神经元集合和未激活神经元集合的重要性指标,可按照所需程度进行调整;w2是指定损失函数obj2带来权重比例,可以通过控制w2的大小调整obj2的重要性程度。
从深度神经网络映射树结构数据来看,obj1目的在于改变树结构的根节点,让根节点与其他根节点置信度差异最大化,obj2目的在于改变根节点下层的内部树结构节点,使之能够激活更不一样的逻辑结构,两者体现在树结构层面上是相辅相成的,从根部和内部一起调整深度神经网络映射的树结构,从设计上而言是互相辅助作用的。
因此联合优化函数objjoint完整定义为:
objjoint= obj1+obj2 (9)
如图8所示,本发明实施例生成测试用例的过程为:通过在测试集数据中随机采样原始输入样本t1,t2,…tN,输入测试的深度神经网络DNN中,获得对应神经网络内部神经元激活状态的网络DNN1,DNN2,…DNNN,对应也映射得到不同树结构,为了达到最大化预测差异和多层神经元覆盖率的目的,建立由梯度指导变异的联合优化框架,如上述公式(4)~(6)所示,对输入样本进行变异,获得在领域特定约束下的差异诱导的输入样本t 1,t 2,…t N。领域特定约束指的是:对于输入的样本而言,需要对样本的输入领域信息进行约束,从而得到符合该样本的真实情况的数据分布,所以对输入的梯度信息进行约束。
单模型测试模式采用前后对比模型输出的想法,通过比较该模型对于原先的种子样本和变异样本之间的是否识别一致,假如识别不一致的话,那么该变异样本就是该模型的决策失误样本,该模型则认为产生了一次错判。
对于模型测试框架,本发明实施例构建了把全部训练集输入深度神经网络的测试流程,通过记录训练集在神经网络上的状态,使用神经网络映射树结构的算法,可以得到训练集对于深度神经网络的相关的覆盖率指标,衡量不同测试用例对深度神经网络结构上的变动影响。对于生成的测试用例,本发明可通过判断相比输入样本,变异的测试用例树结构变动指标是否在输入样本的对应翻转树的树结构变动指标内,如果生成的测试用例在当前模型下的变异树距离不在相应的输入树和翻转树之间,则应该舍弃该测试用例。利用树结构变动指标来判断新测试用例是否可用,也即可直接利用树编辑距离来判断新测试用例是否可用。
对于每一个生成的测试用例,通过神经网络映射树结构算法,得到生成的测试用例在当前神经网络模型下的激活神经元树结构,也即变异树结构。通过计算该测试用例的变异树与输入样本的输入树之间的距离DistanceIM,判断该距离是否在输入树和翻转树之间来判断是否应该保留该测试用例,如果
Distance MAX> DistanceIM+ DistanceTM (10)
就说明对于这个生成的测试用例,是在变异范围之内的,可以保留下这个测试用例,反之,说明该测试用例并不在合理的生成范围内,舍弃这个测试用例。
基于本发明方法,本发明可以搭建Multi-Layer深度神经网络测试框架系统,采用Web服务的架构方式,用户提供测试的深度神经网络模型和测试基准数据集之后,即可生成对应的对抗样本和Multi-Layer测试用例集,并且还可以设计多模型联合框架测试模式框架和单模型测试模式框架,方便用户按照个人需求进行测试任务。该框架系统上具体可以设置上传测试模型模块、模型可视化模块、评价测试指标模块、集成对抗攻击模块等等功能模块。
本发明通过生成较少高质量的测试用例集合,对深度神经网络不同激活神经元结构进行测试,覆盖大部分训练集状态并激活额外的神经元结构状态,使用测试指标衡量测试用例集合质量和覆盖率情况。对本发明方法在三个深度神经网络模型生成测试用例,如图9所示,本发明方法生成的测试用例集在三个深度神经网络模型具有综合64.4%的覆盖率,相比训练集提升6.2%覆盖率,覆盖训练集89%状态空间,如图9所示,额外激活34%状态空间,如图10所示。图9和图10中,横坐标均表示生成测试用例数据集的大小,图9的纵坐标是覆盖原有数据集激活状态的占比TTMLNC,图10的纵坐标是新激活状态的占比TNMLNC。

Claims (6)

1.一种基于树结构的神经网络测试用例生成方法,其特征在于,包括如下步骤:
步骤1,将深度神经网络映射为树结构,映射方法如下:
输入一个样本到深度神经网络,记录该样本输入网络后每一层被激活的神经元,将输出层值最大的神经元作为树结构的根节点,然后将每一层激活的神经元连接到上一层树结构的第一个节点上,连接完成后得到在该输入样本下该深度神经网络映射的树结构;
步骤2:设计树结构变动指标,衡量输入样本发生变化后对所映射的树结构的影响程度;
所述树结构变动指标定义为:两不同样本分别输入深度神经网络映射得到两个树结构,计算两树的编辑距离与深度神经网络中所有神经元节点数量的比值,作为树结构变动指标;
步骤3:利用Multi-layer测试用例生成方法生成深度神经网络的测试用例;Multi-layer表示多层;
所述Multi-layer测试用例生成方法为:构建最大化深度神经网络预测输出的差异和最大化Multi-Layer神经元覆盖率指标的联合优化函数,随机生成一组输入样本,使用梯度下降算法迭代求解联合优化函数得到梯度信息,根据梯度信息生成新的测试用例;
其中,所述Multi-Layer神经元覆盖率指标是指:对于一组测试用例,输入深度神经网络,计算在每层神经元激活状态数占该层神经元激活状态的全部可能状态数的比例,将对所有层计算出的比例加权求和,作为该组测试用例的Multi-Layer神经元覆盖率;
所述生成的新的测试用例,计算与对应输入样本的输入树之间的树结构变动指标,判断是否位于该样本对应的翻转树与输入树的树结构变动指标内,若是保留新的测试用例,否则丢弃新的测试用例;
所述联合优化函数构建方式是:构建最大化深度神经网络预测输出差异的损失函数obj1,构建用于最大化Multi-Layer神经元覆盖率指标的损失函数obj2,构建联合优化函数objjoint=obj1+obj2
2.根据权利要求1所述的方法,其特征在于,所述的步骤2中,树结构变动指标计算如下:设样本xp输入深度神经网络后映射得到树结构tx,将样本xp经变异算法改变后得到样本yv,样本yv输入深度神经网络后映射得到树结构ty,则此次树结构变动指标TSCT(tx,ty)计算如下:
Figure FDA0003925456780000011
其中,Num表示深度神经网络中所有神经元节点总数量;DNN表示深度神经网络,Tree表示深度神经网络映射为树结构的算法,APTED表示树编辑距离算法。
3.根据权利要求1所述的方法,其特征在于,所述的步骤3中,设将某一样本输入深度神经网络后,在深度神经网络的最后一层上取置信度最大的前k个节点,标记其中最大置信度的节点为Nc,第2至k个节点为Ni,i=2,3,…k;构建最大化深度神经网络预测输出的差异的损失函数obj1如下:
Figure FDA0003925456780000021
其中,AP(Ni)为节点Ni的激活函数的输出值,AP(Nc)为节点Nc的激活函数的输出值;w1是设置的超参数,通过控制w1的大小控制最大化深度神经网络预测输出的差异的比例程度。
4.根据权利要求1或3所述的方法,其特征在于,所述的步骤3中,设深度神经网络共有n层,其中第L层的第i个神经元的激活函数的输出值表示为AL(Ni),通过遍历深度神经网络每一层中每一个节点,得到已经激活的神经元集合ANS和未激活的神经元集合UNS;构建如下最大化Multi-Layer神经元覆盖率指标的损失函数obj2
Figure FDA0003925456780000022
其中,aL表示深度神经网络第L层神经元的数量;a和b为预先设定的激活神经元集合和未激活神经元集合的重要性指标;w2是权重比例,通过控制w2的大小调整obj2的重要性程度,改变深度神经网络映射的树结构。
5.根据权利要求4所述的方法,其特征在于,所述的方法设置了如下两个测试指标,用于评估所生成的测试用例集的性能;
(1)测试占训练的多层神经元结构覆盖率测试指标TTMLNC,计算如下:
Figure FDA0003925456780000023
其中,LASTest(DNNl)表示在构建的测试用例集上被测深度神经网络DNN的第l层神经元激活状态数量,LASTrain(DNNl)表示在输入的训练集上DNN的第l层神经元激活状态数量;
(2)测试新状态多层神经元结构覆盖率测试指标TNMLNC,计算如下:
Figure FDA0003925456780000024
其中,n为深度神经网络的层数。
6.根据权利要求1所述的方法,其特征在于,所述的步骤3中,标记输入样本输入深度神经网络映射得到输入树,将输入树中激活和未激活的节点状态反转得到翻转树,由输入样本根据梯度信息生成的新测试用例输入深度神经网络映射得到变异树,计算变异树与输入树的编辑距离DistanceIM,变异树与翻转树的编辑距离DistanceTM,输入树与翻转树的编辑距离Distance MAX,若Distance MAX>DistanceIM+DistanceTM,则表示新测试用例在变异范围之内,保留该测试用例,否则,舍弃该测试用例。
CN202211370880.2A 2022-11-03 2022-11-03 基于树结构的神经网络测试用例生成方法 Pending CN115757103A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211370880.2A CN115757103A (zh) 2022-11-03 2022-11-03 基于树结构的神经网络测试用例生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211370880.2A CN115757103A (zh) 2022-11-03 2022-11-03 基于树结构的神经网络测试用例生成方法

Publications (1)

Publication Number Publication Date
CN115757103A true CN115757103A (zh) 2023-03-07

Family

ID=85357712

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211370880.2A Pending CN115757103A (zh) 2022-11-03 2022-11-03 基于树结构的神经网络测试用例生成方法

Country Status (1)

Country Link
CN (1) CN115757103A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116150038A (zh) * 2023-04-19 2023-05-23 南京理工大学 基于神经元敏感性的白盒测试样本生成方法
CN116361190A (zh) * 2023-04-17 2023-06-30 南京航空航天大学 一种基于神经元相关性指导的深度学习变异测试方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116361190A (zh) * 2023-04-17 2023-06-30 南京航空航天大学 一种基于神经元相关性指导的深度学习变异测试方法
CN116361190B (zh) * 2023-04-17 2023-12-05 南京航空航天大学 一种基于神经元相关性指导的深度学习变异测试方法
CN116150038A (zh) * 2023-04-19 2023-05-23 南京理工大学 基于神经元敏感性的白盒测试样本生成方法

Similar Documents

Publication Publication Date Title
CN115757103A (zh) 基于树结构的神经网络测试用例生成方法
CN111079836B (zh) 基于伪标签方法和弱监督学习的过程数据故障分类方法
CN105572572B (zh) 基于wknn-lssvm的模拟电路故障诊断方法
CN111368690A (zh) 基于深度学习的海浪影响下视频图像船只检测方法及系统
CN114509266B (zh) 一种基于故障特征融合的轴承健康监测方法
CN111046961B (zh) 基于双向长短时记忆单元和胶囊网络的故障分类方法
CN112756759B (zh) 点焊机器人工作站故障判定方法
CN109919236A (zh) 一种基于标签相关性的bp神经网络多标签分类方法
CN117034143B (zh) 一种基于机器学习的分布式系统故障诊断方法及装置
CN110072205A (zh) 一种用于无线传感网异常数据检测的分层聚合方法
CN116186633A (zh) 一种基于小样本学习的用电异常诊断方法和系统
CN116842459B (zh) 一种基于小样本学习的电能计量故障诊断方法及诊断终端
CN114897085A (zh) 一种基于封闭子图链路预测的聚类方法及计算机设备
CN113343123B (zh) 一种生成对抗多关系图网络的训练方法和检测方法
CN110717602A (zh) 一种基于噪音数据的机器学习模型鲁棒性评估方法
CN112926016A (zh) 一种多变量时间序列变化点检测方法
CN114757097B (zh) 一种线路故障诊断方法及装置
CN116109039A (zh) 一种数据驱动异常检测与预警系统
CN115618506A (zh) 一种单轴联合循环燃气轮机功率的预测方法
CN111881040A (zh) 一种基于循环神经网络的抽象状态模型的测试数据生成方法
CN115034307A (zh) 多参量自适应融合的振动数据自确认方法、系统及终端
Shi et al. Recognizing the take-off action pattern of basketball players based on fuzzy neural network system
Zhao et al. A new multilabel recognition framework for transmission lines bolt defects based on the combination of semantic knowledge and structural knowledge
Şimşek et al. A Study on Deep Learning Methods in the Concept of Digital Industry 4.0
CN117312809B (zh) 一种基于知识图谱的软件缺陷预测方法及系统

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