本发明属于深度学习,涉及神经网络模型的测试,具体涉及一种时序神经网络模型的测试方法。
背景技术:
1、近年来,深度学习技术开始应用于军工软件中,起到一定的积极效果。但也可以明确,深度学习技术在军工型号软件的应用并不完全成熟,还处于发展阶段。并且这类软件的正确性、可靠性验证方法和测试流程也未成体系,难以有效度量软件的鲁棒性。不可靠的软件若被直接使用,小则导致用户体验差,大则带来灾难性质量事故。因此,完整严谨的测试方法和流程体系对于深度学习类软件的正确性和可靠性验证必不可少。
2、在传统的软件测试技术中,软件测试的流程体系标准非常成熟,常见的有包含边界值测试、等价类划分、冒烟测试等的黑盒测试及包含语句覆盖、条件覆盖、判定条件覆盖、条件组合覆盖等的白盒测试。以上测试准则可以适应不同的测试方法和粒度,所以传统软件可以根据上述测试方法进行全面系统的测试执行。但是深度学习系统与传统软件相比,无论是在内部结构有很大的不同,深度学习系统由多层卷积神经网络组成,内部结构包括由神经元、神经元值和连接、权重以及激活函数,区别于传统软件的控制语句。深度神经网络的代码不表示内部决策的任何信息,而是从训练数据中学习规则。所以传统软件测试技术的黑盒测试、白盒测试方法无法直接应用于深度学习系统。
3、对于深度学习算法的测试技术发展较晚,目前基本分两大类:一种是基于差分思想的方法,如deepxplore;一种是基于模糊测试的方法,如tensorfuzz。这两类测试方法均是对输入的测试样本根据一定规则变异成新样本,在非时序类神经网络上起到一定积极作用,但是对于时序类神经网络的测试,用上述两种方法变异生成的序列之间不一定满足实际的物理规律,如果直接套用上述的两种方法,会使测试结果失去参考价值;此外一种可行的解决方案是在生成不同帧样本时加入物理规律的限制,但是这样求导复杂,计算量大,且需要对不同的时序网络去定制不同的算法,不具备普遍性。
技术实现思路
1、本发明的目的:为了解决上述问题,本发明提出一种时序神经网络模型的测试方法,基于差分和生成对抗思想,可用于处理时间序列神经网络模型的测试问题。
2、本发明技术方案:
3、一种时序神经网络模型的测试方法,采用三个时序网络进行对照测试,三个时序网络包括时序网络a、时序网络b和时序网络c,三个时序网络的判别能力相近,将时序网络a与生成对抗网络中的判定网络组合,判断生成网络生成的时序数据与真实时序数据的真假与标签;生成网络包括不同的子网络用于生成不同标签的时序数据;时序网络a生成不同标签的时序数据提供给生成网络进行训练;然后将训练好的生成网络所生成的不同标签的时序数据分别输入给时序网络b和时序网络c做预测,根据预测标签与生成数据标签的异同情况,将标签明确且有问题的生成时序数据存入生成样本集;最后以该生成样本集对时序网络进行测试。
4、进一步的,时序网络a、时序网络b、时序网络c是神经网络的层数或者节点数或者训练数据集不同,但其他相同的三种时序网络。
5、进一步的,具体包括以下步骤:
6、步骤一,固定生成网络,依次使用每个子生成网络生成时序数据,由判定网络和时序网络a做判别,将判定结果和实际结果生成交叉熵作为损失函数,反向传播,更新判定网络;
7、步骤二,固定判定网络,将每个子生成网络的生成数据输入给判定网络,不断训练生成网络判定为真数据且为对应标签的概率最大;
8、步骤三,不断迭代步骤一和步骤二,完成生成网络与判定网络的训练;
9、步骤四,依次使用每个子生成网络生成不同标签的时序数据,然后分别输入给时序网络b和时序网络c做预测,若时序网络b预测标签、时序网络c预测标签与原始生成标签中任意两者相同且与第三者不同,则将生成数据存入生成样本集中,生成数据的标签为上述任意两者相同的标签;
10、步骤五,生成样本集即为触发不同时序网络模型的错误输出的样本,使用生成样本集对训练好的时序网络进行测试。
11、进一步的,待测试的时序网络为分类网络,对输入的时序数据进行分类,分类标签为0到n;判定网络d1对生成时序数据和真实时序数据打分,判别生成的数据是真是假;时序网络a即待测试的某个时序网络,对生成时序数据中判定为真的数据进行标签判别;生成网络通过输入噪声伪造具有样本分布的数据,由不同的子生成网络g0到gn构成,分别用于生成输出标签为0到n的序列数据。
12、进一步的,步骤一中,首先固定生成网络g0-gn,分别将生成网络生成的时序数据g(z)和训练的真实数据x输入给判定网络进行判定,如果判定为假,则在假的分类中,打分为1;如果判定为真,继续输入给时序网络a进行类别判断,输出的“真,标签0”的打分即为时序网络a输出的标签0的概率,输出的“真,标签1”的打分即为时序网络a输出的标签1的概率,依此类推,将判定为真假和标签类别的分数和实际为真假和标签类别的分数生成交叉熵作为损失函数,反向传播,训练判定网络。
13、进一步的,步骤二中,固定判定网络与生成网络g1-gn,将生成子网络g0生成的数据g(z)交给判定网络进行判断,如果判断为假,则在假的分类中,打分为1;如果为真,继续输入给时序网络a进行类别判断,输出的“真,标签0”的打分即为时序网络a输出的标签0的概率,输出的“真,标签1”的打分即为时序网络a输出的标签1的概率,依此类推;将期望分数“真,标签0”和实际分数生成交叉熵作为损失函数,反向传播,不断调整g0的参数,使判定网络判定为“真,标签0”的概率最大;然后固定判定网络d1与g,g2-gn,将生成子网络g1生成的数据g(z)交给判定网络d1进行判断;通过训练不断调整g1的参数,使判定网络判定为“真,标签1”的概率最大;以此类推,完成生成网络g2-gn的训练。
14、进一步的,步骤三中,不断迭代步骤一和步骤二,直到判定网络无法判断生成网络的生成数据和真实数据的区别,判定网络和生成网络的训练完成。
15、进一步的,步骤四中,首先使用生成网络g0生成标签为0的时序数据,将时序数据分别输入给时序网络b和时序网络c进行预测,时序网络b和时序网络c的预测结果有5种:b、c的预测结果一致,但是不为“0”;c的预测为“0”但是b的预测不为“0”;b的预测为“0”但是c的预测不为“0”;b、c的预测结果不一致且均不为“0”;b、c的预测结果均为“0”;上述前三种情况,均为两个网络判断标签一致且与另一个网络冲突,将生成数据的标签定为判断一致的标签,存入生成样本集中;
16、依此类推,完成生成网络g1-gn的生成样本集。
17、本发明的有益效果:
18、1、在深度学习可测试性领域,本发明提出了一种针对时间序列神经网络模型的测试方法。此方法可以自动生成大量不同标签的时间序列测试数据,且能找到对照时序网络模型针对相同输入情况下的不同输出的错误行为。
19、2、此方法将时序网络加入对抗网络中的判别网络中,能保证生成的不同标签的时间序列能满足时序网络的判断规则,使生成的时间序列测试数据具备物理规律。
20、3、此方法摆脱了常规的已知确定输入输出情况下的测试流程,可以在无法得知确定输出的情况下实现对时序网络模型的自动化测试。