本发明涉及深度学习测试的技术领域,特别涉及一种基于神经元输出行为模式的深度神经网络测试用例优先级排序方法。
背景技术:
深度学习是机器学习中的一种对数据进行表征学习的方法,它通过多层非线性处理单元的级联来进行特征的提取和数据的转换。深度学习自2016年被正式提出,使得人工智能产生了革命性的突破。随着alphago的出现,深度学习开始被广泛的应用到各个领域,甚至是一些安全攸关的领域,例如:自动驾驶,医疗诊断,身份识别等。因此,深度学习系统中可能存在的质量问题会带来巨大的损失。
以深度学习为核心的系统具有高维输入、多隐藏层、低维输出的特点,这些导致深度学习系统与传统软件系统大为不同,传统软件测试技术也无法在深度学习中应用。基于深度神经网络的模型还具有应用多样性,使用场景复杂及数据量大的特性,使得在对这类系统进行测试时面临很多挑战,例如:合适且高效的测试方法少,测试数据不足以及测试数据的质量不敢等等。
目前深度学习系统很难通过常规的训练达到100%的准确率,面向深度神经网络的测试也仍然处于早期阶段。由于深度神经网络与传统的软件不同,一些已经比较成熟的传统软件测试技术将无法直接应用到深度学习系统的测试中,例如:如何用覆盖率引导测试,测试用例的选择,测试用例的优先级等等。
而在测试系统的过程中测试用例的优先级是一个关键的核心。对于同一个测试用例集来说,不同的排序将会对测试的效率起到很大的影响。一个好的测试用例排序可以让测试者在尽可能短的时间内找到系统中隐藏的缺陷。
技术实现要素:
发明目的:为了克服现有技术中存在的不足,本发明提供一种基于神经元输出行为模式的深度学习测试用例的选择方法,解决对深度神经网络进行测试时,通过对测试用例进行排序,尽早从中找到对抗样本。所以如何确定对抗样本的神经元行为模式是后期对测试用例进行优先级排序的重点问题。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于神经元输出行为模式的深度学习测试用例的选择方法,1)用几种对抗样本生成技术分别生成少量对抗样本。通过对少量对抗样本分析,总结出对抗样本神经元输出的行为模式2)根据提取的对抗样本的神经元行为模式对测试用例进行优先级排序,以便能尽早的在大批测试用例中找到对抗样本。具体包括以下步骤:
步骤1,通过提取对抗样本在模型中神经元状态,分析出不同对抗样本的神经元输出行为,找到输出行为的分布规律,总结出对抗样本的神经元输出行为的行为模式;
步骤1.1,提取测试用例的神经元状态;在深度神经网络中,输入测试用例后,神经元将会以实数值的形式将测试用例向后传播,每个神经元都对应一个实数值;设置激活函数的阈值,将实数值转化为判断是否激活的布尔值;获取每个神经元的输出布尔值作为神经元输出;将所有神经元输出组成一个高维向量,表示此测试用例下的神经元输出的行为;
步骤1.2,通过两种以上的对抗样本生成技术分别生成对抗样本;在深度神经网络中,输入生成的对抗样本,神经元将会以实数值的形式将生成的对抗样本向后传播,每个神经元都对应一个实数值;设置激活函数的阈值,将实数值转化为判断是否激活的布尔值;获取每个神经元的输出布尔值作为神经元输出;将所有神经元输出组成一个高维向量,表示此对抗样本下的神经元输出的行为;提取对抗样本下的神经元输出的行为构成对抗样本集;分析对抗样本集的神经元输出行为的分布规律,总结出对抗样本的神经元输出行为模式;
步骤2,根据总结的对抗样本的神经元输出行为模式对测试用例进行优先级排序;
步骤2.1,提取测试用例集中每一条测试用例的神经元输出行为,与步骤1得到的对抗样本的神经元输出行为模式进行对比,计算出每一条测试用例神经元输出行为与对抗样本的神经元输出行为模式的距离;
步骤2.2,利用步骤2.1中计算的每一条测试用例的神经元输出行为与对抗样本的神经元输出行为模式的距离对测试用例集进行优先级排序。
优选的:步骤1.1中深度神经网络的神经元集合为n={n1,n2,…,nk},k表示神经元个数,n1,n2,…,nk表示神经元,测试用例集合为t={x1,x2,…,xm},m表示测试用例个数,x1,x2,…,xm表示测试用例,对于给定神经元ni∈n,测试用例xj∈t时,神经元通过激活函数relu之后的输出值为out(ni,xj),使用布尔值a(ni,xj)来替代实际的神经元实际的输出值out(ni,xj),其公式如下:
公式(1)中的t是决定神经元状态是否激活的阈值,根据激活函数relu,将阈值t设置为0;
利用得到的深度神经网络中的神经元输出状态,提取出对于给定一个测试用例xp∈t时,其模型中对应的所有神经元状态组成一个高维向量b(xp)来表示这条测试用例的神经元输出行为,b(xp)的具体公式如下:
b(xi)=[a(n1,xp),a(n2,xp),…,a(nk,xp)](2)。
优选的:对抗样本的神经元输出行为模式:
其中,bp(ta)表示对抗样本的神经元输出行为模式,xp表示测试用例,b(xp)表示测试用例xp的神经元输出行为,bpk(ta)表示第k个神经元输出的行为模式。
优选的:每一条测试用例神经元输出行为与对抗样本的神经元输出行为模式的距离dist:
其中,bpi(ta)表示在输入对抗样本下,神经元ni的输出行为模式,a(ni,xp)表示在输入测试用例xp下,神经元ni的输出行为。
优选的:根据每一条测试用例神经元输出行为与对抗样本的神经元输出行为模式的距离由低到高对测试用例集进行优先级排序。
本发明相比现有技术,具有以下有益效果:
本发明用于对测试用例集进行优先级排序,可以尽早的在测试用例集中找到对抗本,为深度神经网络测试用例提供了新的优先级排序方法,有助于测试人员尽早的找到对抗本,同时也能为深度学习测试的发展提供帮助,在深度学习系统测试中,对测试用例进行优先级排序提高了测试效率。
附图说明
图1为基于神经元输出行为模式的测试用例优先级排序方法流程图
图2为获取测试用例集的神经元输出行为模式的流程图
图3为根据距离进行测试用例优先级排序的流程图
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一种基于神经元输出行为模式的深度学习测试用例的选择方法,1)用几种对抗样本生成技术分别生成少量对抗样本。通过对少量对抗样本分析,总结出对抗样本神经元输出的行为模式2)根据提取的对抗样本的神经元行为模式对测试用例进行优先级排序,以便能尽早的在大批测试用例中找到对抗样本。具体包括以下步骤:
步骤1,通过提取对抗样本在模型中神经元状态,分析出不同对抗样本的神经元输出行为,找到输出行为的分布规律,总结出对抗样本的神经元输出行为的行为模式;
步骤1.1,提取测试用例的神经元状态;在深度神经网络中,输入测试用例后,神经元将会以实数值的形式将测试用例向后传播,每个神经元都对应一个实数值;设置激活函数的阈值,将实数值转化为判断是否激活的布尔值;获取每个神经元的输出布尔值作为神经元输出;将所有神经元输出组成一个高维向量,表示此测试用例下的神经元输出的行为;
提取深度神经网络中神经元输出状态。对于一个深度神经网络,设其中的神经元集合为n={n1,n2,…,nk},k表示神经元个数,n1,n2,…,nk表示神经元,测试用例集合为t={x1,x2,…,xm},m表示测试用例个数,x1,x2,…,xm表示测试用例,对于给定神经元ni∈n,测试用例xj∈t时,神经元通过激活函数relu之后的输出值为out(ni,xj),为了更清晰的分析神经元输出状态,本文使用布尔值a(ni,xj)来替代实际的神经元实际的输出值out(ni,xj),其公式如下:
公式(1)中的t是决定神经元状态是否激活的阈值,根据激活函数relu,将阈值t设置为0;
利用得到的深度神经网络中的神经元输出状态,提取出对于给定一个测试用例xp∈t时,其模型中对应的所有神经元状态组成一个高维向量b(xp)来表示这条测试用例的神经元输出行为,b(xp)的具体公式如下:
b(xp)=[a(n1,xp),a(n2,xp),…,a(nk,xp)](2)。
步骤1.2,通过两种以上的对抗样本生成技术分别生成对抗样本;在深度神经网络中,输入生成的对抗样本,神经元将会以实数值的形式将生成的对抗样本向后传播,每个神经元都对应一个实数值;设置激活函数的阈值,将实数值转化为判断是否激活的布尔值;获取每个神经元的输出布尔值作为神经元输出;将所有神经元输出组成一个高维向量,表示此对抗样本下的神经元输出的行为;提取对抗样本下的神经元输出的行为构成对抗样本集;分析对抗样本集的神经元输出行为的分布规律,总结出对抗样本的神经元输出行为模式;
在给定一批对抗样本时,利用步骤1.1中的方法,提取每一条测试用例的神经元输出行为组成一个神经元输出行为集。对神经元输出行为集进行数据分析,提取出对抗样本在此模型中神经元输出行为的行为模式bp(t),对抗样本的神经元输出行为模式:
其中,bp(ta)表示对抗样本的神经元输出行为模式,xp表示测试用例,b(xp)表示测试用例xp的神经元输出行为,bpk(ta)表示第k个神经元输出的行为模式。
步骤2,根据总结的对抗样本的神经元输出行为模式对测试用例进行优先级排序;
步骤2.1,提取测试用例集中每一条测试用例的神经元输出行为,与步骤1得到的对抗样本的神经元输出行为模式进行对比,计算出每一条测试用例神经元输出行为与对抗样本的神经元输出行为模式的距离;
每一条测试用例神经元输出行为与对抗样本的神经元输出行为模式的距离dist:
其中,bpi(ta)表示在输入对抗样本下,神经元ni的输出行为模式,a(ni,xp)表示在输入测试用例xp下,神经元ni的输出行为。
步骤2.2,利用步骤2.1中计算的每一条测试用例的神经元输出行为与对抗样本的神经元输出行为模式的距离对测试用例集进行优先级排序。根据每一条测试用例神经元输出行为与对抗样本的神经元输出行为模式的距离由低到高对测试用例集进行优先级排序。距离越小的测试用例优先级越高。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。