一种基于频谱的深度神经网络缺陷定位方法及系统技术方案

技术编号:27006156 阅读:34 留言:0更新日期:2021-01-08 17:09
本发明专利技术公开了一种基于频谱的深度神经网络缺陷定位方法,属于软件测试技术领域,包括以下步骤:1、获取正确的测试用例和错误的测试用例,2、获取待测深度神经网络模型频谱信息,3、计算神经元的怀疑度,并按照怀疑度对神经元进行排序。本发明专利技术依据深度神经网络对测试集的运行输出和分类结果量化深度神经网络中的神经元,然后利用怀疑度公式计算其怀疑度,并对其进行排名,定位到最有可能是缺陷的位置。该方法及系统将神经元的输出和测试数据的运行结果结合,可以将深度神经网络模型中的缺陷直观的使用数值体现出来,更准确快捷的定位到深度神经网络模型缺陷的具体位置。

【技术实现步骤摘要】
一种基于频谱的深度神经网络缺陷定位方法及系统
本专利技术涉及软件测试
,特别是涉及一种基于频谱的深度神经网络缺陷定位方法及系统。
技术介绍
深度神经网络作为机器学习的一种方法,在许多任务上的性能已经达到甚至超过了人类水平,如图像分类,语音识别,恶意软件检测等,并取得了广泛的应用,在很多场景下会代替人做出重要决策。但是,所有软件都不可避免的包含缺陷,深度神经网络也不例外。在诸如自动驾驶汽车和医学图像分析等安全关键系统中,如果深度神经网络做出的决定是错误的,将会造成非常严重的后果。例如:Uber无人驾驶汽车在夜间测试的过程中发生严重事故致使一名行人死亡;苹果手机的FaceID可以使用3D打印的人脸图片破解。因此,如何检测并定位深度神经网络中的缺陷,以保证深度神经网络的质量成为了软件工程和人工智能交叉领域的热点研究问题。目前,适用于深度神经网络的缺陷检测技术受到了广泛关注,如使用蜕变测试对深度神经网络进行测试,它可以通过对比蜕变前后的数据分类是否一致来检测深度神经网络是否存在缺陷;此外,还有一些有关神经元覆盖准则的方法,它们使用了不同的方法来提高神经元的覆盖率,同时可以根据覆盖率引导的测试来检测深度神经网络中存在的缺陷。当成功检测出神经网络中存在缺陷后,应该去定位缺陷所在的地方,以便于修复缺陷。但是上述工作都无法对具体产生缺陷的位置进行定位,也不能检测出深度神经网络中的特定结构存在缺陷,如:层数过多或者过少、激活函数不正确等。深度神经网络是一个黑盒,它可以使用大量神经元中的简单函数来模拟任何一个连续函数。从这个角度来看,深度神经网络的缺陷难以定位,因为我们无法准确的找出某一个神经元、某种结构或者某种激活函数确切的对神经网络的结果产生了什么影响。在这种情况下,如何定量分析它们对深度神经网络结果的作用就成了一个亟需解决的问题。软件缺陷定位的目标是识别与软件缺陷相关的程序元素,它可以帮助程序开发人员更快更准确地发现程序中需要修复的地方,以提升程序的可靠性。早期的缺陷定位以人工为主,但是通过人工调试来定位缺陷不仅耗时长而且难度大。在传统的软件缺陷定位方法中,基于频谱的缺陷定位方法通过获取程序的覆盖信息来对每个程序实体进行评估。程序频谱主要是指程序执行过程中产生的关于程序语句的覆盖信息,以及执行是否通过的信息。在使用测试集对程序进行测试的过程中,需要收集程序频谱信息,最后将频谱信息代入怀疑度公式得出程序实体对应的怀疑度,怀疑度越高即说明程序实体越有可能存在缺陷。我们将这种思想运用到了深度神经网络中,提出了一种基于频谱的深度神经网络缺陷定位方法及系统,以在神经元的层面上定位深度神经网络的缺陷。该方法及系统依据深度神经网络对测试集的运行输出和分类结果量化深度神经网络中的神经元,然后利用怀疑度公式计算其怀疑度,并对其进行排名,定位到最有可能是缺陷的位置。
技术实现思路
本专利技术的目的在于,提供一种基于频谱的深度神经网络缺陷定位方法及系统,实现深度神经网络的缺陷定位,将深度神经网络模型中的缺陷直观的使用数值体现出来。本专利技术所采用的技术方案是:一种基于频谱的深度神经网络缺陷定位方法,具体包括以下步骤:获取正确测试用例和错误测试用例:使用测试用例集T={t1,t2,t3,...}运行待测深度神经网络模型D,区分出正确测试用例和错误测试用例,并获取所述测试用例集T={t1,t2,t3,...}对应的运行信息集R={r1,r2,r3,...};获取待测深度神经网络模型的频谱信息:使用所述测试用例集T={t1,t2,t3,...}运行所述待测深度神经网络模型D,获取每个神经元的输出结果;根据所述运行信息集R={r1,r2,r3,...}与所述输出结果得到所述待测深度神经网络模型D中所有神经元的频谱信息M={m1,m2,m3,...};计算神经元的怀疑度,并按照怀疑度对神经元进行排序:根据怀疑度公式与所述频谱信息M={m1,m2,m3,...}计算出所有神经元的的怀疑度,并对神经元按照怀疑度从大到小进行排序,排序越靠前的神经元存在缺陷的几率越大。进一步地,所述获取正确测试用例和错误测试用例包括以下具体步骤:s11输入所述待测深度神经网络模型D和所述测试用例集T={t1,t2,t3,...};s12选择所述测试用例集T={t1,t2,t3,...}中的一条测试用例ti运行所述待测深度神经网络模型D,获取所述测试用例ti的运行结果Oi;s13根据所述运行结果Oi判断所述测试用例ti为正确测试用例还是错误测试用例,并记录所述测试用例ti的运行信息ri,如果所述测试用例ti为正确测试用例,则记所述运行信息ri=1;如果所述测试用例ti为错误测试用例,则记所述运行信息ri=0;s14重复执行s12、s13直到所述测试用例集T={t1,t2,t3,...}中所有测试用例运行完成,得到所述测试用例集T={t1,t2,t3,...}的所述运行信息集R={r1,r2,r3,...};s15遍历所述测试用例集T={t1,t2,t3,...}的所述运行信息集R={r1,r2,r3,...},统计总的正确测试用例个数np和总的错误测试用例个数nf;s16输出所述测试用例集T={t1,t2,t3,...}的所述运行信息R={r1,r2,r3,...}。进一步地,所述获取待测深度神经网络模型的频谱信息包括以下具体步骤:s21输入所述待测深度神经网络模型D、所述测试用例集T={t1,t2,t3,...}和所述测试用例集T={t1,t2,t3,...}的所述运行信息R={r1,r2,r3,...},其中N={n1,n2,n3,...}为所述待测深度神经网络模型D中的所有神经元集合;s22选择所述测试用例集T={t1,t2,t3,...}中的一条测试用例ti运行待测深度神经网络模型D,获取所述测试用例ti运行时各个神经元nj∈N的输出fnj(ti),并存储在文件中;s23重复执行s22,直到所述测试用例集T={t1,t2,t3,...}中所有测试用例运行完成;s24选择一个神经元nj,遍历其对应所述测试用例集T={t1,t2,t3,...}的输出fnj(T),如果所述运行信息集R={r1,r2,r3,...}中对应的ri=1,则将所述神经元nj的输出作为用例贡献值累加至所述神经元nj的成功贡献;如果所述运行信息R={r1,r2,r3,...}中对应的ri=0,则将所述神经元nj的输出作为用例贡献值累加至所述神经元nj的失败贡献,并将最终结果记录为所述神经元nj的频谱信息mj={nef(nj),nep(nj)},其中nef(nj)为所述神经元nj的失败贡献,nep(nj)为所述神经元nj的成功贡献;s25重复执行s24,直到分析完所述神经元集合N={n1,n2,n3,...}中的所有神经元;s26输出所述待测深度神经网络模型D中所有神经元的所述频谱信息M={m1,m2,m3,...}。进一步地,所述计算神经元的怀疑度,并按照怀疑度对神本文档来自技高网
...

