一种基于有权神经元覆盖率的神经网络模型测试方法

文档序号:30076860发布日期:2022-05-18 03:30阅读:266来源:国知局
一种基于有权神经元覆盖率的神经网络模型测试方法

1.本发明属于神经网络技术领域,具体涉及一种神经网络模型测试方法。


背景技术:

2.目前关于深度学习神经网络模型测试方法的一般流程是:(1)加载训练好的模型;(2)向训练好的模型里输入预留测试数据集;(3)待模型运行完毕,对比模型的输出和测试预言,得到模型准确率。通用性的质量判断标准是若模型的准确率越高,则模型的质量越好。但是这种基于有限单一测试集来驱动的模型测试方法是宏观的,缺少模型微观方向的测试,如神经网络模型内部神经元的活动和内部神经网络结构的连接行为都没有触及。为了提高模型测试的充分性,kexinpei等人发表的文献:deepxplore:automatedwhiteboxtestingofdeeplearningsystems首次提出了神经元覆盖率,开启了对神经网络模型内部结构测试的先河,引入神经网络模型的微观测试方法,使得整个测试过程更充分完整、更能帮助神经网络模型的更新迭代。然而,这篇文献提出的神经元覆盖率的计算粒度比较粗糙,仅考虑了神经网络模型内部神经元的活动,而忽略了内部神经网络结构的连接行为,所以只使用神经元覆盖率这一白盒测试方法可能很难为深度学习测试的充分性和通用性提供可信度。


技术实现要素:

3.为了克服现有技术的不足,本发明提供了一种基于有权神经元覆盖率的神经网络模型测试方法,根据待训练的神经网络模型选取静态数据集,包括训练数据集和测试数据集;使用训练数据集训练待训练的神经网络模型,得到训练结束的神经网络模型;使用测试数据集测试训练结束的神经网络模型,测试完毕后,计算神经网络模型的准确率;判断训练完毕的神经网络模型是否符合准确率的预设要求,判断是否需要重新训练神经网络模型,计算神经网络模型的有权神经元覆盖率。本发明使用有权神经元覆盖率可以帮助理解神经模型的内部网络活动结果,更好的搭建和修改神经网络模型,为提高神经网络模型的准确率和效率提供一定帮助。
4.本发明解决其技术问题所采用的技术方案包括如下步骤:
5.步骤1:根据待训练的神经网络模型选取静态数据集,包括训练数据集和测试数据集;使用训练数据集训练待训练的神经网络模型,得到训练结束的神经网络模型;
6.步骤2:使用测试数据集测试训练结束的神经网络模型,测试完毕后,计算神经网络模型的准确率;
7.步骤3:判断神经网络模型是否需要重新训练;
8.步骤3.1:预设神经网络模型准确率要求;
9.步骤3.2:判断训练完毕的神经网络模型的准确率是否大于神经网络模型准确率的预定要求,如果是,则执行步骤4,否则进入步骤3.3;
10.步骤3.3:继续判断模型是否被重新训练过,若是,执行步骤3.4,若不是,则进入步
骤3.5;
11.步骤3.4:测试结束,得到测试结论,该神经网络模型不满足预定准确率的要求,更换神经网络架构;
12.步骤3.5:神经网络模型的准确率未达到预定要求,对神经网络模型结构和静态数据集做进一步的检查,分析原因并重新训练神经网络模型,详细的步骤如下:
13.(1)检查是否符合神经网络架构的约束;
14.(2)检查静态数据集,包括训练数据集和测试数据集,根据静态数据集存在的问题更新静态数据集;
15.(3)如果静态数据集和神经网络结构不存在问题,则修改batch_size和epochs超参数,重新选择优化算法和激活函数;
16.(4)更新网络结构或静态数据集,返回步骤1,重新训练神经网络模型;
17.步骤4:计算神经网络模型的有权神经元覆盖率。
18.进一步的,所述步骤4计算神经网络模型的有权神经元覆盖率具体为:
19.步骤4.1:计算神经网络模型中有权全连接层里的神经元权重总和,详细计算过程如下:
20.(1)获得神经网络模型中含有权重的全连接层,即隐藏层,用trainable_layers[]数组存储;
[0021]
(2)遍历trainable_layers[]数组中的全连接层,获得对应层数的神经元权重矩阵数据,通过layers_weight[][]按层存储有权全连接层的每个神经元权重求和后的绝对值的数据;
[0022]
(3)用变量sum存储layers_weight[][]数组中所有元素的总和;
[0023]
步骤4.2:为神经网络模型中有权全连接层的每个神经元设置归一化后的神经元权重比率,令集合n={n1,n2,n3,...,nn}代表神经网络模型中的全部神经元,令集合l={l1,l2,l3,...,l
l
}代表神经网络模型中的全部的有权全连接层;用n
l
表示在第l层上的神经元总数目,用n
ji
表示神经网络模型中第j层的第i个神经元,0《i≤nj,0《j≤l;
[0024]
由步骤4.1得到的神经网络模型中全连接层里的神经元权重总和sum和神经元权重数组layers_weight[][]数组,遍历layers_weight[][]数组,能够得到j层的第i个神经元的权重即layers_weight[j][i];最后将神经网络模型中有权全连接层的每个神经元的归一化权重比率设为其中
[0025]
步骤4.3:计算有权神经元覆盖率wcov,具体计算过程如下:
[0026]
设s={s1,s2,s3,...,ss}为神经元的测试集的输入,用θ(n,s)表示一个神经元的输出,其中n∈n,s∈s;
[0027]
设置神经元激活阀值t;根据神经元的输出θ(n,s)判断神经元是否被激活,若θ(n,s)》t,代表神经元被激活,将该神经元的归一化权值比率作为分子计入有权神经元覆盖率的计算当中;若θ(n,s)≤t,则代表神经元被抑制,没有被激活,不用寻找此神经元归一化后的神经元权值比率数据;最后取所有的测试用例的有权神经元覆盖率的均值作为测试的结果,|s|表示测试用例数量的总和;综上,有权神经元覆盖率的计算公式为:
[0028][0029]
进一步地,所述神经网络模型准确率的预设要求为90%。
[0030]
本发明的有益效果如下:
[0031]
本发明的有权神经元覆盖率与神经元覆盖率相比,将神经元权重纳入覆盖率考量中,使用有权神经元覆盖率来探究神经网络模型的内部结构,能更好的适应神经网络模型,尽可能的提高了神经网络模型测试的充分性。实践证明有权神经元覆盖率(wcov)同传统神经元覆盖率(nc)相比,改变神经网络模型的静态数据集,有权神经元覆盖率具有更强的灵敏性。因此,使用有权神经元覆盖率可以更好的反映神经网络模型内部神经元和网络结构活动的叠加结果,为神经网络模型的测试充分性和完整性的提高提供一定帮助。
附图说明
[0032]
图1为本发明方法的流程图。
[0033]
图2为本发明实施例神经网络模型权重示例。
[0034]
图3为本发明实施例训练数据递增、测试数据数量不变的模型准确率示意图。
[0035]
图4为本发明实施例训练数据和测试数据数量同比例递增的模型准确率示意图。
[0036]
图5为本发明实施例训练数据递增、测试数据数量不变的模型覆盖率示意图。
[0037]
图6为本发明实施例训练数据和测试数据数量同比例递增的模型覆盖率示意图。
具体实施方式
[0038]
下面结合附图和实施例对本发明进一步说明。
[0039]
深度学习系统的神经网络模型是由“点”和“线”组成的网状结构,具体表现形式是由神经元和神经元间的相互连接关系共同组成,如图2所示。以往研究提出的神经元覆盖率只关注了网络结构中的“点”,即神经元,没有涉及代表神经元间连接强度的“线”,即权值。神经网络模型中每个神经元都在参与处理信息,但是权值大的神经元,在处理信息的过程中发挥的作用也大,是神经网络模型决策判断的重要计算单元,为了使深度学习系统的测试更加充分,本发明设计了一种基于有权神经元覆盖率的神经网络模型测试方法,将神经网络模型中的“点”和“线”有机结合,提出了有权神经元覆盖率,通过判断有权神经元覆盖率的变化,可以进一步提高测试的充分性和完整性。
[0040]
本发明的主要原理是通过观察神经网络模型结构,以网络结构中的“点”和“线”为基准,来对神经网络模型进行带权重的神经元覆盖率计算,一般而言,有权神经元覆盖率的变化反映了神经网络模型内部神经元和网络结构活动的双重结果,即重点反映了神经网络模型中权值占比大的神经元的活动,有权神经元覆盖率越高,说明神经网络模型被测试数据集探索的状态就越多,检测出缺陷的概率就越大,测试也就越充分。通过比对神经网络模型在不同测试数据集测试情况下的不同有权神经元覆盖率,可以帮助测试人员判断神经网络模型的测试的充分性,为神经网络模型的测试充分性和完整性的提高提供一定帮助。
[0041]
如图1所示,一种基于有权神经元覆盖率的神经网络模型测试方法,包括如下步骤:
[0042]
步骤1:根据待训练的神经网络模型选取静态数据集,包括训练数据集和测试数据集;使用训练数据集训练待训练的神经网络模型,得到训练结束的神经网络模型;
[0043]
步骤2:使用测试数据集测试训练结束的神经网络模型,测试完毕后,计算神经网络模型的准确率;
[0044]
步骤3:判断神经网络模型是否需要重新训练;
[0045]
步骤3.1:预设神经网络模型准确率要求;
[0046]
步骤3.2:判断训练完毕的神经网络模型的准确率是否大于神经网络模型准确率的预定要求,如果是,则执行步骤4,否则进入步骤3.3;
[0047]
步骤3.3:继续判断模型是否被重新训练过,若是,执行步骤3.4,若不是,则进入步骤3.5;
[0048]
步骤3.4:测试结束,得到测试结论,该神经网络模型不满足预定准确率的要求,考虑更换神经网络架构;
[0049]
步骤3.5:因为神经网络模型的准确率达不到预定要求,所以需要对网络模型结构和静态数据集做进一步的检查,分析原因并重新训练神经网络模型,详细的步骤如下:
[0050]
(1)检查是否符合神经网络架构的约束,比如使用神经网络模型实现分类问题时,输入层的input_shape需与输入数据集的维度一一对应,输出层的神经元个数应与分类个数一一对应;
[0051]
(2)检查静态数据集,包括训练数据集和测试数据集,查看静态数据集是否存在分类不均衡、标签匹配错误、缺失值过多等问题,需要依照问题对应更新的静态数据集;
[0052]
(3)若没有存在明显的静态数据集和神经网络结构的问题,为了增加神经网络模型的准确率可以考虑修改batch_size和epochs等超参数,使用更高效的优化算法(adam,momentum等),选用正确的激活函数激(如softmax、relu等);
[0053]
(4)查完毕无误后,更新网络结构或静态数据集,返回步骤1,重新训练神经网络模型;
[0054]
步骤4:计算神经网络模型的有权神经元覆盖率。
[0055]
进一步的,所述步骤4计算神经网络模型的有权神经元覆盖率具体为:
[0056]
步骤4.1:计算神经网络模型中有权全连接层里的神经元权重总和,详细计算过程如下:
[0057]
(1)获得神经网络模型中含有权重的全连接层,即隐藏层,用trainable_layers[]数组存储;
[0058]
(2)遍历trainable_layers[]数组中的全连接层,获得对应层数的神经元权重矩阵数据,通过layers_weight[][]按层存储有权全连接层的每个神经元权重求和后的绝对值的数据;
[0059]
(3)用变量sum存储layers_weight[][]数组中所有元素的总和;
[0060]
步骤4.2:为神经网络模型中有权全连接层的每个神经元设置归一化后的神经元权重比率,令集合n={n1,n2,n3,...,nn}代表神经网络模型中的全部神经元,令集合l={l1,l2,l3,...,l
l
}代表神经网络模型中的全部的有权全连接层;用n
l
表示在第l层上的神经元总数目,用n
ji
表示神经网络模型中第j层的第i个神经元,0《i≤nj,0《j≤l;
[0061]
由步骤4.1得到的神经网络模型中全连接层里的神经元权重总和sum和神经元权
重数组layers_weight[][]数组,遍历layers_weight[][]数组,能够得到j层的第i个神经元的权重即layers_weight[j][i];最后将神经网络模型中有权全连接层的每个神经元的归一化权重比率设为其中
[0062]
步骤4.3:计算有权神经元覆盖率wcov,具体计算过程如下:
[0063]
设s={s1,s2,s3,...,ss}为神经元的测试集的输入,用θ(n,s)表示一个神经元的输出,其中n∈n,s∈s;
[0064]
设置神经元激活阀值t;根据神经元的输出θ(n,s)判断神经元是否被激活,若θ(n,s)》t,代表神经元被激活,将该神经元的归一化权值比率作为分子计入有权神经元覆盖率的计算当中;若θ(n,s)≤t,则代表神经元被抑制,没有被激活,不用寻找此神经元归一化后的神经元权值比率数据;最后取所有的测试用例的有权神经元覆盖率的均值作为测试的结果,|s|表示测试用例数量的总和;综上,有权神经元覆盖率的计算公式为:
[0065][0066]
具体实施例:
[0067]
1、为待训练的神经网络模型选取静态数据集,包括训练数据集和测试数据集。加载待训练的神经网络模型,使用训练数据集训练该神经网络模型;
[0068]
本次实验选择的神经网络模型的架构如表1所示,其中优化器选择使用adam优化器;loss函数选择交叉熵损失函数,batch_size和epochs的设置分别为32和5,静态数据集选择mnist数据集;
[0069]
表1神经网络模型架构
[0070]
layer(type)outputshapeparamconv2d(conv2d)(none,24,24,6)156average_pooling2d(averagepooling)(none,12,12,6)0conv2d_1(conv2d)(none,8,8,16)2416average_pooling2d_1(averagepooling)(none,4,4,16)0flatten(flatten)(none,256)0dense(dense)(none,120)30840dense_1(dense)(none,84)10164dense_2(dense)(none,10)850
[0071]
2、加载第1步训练的神经网络模型,使用测试数据集测试该神经网络模型,待神经网络模型运行完毕后,得到神经网络模型准确率数据见图3和图4,其中折线统计图的横坐标表示训练数据集的大小,纵坐标表示模型的准确率,图3显示的是训练数据数量随实验次数递增,测试数据数量恒定不变的神经网络模型准确率,图4显示的是训练数据数量和测试数据数量同比例递增的神经网络模型准确率。
[0072]
3、判断被训练完毕的模型是否符合预定标准,若神经网络模型准确率大于预定标准,即准确率达到90%,进入步骤4;否则,进入步骤3.3,继续判断神经网络模型是否被重新
训练过,若神经网络模型被重新训练过,则进入步骤3.4,结束测试;若神经网络模型没有被重新训练过,则进入步骤3.5,检查静态数据集的充分性和神经网络结构的完善性,分析原因,修改数据集或神经网络结构,返回步骤1,重新训练神经网络模型;由图3和图4可知本次试验的神经网络模型的准确率均达到90%以上,准确率符合预定标准,故直接执行步骤4。
[0073]
4、计算有权神经元覆盖率,本次试验选取mnist静态数据集中的前1000个训练数据集和前200个测试数据集来训练神经网络模型并计算有权神经元覆盖率。
[0074]
4.1:计算神经网络模型中有权全连接层里的神经元权重总和,具体计算过程如下:(1)获得神经网络模型中含有权重的全连接层,即隐藏层,用trainable_layers[]数组存储;(2)根据trainable_layers[]数组中存储的全连接层,遍历trainable_layers[]数组中的全连接层,获得对应层数的神经元权重矩阵数据,layers_weight[][]按层存储有权全连接层的每个神经元权重求和后的绝对值的数据;(3)用变量sum存储layers_weight[][]数组中所有元素的总和;最后可以得到该神经网络模型的神经元权重总和sum=1988.0617065429688;
[0075]
4.2:为神经网络模型中的有权全连接层里的每个神经元设置归一化后的神经元权重比率,由步骤4.1可得神经网络模型中全连接层里的神经元权重总和sum,和按层存储的神经元权重数组layers_weight[][]数组,在layers_weight[][]数组的基础上,将layers_weight[][]数组内的每个元素都除以神经元权重总和sum,便可得到归一化后的神经元权重比率:
[0076]
4.3:计算有权神经元覆盖率,本次实验令神经元激活阀值t=0,由神经元的输出θ(n,s)判断神经元是否被激活,若θ(n,s)大于t,代表神经元被激活,需要比对神经元归一化后的权值数据,找到该神经元的归一化权值比率将其作为分子计入有权神经元覆盖率的计算当中;若θ(n,s)≤t,则代表神经元被抑制,没有被激活,不用寻找此神经元归一化后的神经元权值比率数据;最后取所有的测试用例的有权神经元覆盖率的均值作为这次测试的结果,|s|表示测试用例数量的总和,使用有权神经元覆盖率的计算公式:
[0077][0078]
来计算神经网络模型的有权神经元覆盖率,通过计算可以求得本次实验的有权神经元覆盖率:wnc=0.20685917788922553。
[0079]
结果评估
[0080]
为了验证本发明的有效性,设计了两种实验来详细的比较有权神经元覆盖率和神经元覆盖率对神经网络模型中静态数据变化的灵敏度差别。
[0081]
实验一的设定是:控制神经网络模型训练数据集的数量随着验证次数的增加依次递增1000,但是测试数据集的数量固定不变,统一恒定为200;实验二的设定是:控制神经网络模型的训练数据集的数量和测试数据集的数量同比例增长,控制训练数据集的数量和测试数据集的数量的比例恒为5:1,训练数据集的数量和测试数据集的数量随着验证次数的增加分别依次递增1000和200。本次验证依旧是选用前文所述的神经网络模型和mnist静态
数据集来展开实验,实验结果见图5和图6,其中图5对应实验一的结果,图6对应实验二的结果。其中,折线统计图中的横坐标表示训练数据集的数量,纵坐标表示神经网络模型的神经元覆盖率数据。
[0082]
方差可以反映每一个变量与总体均数之间的差异,方差越小,数据越稳定,方差越大,数据的波动越大,故这里选择方差来对实验结果进行比较,通过比较本发明设计的有权神经元覆盖率(wnc)与神经元覆盖率(nc)两次实验的结果,由实验一可得有权神经元覆盖率wnc1的方差为:神经元覆盖率nc1的方差为:验证可知σ
2wnc1
》σ
2nc1
;由实验二可得有权神经元覆盖率wnc2的方差为:神经元覆盖率nc2的方差为:验证可知σ
2wnc2
》σ
2nc2

[0083]
综上,有权神经元覆盖率的实验数据波动每次都比神经元覆盖率的实验数据波动大,所以有权神经元覆盖率对神经网络模型静态数据集细微变化的感知能力比神经元覆盖率更强,有权神经元覆盖率更具敏感性,能更好的反映神经网络模型内部神经元和网络结构活动的双重结果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1