【技术保护点】
1.一种基于频谱的深度神经网络缺陷定位方法,其特征在于,具体包括以下步骤:/n获取正确测试用例和错误测试用例:使用测试用例集T={t

【技术特征摘要】
1.一种基于频谱的深度神经网络缺陷定位方法,其特征在于,具体包括以下步骤:
获取正确测试用例和错误测试用例:使用测试用例集T={t1,t2,t3,...}运行待测深度神经网络模型D,区分出正确测试用例和错误测试用例,并获取所述测试用例集T={t1,t2,t3,...}对应的运行信息集R={r1,r2,r3,...};
获取待测深度神经网络模型的频谱信息:使用所述测试用例集T={t1,t2,t3,...}运行所述待测深度神经网络模型D,获取每个神经元的输出结果;根据所述运行信息集R={r1,r2,r3,...}与所述输出结果得到所述待测深度神经网络模型D中所有神经元的频谱信息M={m1,m2,m3,...};
计算神经元的怀疑度,并按照怀疑度对神经元进行排序:根据怀疑度公式与所述频谱信息M={m1,m2,m3,...}计算出所有神经元的的怀疑度,并对神经元按照怀疑度从大到小进行排序,排序越靠前的神经元存在缺陷的几率越大。


2.根据权利要求1所述的一种基于频谱的深度神经网络缺陷定位方法,其特征在于,所述获取正确测试用例和错误测试用例包括以下具体步骤:
s11输入所述待测深度神经网络模型D和所述测试用例集T={t1,t2,t3,...};
s12选择所述测试用例集T={t1,t2,t3,...}中的一条测试用例ti运行所述待测深度神经网络模型D,获取所述测试用例ti的运行结果Oi;
s13根据所述运行结果Oi判断所述测试用例ti为正确测试用例还是错误测试用例,并记录所述测试用例ti的运行信息ri,如果所述测试用例ti为正确测试用例,则记所述运行信息ri=1;如果所述测试用例ti为错误测试用例,则记所述运行信息ri=0;
s14重复执行s12、s13直到所述测试用例集T={t1,t2,t3,...}中所有测试用例运行完成,得到所述测试用例集T={t1,t2,t3,...}的所述运行信息集R={r1,r2,r3,...};
s15遍历所述测试用例集T={t1,t2,t3,...}的所述运行信息集R={r1,r2,r3,...},统计总的正确测试用例个数np和总的错误测试用例个数nf;
s16输出所述测试用例集T={t1,t2,t3,...}的所述运行信息R={r1,r2,r3,...}。


3.根据权利要求2所述的一种基于频谱的深度神经网络缺陷定位方法,其特征在于,所述获取待测深度神经网络模型的频谱信息包括以下具体步骤:
s21输入所述待测深度神经网络模型D、所述测试用例集T={t1,t2,t3,...}和所述测试用例集T={t1,t2,t3,...}的所述运行信息R={r1,r2,r3,...},其中N={n1,n2,n3,...}为所述待测深度神经网络模型D中的所有神经元集合;
s22选择所述测试用例集T={t1,t2,t3,...}中的一条测试用例ti运行待测深度神经网络模型D,获取所述测试用例ti运行时各...

【专利技术属性】
技术研发人员:李铮崔展齐刘建宾郑丽伟刘秀磊
申请(专利权)人:北京信息科技大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1