CN112183749A - 基于有导向模型变异的深度学习库测试方法 - Google Patents
基于有导向模型变异的深度学习库测试方法 Download PDFInfo
- Publication number
- CN112183749A CN112183749A CN202011153213.XA CN202011153213A CN112183749A CN 112183749 A CN112183749 A CN 112183749A CN 202011153213 A CN202011153213 A CN 202011153213A CN 112183749 A CN112183749 A CN 112183749A
- Authority
- CN
- China
- Prior art keywords
- model
- seed
- variation
- library
- libraries
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于有导向模型变异的深度学习库测试方法,该方法的技术方案包括三点:(1)模型变异规则;(2)基于启发式搜索策略的变异模型生成;(3)基于差异测试的深度学习库测试预言进行不一致性缺陷计算、缺陷定位。本发明首次利用模型变异和启发式搜索策略有导向地生成大量结构不同的深度学习模型,利用差异测试的思想来对深度学习库进行测试,实现了新颖的深度学习库测试技术LEMON。与现有技术相比,本发明能够为揭露DL库的缺陷提供助益。
Description
技术领域
本发明涉及深度学习应用和深度学习库测试领域,特别是涉及一种深度学习库自动化测试方法。
背景技术
深度学习(Deep Learning,简称DL)模型由多层组成,每层由一定数量的神经元构成。不同层之间的神经元依据不同的权重进行连接,该权重通过训练输入数据获得。深度神经网络(Deep Neural Network,简称DNN)中的层可以对输入数据进行特定类型的转换,例如卷积和池化。在DNN中同一类型的层可以在多处被重复调用,处于不同位置的层的性能可能会有所不同,其具体效果取决于该层神经元权重的数值大小。目前DL领域存在两种主流的DNN架构,即卷积神经网络(CNN)和循环神经网络(RNN)。卷积神经网络中包含卷积计算,通常用于处理图像等具有网格状拓扑结构的数据,例如VGG19、Xception等。循环神经网络则使用循环来保留学习到的状态信息,并且主要用于处理自然语言文本,语音等序列数据,例如LSTM、GRU等。
DL平台通常提供高层级和低层级的库。开发人员通过使用高层级库的应用程序编程接口(Application Programming Interface,简称API),来调用低层级库中实现的DL算法,以实现其源程序。不同的低层级库基于不同的基础结构,并具有不同的输入格式和API。高层级库可以隐藏低层级库之间的差异,提供有关模型构建和训练的一致的API调用方式。与传统库相似,不同的DL低层级库针对相同的算法/规范提供了不同的实现。开发人员通过调用高层级库来实现源程序,高层级库又调用低层级库来完成各种转换操作和训练过程。Keras是目前最广泛使用的高层级库之一并已应用于各种关键领域,其可作为TensorFlow,CNTK,Theano和MXNet四个流行的低层级库的前端。将上述四种主流的低层级库作为测试对象,并采用Keras作为调用它们的高层级库,检测上述四种DL低层级库中的缺陷。
DL库测试指标:差异测试是传统软件测试领域常用的测试方法,它的主要思想是通过比对相同输入在基于相同规约的多个实现下的输出是否相同来判定软件系统是否存在缺陷。目前,差异测试也已经被应用于DL库测试的研究中。现有工作提出了各种度量标准来衡量DL库之间检测到的差异,如D_CLASS和D_MAD。D_CLASS应用于分类模型,其通过计算输入数据的真实类别(该输入数据对应的真实标签类别)在模型预测类别序列(由分类模型针对该输入得到的预测概率向量转码而来)中的位置信息的差异来表示不同DL库输出的差异。假定输入i的真实类别在DL库Y下的预测类别序列中的排序为rG,Y。公式1-2表示了D_CLASS的计算过程。在公式1中,当rG,Y>k,即输入的真实类别在输出中的排序落在前k位之外时,δG,Y的值为0。
D_MAD则可同时应用于分类和回归模型,它考虑输出向量中的所有元素以计算输出向量与事实向量(根据输入的真实类别转码后得到的向量)的距离。给定事实向量G=(g1,g2,......,gm),模型在DL库J和DL库K下输出的预测概率向量分别为OJ和OK,D_MAD的值可基于公式(3)-公式(4)计算。
公式(3)计算预测概率向量O和事实向量G的差异值,其中oi和gi分别表示向量O和G对应位置的元素,m表示向量中元素的个数,i表示求和公式中的任一元素索引。
公式(4)基于公式(3)来计算D_MAD的值,其中G为事实向量,OJ和OK表示模型在DL库J和DL库K下输出的预测概率向量。
当D_CLASS或D_MAD值大于预定义的阈值t时,则认定两个DL库的输出结果之间存在不一致性,此时的D_CLASS或D_MAD值衡量了不一致性的程度。使用D_MAD来衡量模型在不同的DL库下输出结果的差异性。
CRADLE是首个应用于深度学习库测试领域的技术。然而,该技术方案面临以下挑战:1)深度学习提供了一种与传统软件不同的编程范式,开发人员通过编写代码来实现网络架构,而网络的权重则是通过对大量的数据进行训练得到。因为该训练过程所花费的时间代价非常大(通常从几小时到几天不等),所以收集大量的可用的预训练模型是困难的,这就导致CRADLE难以在大规模的模型上展开实验。2)深度神经网络内部存在着大量的具有随机性和不确定性的计算过程且不同DL库的实现方式存在差异,因此难以判断DL库之间的差异是其内部缺陷导致的错误行为还是由其他因素所导致的微小差异。
为了解决上述两种挑战,本发明提出了一种基于有导向模型变异的深度学习库测试技术,以此来突破CRADLE无法在大量模型上应用的困境。
发明内容
为了突破现有技术的局限性,本发明旨在提出一种基于有导向模型变异的深度学习库测试方法,首次利用模型变异和启发式搜索策略有导向地生成大量结构不同的深度学习模型,利用差异测试的思想来对深度学习库进行测试,实现了新颖的深度学习库测试技术LEMON。
本发明的一种基于有导向模型变异的深度学习库测试方法,包括以下步骤:
步骤一:进行算法初始化,即:对于给定的初始模型和给定的一组DL库,首先加载输入数据集和初始模型到内存中,获取输入数据集在使用初始模型时在所有DL库下输出的预测概率向量(O1,O2,......,Om),并基于公式(3)、公式(4)计算不同DL库下的输出的预测概率向量之间的D_MAD值,将初始模型加入到种子池作为初代种子;模型在DL库J和DL库K下输出的预测概率向量分别为OJ和OK,D_MAD的值;
公式(3)计算预测概率向量O和事实向量G的差异值;
其中,oi和gi分别表示向量O和G对应位置的元素,m表示向量中元素的个数,i表示求和公式中的任一元素索引;
公式(4)基于公式(3)来计算D_MAD的值;
其中,G为事实向量,OJ和OK表示模型在DL库J和DL库K下输出的预测概率向量;
步骤二:生成基于启发式索策略的变异模型,即:在每一次迭代中,依据优先级分数分别选择当前迭代所需的种子模型和变异规则;在种子模型选择阶段,首先根据公式(5)计算种子池中所有种子的优先级分数;基于公式(6)计算对应的种子模型此轮迭代被选中的概率值;在种子模型选择阶段,采用轮盘选择策略依据各个种子模型的概率值来选出所需种子模型;在变异规则的选择阶段,依据上轮迭代选择的变异规则,通过公式(7)计算出各个变异规则的优先级分数,基于公式(8)所表示的MH算法来计算当前阶段所需变异规则;在种子模型选择和变异规则选择完毕之后,将变异规则应用到种子模型上,生成变异模型;当获得100个变异模型之后,算法过程终止;
针对种子模型的优先级分数来衡量模型在下一迭代中被选择的优先级大小如公式(5)所示:
其中,ci表示种子模型si在历史迭代中被选择进行变异的次数;
种子模型在历史上的被选中的次数越少,其在下一迭代中的优先级分数越高;
基于轮盘选择策略来选择下一迭代的种子模型,选择概率pi计算如公式(6)所示:
根据种子模型si的分数值scorei计算其在下一次迭代中的被选中进行变异的概率pi,而后利用轮盘选择策略来选择用于变异的种子模型。其中r表示种子池中模型的数量,k表示当前种子池中任一种子模型的索引;
对于每个变异规则MU,使用Ratio(MU)表示被选择的优先级分数,计算方法如公式7所示:
其中,amplify_time表示使用MU生成的模型相比种子模型提升了DL库之间不一致性的次数,total_time表示选择MU进行变异的总次数;
假定每个试验的成功概率为p,则第k次试验为首次成功的概率为Ps(X=k)=(1-p)k-1p,在选择MUa的情况下,选择MUb的可能性计算如公式(8)所示:
其中,ka和kb表示MUa和MUb在变异规则按照优先级分数排序中的次序数,
当PS(MUb)>PS(MUa)时,Pa(MUb|MUa)=1,如果无法成功使用选择的变异规则对种子模型进行变异,该变异规则会被跳过;
步骤三:基于差异测试,设计三种具体测试预言策略进行不一致性缺陷计算,即:在对种子模型Ms应用变异规则产生变异模型Mm之后,获取该模型在不同的DL库下输出的预测概率序列向量,使用公式(3)-(4)计算每个输入在不同的DL库组合之间输出的预测概率 向量之间的D_MAD值;通过判定该变异模型Mm相比种子模型Ms放大不一致性程度的情况来决定是否将该模型放入种子池;具体判定过程为:输入给定的一组{I1,I2,……,In}和给定的一组DL库表示对于所有输入,模型M在所有DL库的两两组合下的输出之间的不一致数值的累计,如果满足ACC(Mm)>ACC(Ms),则称Mm相比Ms放大了不一致性;在每次迭代结束时,将相比种子模型提升了不一致性程度的变异模型放入种子池中供下一迭代使用;同时,更新种子模型和变异规则对应的优先级分数;
步骤四:进行缺陷定位,实现DL库内部存在的不一致性缺陷、崩溃缺陷和NaN缺陷检测,即:对于崩溃缺陷和NaN缺陷,对模型在不同DL库下的输出进行实时检测:当检测到模型仅在部分DL库下输出为NaN形式而不是正常的数值形式,或者程序仅在部分DL库下运行崩溃时,报告有崩溃缺陷或NaN缺陷检出;对于DL库内部存在的不一致性缺陷,采用CRADLE定位方法:对于不一致性大于阈值t的三元组在多个DL库之间进行投票来决定出错的DL库;对于每种不一致缺陷,启动定位过程,逐个比较每一层在不同DL库下输出的差异来定位最可疑的层,并标记为DL库中的缺陷。
与现有技术相比,本发明能够为揭露DL库的缺陷提供助益。
附图说明
图1为本发明的DNN变异模型示意图;(a)完整层间变异的七种变异规则,(b)层内变异的三种变异规则;
图2为本发明的一种基于有导向模型变异的深度学习库测试方法实施例流程图。
具体实施方式
以下结合附图及具体实施例,进一步详述本发明的具体实施方式。
本发明技术方案包括以下三点:(1)模型变异规则;(2)基于启发式搜索策略的变异模型生成;(3)基于差异测试的深度学习库测试预言。其中,(1)和(2)属于本发明的主要创新点。
如图1所示,为本发明的DNN变异模型示意图。分别展示了两类变异规则的变异细节,包括(a)完整层间变异和(b)层内变异。在DNN中,一定数量的神经元组成了层,每一层负责一个特定的功能,如卷积或池化等,层与层之间依靠不同的权重连接。基于DNN的结构特性,本发明系统化地设计两种类型的模型变异规则,即完整层变异和层内变异。
完整层变异:完整层涉及整个层的变异,这类变异规则倾向于对模型引入相对较大的更改。本发明共设计了七个完整层变异规则,包括已有的四个变异规则即删除层、拷贝层、添加层和去除激活函数,以及三个新的变异规则即调换层、添加层(多层)和替换激活函数。其中,删除层、拷贝层、添加层和调换层要求被作用的层的输入和输出的维度是一致的。
层内变异:层内变异作用于DNN某一层内部的神经元,它比完整层变异更细粒度。在DNN中,层的计算依赖于其神经元,因此更改神经元的属性(例如权重和激活状态)有助于更充分地测试该层中使用的库代码,并且还有助于探索库代码的不同使用方式。本发明设计了五个层内变异规则即高斯模糊、权重调换、神经元状态反转、神经元作用屏蔽和神经元调换。
这两类变异可实现十二种变异规则并结合启发式模型生成方法,基于启发式搜索策略的变异模型生成
依据上述的神经网络模型变异规则,采用如下的启发式策略指导模型变异。该启发式策略分为两个部分种子模型选择和变异规则选择,通过有导向的启发式搜索策略生成能够放大DL库之间不一致性的模型,从而区别DL库之间的差异是由随机因素导致还是由于DL库内部缺陷导致。具体过程如下:
步骤一:进行种子模型选择,使用给定的未经变异的现有模型作为初始模型,该初始模型在算法初期被加入到种子池中,其余所有的变异模型均直接或者间接由初始模型产生;种子模型通过一阶或高阶变异生成变异模型,根据公式(3)、(4)定义的度量标准衡量模型在不同DL库下输出的不一致性:
假设MS表示种子模型,Mm表示基于该种子模型得到的变异模型,{I1,I2,……,In}表示给定的一组输入{L1,L2,……,Ln},表示给定的一组DL库。表示对于所有输入,模型M在所有DL库的两两组合下的输出之间的不一致程度的累计,即累积不一致性。如果满足ACC(Mm)>ACC(Ms),则称Mm相比MS放大了不同DL库间的不一致性;为了促使模型朝着扩大不同DL库之间不一致性程度的方向变异,把不一致性比变异前更大的变异模型视为下一次迭代的种子模型并加入种子池。
在种子模型的选择中,如果某个种子模型在历史上被选中的次数较少,那么该模型在下一次迭代中被选中的几率应该更大,以此增加生成模型的多样性。ci表示种子模型si在历史迭代中被选择进行变异的次数。针对种子模型的优先级分数来衡量模型在下一迭代中被选择的优先级大小如公式(5)所示:
种子模型在历史上的被选中的次数越少,其在下一迭代中的优先级分数越高。
基于轮盘选择策略来选择下一迭代的种子模型。选择概率pi计算如公式(6)所示:
根据种子模型si的分数值scorei计算其在下一次迭代中的被选中进行变异的概率pi,而后利用轮盘选择策略来选择用于变异的种子模型,其中,r表示种子池中模型的数量,k表示当前种子池中任一种子模型的索引;
步骤二:进行变异规则选择:选择本轮变异需要应用的变异规则,对于给定的种子模型,不同的变异规则在放大不一致程度方面可能具有不同的效果;如果某些变异规则频繁生成会放大不同DL库输出之间不一致性的模型,则这些变异规则应该在下个迭代中有更大的概率被选中;因此,对于每个变异规则MU,使用Ratio(MU)表示被选择的优先级分数,计算方法如公式(7)所示:
其中,amplify_time表示使用MU生成的模型相比种子模型提升了DL库之间不一致性的次数,total_time表示选择MU进行变异的总次数;而后,对变异规则的优先级分数进行从高到低排序。尽管变异规则的选择需要充分考虑历史的可能性,但是直接选择分数最大的变异规则并不是最佳选择。每个变异规则都应该有一定的可能性被选择,与此同时,排名较高的变异规则应该有更大的可能性被选择。根据以上分析,变异规则的选择实际上受变异规则的历史行为影响,成为典型的马尔可夫链(MC)。假设期望的分布为平衡分布,采用Metropolis-Hastings(MH)算法指导变异规则选择。依据概率分布,MH算法基于当前的变异规则(记为MUa)对下一个变异规则(称为MUb)进行采样。
假定每个试验的成功概率为p,则第k次试验为首次成功的概率为Ps(X=k)=(1-p)k-1p。在选择MUa的情况下,选择MUb的可能性计算如公式(8)所示:
其中,ka和kb表示MUa和MUb在变异规则按照优先级分数排序中的次序数。当PS(MUb)>PS(MUa)时,Pa(MUb|MUa)=1。如果无法成功使用选择的变异规则对种子模型进行变异,该变异规则会被跳过。
基于差异测试的深度学习库测试预言:本发明采用差异测试解决深度学习库测试中的测试预言问题,通过计算模型对于输入在不同DL库下的预测结果的D_MAD的数值,来判断DL库之间是否存在潜在的缺陷。
本发明的一种基于有导向模型变异的深度学习库测试方法整体流程具体如下:
使用给定的未经变异的现有模型作为初始模型:在算法初始阶段,种子池仅包含给定的初始模型,并且每个变异规则的初始优先级得分均为0。此时随机选择一个变异规则作为当前的变异规则MUa,并基于轮盘选择算法选择种子模型MS;根据当前的变异规则MUa,使用MH算法选择下一个变异规则MUb,将MUb应用于MS生成新模型Mm;判断Mm相比MS是否会放大所有DL库之间累计不一致性,来决定是否将Mm添加到种子模型池中。通过判定该变异模型Mm相比种子模型MS放大不一致性程度的情况来决定是否将该模型放入种子池;具体判定过程为:输入给定的一组{I1,I2,......,In}和给定的一组DL库{L1,L2,......,Lm},表示对于所有输入,模型M在所有DL库的两两组合下的输出之间的不一致数值的累计,如果满足ACC(Mm)>ACC(Ms),则称Mm相比MS放大了不一致性;。在每次迭代中,种子池中模型的分数和变异规则的优先级分数按照公式5和公式7进行更新并重新排序。
基于差异测试,设计三种具体测试预言策略来检测DL库的缺陷即不一致性缺陷、崩溃和NaN输出缺陷。
不一致性缺陷:指由三元组表示模型M使用输入I在后端组合之间产生的差异数值(该数值依据公式(3)、(4)计算得出)。其中M表示某一模型,I表示输入,Li、Lj表示后端i和后端j。如果某个三元组所代表的差异数值大于阈值t,则认定后端Li,Lj之间存在不一致性。当不一致性缺陷的数值超过阈值t时,在多个DL库之间进行投票来决定出错的DL库。而后,对于每种不一致性缺陷,使用现有方法CRADLE中提出的定位方法来定位最可疑的层,并标记为DL库中的缺陷。多个不一致性缺陷其根源上可能均由同一个DL库中的缺陷所触发。指导模型向扩大DL库之间不一致性的方向变异(放大了由DL库缺陷导致的不一致性)。
崩溃缺陷:指模型M仅在部分DL库上运行崩溃,但是在部分DL库上可以正常运行。某些模型和输入组合均在同一DL库下导致程序运行崩溃且异常信息相同。在给定的DL库下,使用某些模型和输入数据进行测试可能导致程序运行崩溃。当程序运行崩溃时,依据该模型和输入组合在所有DL库下的运行情况判断导致程序运行崩溃的库。
NaN缺陷:指模型M在部分DL库上输出NaN结果(程序的输出结果不是正常数值,而是Not-a-Number形式),在其余的DL库上输出正常数值结果。在给定的DL库下,使用某些模型和输入数据进行测试时可能导致程序得到NaN输出(程序的输出结果不是正常数值,而是Not-a-Number形式)。当程序输出NaN时,依据该模型和输入组合在所有DL库下的运行情况判断导致程序输出NaN的库。某些模型和输入组合均在同一DL库下导致程序输出NaN缺陷,此缺陷视为一个NaN缺陷。
本发明的评估实验使用DL库之间的不一致性程度提升情况来衡量有效性。
如表1所示为LEMON有效性实验中的DL库版本及相关统计信息,针对4个主流的低层级DL库和1个高层级的DL库,在20个版本上开展了五组实验来评估其效果,其中每组实验均对应不同版本组合的DL库。如表2所示为LEMON检测到的DL库中的缺陷数目及分布。
表1
表2
如表3所示为变异模型与原始模型检测到不一致性程度比对结果,即所有评估实验的结果。“V变异”和“V初始”列分别表示所有使用的模型中的变异模型和初始模型所达到的平均不一致性程度(对于所有形如的三元组所代表的不一致性,V变异表示当M为初始模型时,在给定DL库组合下所有的不一致性的平均值;V变异表示当M为变异模型时,所有的不一致性的平均值)。“提升”列表示了变异模型相对于初始模型所获得的不一致程度的平均改善率。在该表中,对于所有实验组所产生的变异模型相比初始模型显著放大了不同DL库之间不一致性程度:变异模型相对于初始模型所获得的不一致程度的平均改善率在27.06%至357.30%之间。
表3
评估结果显示,本发明能够在最新版本的库中检测到24个缺陷,其中包括13个不一致性缺陷,6个崩溃缺陷,4个NaN缺陷。除此之外,还检测到了1个Keras内存泄漏缺陷,该缺陷在模型变异过程中被触发并影响了Keras的模型复制的性能。上述24个缺陷中有7个已经得到了确认,并且有一个已经被开发人员修复,它们在各个DL库之间的分布如表2所示。
综合上述实验结果可以看出,本发明能够通过基于初始模型生成变异模型的方式来有效地放大不同DL库之间的不一致性程度,从而有效地测试DL库中存在的缺陷。
最佳实施方式描述如下:
本发明提出了一种新颖的深度学习库测试技术LEMON,该技术所有实现均采用Python语言,使用Keras作为前端的高层级DL库,同时在相关代码实现过程中使用Redis数据库来存储中间结果。具体实现细节如下:
在变异规则的实现中,使用Keras内置的相关API接口来访问DNN模型内部的层信息以及层内部神经元相关属性来实现完整层变异和层内变异。使用KerasAPI接口,以节点链表的形式,将网络中的每个层视为节点,来进行层的删除,调换,重复等操作,以此实现完整层变异。在完整层变异中,除多层添加和两个激活函数相关的变异规则外,其余规则只能作用于输入和输出相同的层上。对于层间变异,通过对每个层节点内部的权重矩阵进行操作的方式来实现。
如图2所示,为本发明的一种基于有导向模型变异的深度学习库测试方法整体流程图。具体实施过程如下:
步骤一:算法初始化。对于给定的初始模型和给定的一组DL库,首先加载输入数据集(在本发明中数据集大小设置为1500)和初始模型到内存中。而后获取输入数据集在使用初始模型时,在所有DL库下的输出向量(预测概率向量){O1,O2,......,Om},并基于公式(3)、公式(4)计算不同DL库下的输出的预测概率向量之间的D_MAD值。而后将初始模型加入到种子池作为初代种子,同时根据公式(5)和公式(7)初始化种子模型和所有变异规则对应的优先级分数。
步骤二:生成基于启发式索策略的变异模型。在每一次迭代中,依据公式(5)和(7)中的优先级分数分别选择当前迭代所需的种子模型和变异规则;在种子模型选择阶段,首先根据公式(5)计算种子池中所有种子的优先级分数,而后基于公式(6)计算出对应的种子模型此轮迭代被选中的概率值;在种子模型选择阶段,采用轮盘选择策略依据各个种子模型的概率值来选出所需种子模型;在变异规则的选择阶段,依据上轮迭代选择的变异规则(算法初始阶段随机选择第一个变异规则),并通过公式(7)计算出各个变异规则的优先级分数,基于公式(8)所表示的MH算法来算出当前阶段所需变异规则;在种子模型和变异规则选择完毕之后,将变异规则应用到种子模型上以生成变异模型;当获得100个变异模型之后,算法过程终止;
步骤三:基于差异测试,设计三种具体测试预言策略进行不一致性缺陷计算。在对种子模型MS应用变异规则产生变异模型Mm之后,获取该模型在不同的DL库下的输出向量(预测概率序列),使用公式(3)-(4)计算每个输入在不同的DL库组合之间输出的预测概率向量之间的D_MAD值;通过判定该变异模型Mm相比种子模型MS放大不一致性程度的情况来决定是否将该模型放入种子池;具体判定过程为:使用给定的一组输入{I1,I2,......,In},使用给定的一组DL库{L1,L2,......,Lm},表示对于所有输入,模型M在所有DL库的两两组合下的输出之间的不一致数值的累计,即累积不一致性;如果满足ACC(Mm)>ACC(Ms),则称Mm相比MS放大了不一致性;在每次迭代结束时,将相比种子模型提升了不一致性程度的变异模型放入种子池中供下一迭代使用;同时,使用公式(5)和公式(7)更新种子模型和变异规则对应的优先级分数;
步骤四:进行缺陷定位,实现DL库内部存在的不一致性缺陷、崩溃缺陷和NaN缺陷检测。对于崩溃缺陷和NaN缺陷,对模型在不同DL库下的输出进行实时检测:当检测到模型仅在部分DL库下输出为NaN形式而不是正常的数值形式,或者程序仅在部分DL库下运行崩溃时,报告有崩溃缺陷或NaN缺陷检出。对于DL库内部存在的不一致性缺陷,采用CRADLE的定位方法:对于不一致性大于阈值t的三元组在多个DL库之间进行投票来决定出错的DL库;对于每种不一致缺陷,启动定位过程,逐个比较每一层在不同DL库下输出的差异来定位最可疑的层,并标记为DL库中的缺陷。
为了准确地证明本发明所提基于有导向模型变异的深度学习库测试技术的有效性,采用控制变量的思想,创建了基于随机性的变体技术:使用完全随机的变异模型选择策略和随机的变异规则选择策略来产生变异模型,以此替换启发式变异模型生成策略。为了进一步突出本发明的有效性,将LEMON和LEMONr在中四个相应版本的DL库(如表1所示)上进行实验,统计在指定的一小时内LEMON和LEMONr产生的不一致性数量的多少,同时比较两种技术方法所产生的变异模型相比初始模型在提升不一致性程度方面的有效性。重复该过程五次以减少随机性对于实验效果的影响。如表4所示,为LEMON和LEMONr之间有效性对比效果。列“仅由变异体检出”展示了变异模型相比初始模型能够额外发现的不一致性的个数。列“仅由初始模型检出”展示了初始模型相比变异模型能够额外发现的不一致性的个数。可以看出,相比LEMONr,LEMON生成的变异模型在几乎所有的DL库组合上都能检测到更多的初始模型无法检出的不一致性。同时,LEMON产生的变异体相比初始模型所遗漏的不一致性比LEMONr少很多。此外,在每个DL库组合上,LEMON对于不一致性程度的平均提升率始终大于LEMONr。
表4
Claims (1)
1.一种基于有导向模型变异的深度学习库测试方法,其特征在于,该方法包括以下步骤:
步骤一:进行算法初始化,即:对于给定的初始模型和给定的一组DL库,首先加载输入数据集和初始模型到内存中,获取输入数据集在使用初始模型时在所有DL库下输出的预测概率向量(O1,O2,......,Om),并基于公式(3)、公式(4)计算不同DL库下的输出的预测概率向量之间的D_MAD值,将初始模型加入到种子池作为初代种子;模型在DL库J和DL库K下输出的预测概率向量分别为OJ和OK,D_MAD的值;
公式(3)计算预测概率向量O和事实向量G的差异值;
其中,oi和gi分别表示向量O和G对应位置的元素,m表示向量中元素的个数,i表示求和公式中的任一元素索引;
公式(4)基于公式(3)来计算D_MAD的值;
其中,G为事实向量,OJ和OK表示模型在DL库J和DL库K下输出的预测概率向量;
步骤二:生成基于启发式索策略的变异模型,即:在每一次迭代中,依据优先级分数分别选择当前迭代所需的种子模型和变异规则;在种子模型选择阶段,首先根据公式(5)计算种子池中所有种子的优先级分数;基于公式(6)计算对应的种子模型此轮迭代被选中的概率值;在种子模型选择阶段,采用轮盘选择策略依据各个种子模型的概率值来选出所需种子模型;在变异规则的选择阶段,依据上轮迭代选择的变异规则,通过公式(7)计算出各个变异规则的优先级分数,基于公式(8)所表示的MH算法来计算当前阶段所需变异规则;在种子模型选择和变异规则选择完毕之后,将变异规则应用到种子模型上,生成变异模型;当获得100个变异模型之后,算法过程终止;
针对种子模型的优先级分数来衡量模型在下一迭代中被选择的优先级大小如公式(5)所示:
其中,ci表示种子模型si在历史迭代中被选择进行变异的次数;
种子模型在历史上的被选中的次数越少,其在下一迭代中的优先级分数越高;
基于轮盘选择策略来选择下一迭代的种子模型,选择概率pi计算如公式(6)所示:
根据种子模型si的分数值scorei计算其在下一次迭代中的被选中进行变异的概率pi,而后利用轮盘选择策略来选择用于变异的种子模型,其中,r表示种子池中模型的数量,k表示当前种子池中任一种子模型的索引;
对于每个变异规则MU,使用Ratio(MU)表示被选择的优先级分数,计算方法如公式7所示:
其中,amplify_time表示使用MU生成的模型相比种子模型提升了DL库之间不一致性的次数,total_time表示选择MU进行变异的总次数;
假定每个试验的成功概率为p,则第k次试验为首次成功的概率为Ps(X=k)=(1-p)k-1p,在选择MUa的情况下,选择MUb的可能性计算如公式(8)所示:
其中,ka和kb表示MUa和MUb在变异规则按照优先级分数排序中的次序数,
当PS(MUb)>PS(MUa)时,Pa(MUb|MUa)=1,如果无法成功使用选择的变异规则对种子模型进行变异,该变异规则会被跳过;
步骤三:基于差异测试,设计三种具体测试预言策略进行不一致性缺陷计算,即:在对种子模型MS应用变异规则产生变异模型Mm之后,获取该模型在不同的DL库下输出的预测概率序列向量,使用公式(3)、公式(4)计算每个输入在不同的DL库组合之间输出的预测概率向量之间的D_MAD值;通过判定该变异模型Mm相比种子模型Ms放大不一致性程度的情况来决定是否将该模型放入种子池;具体判定过程为:输入给定的一组{I1,I2,……,In}和给定的一组DL库{L1,L2,……,Lm},表示对于所有输入,模型M在所有DL库的两两组合下的输出之间的不一致数值的累计,如果满足ACC(Mm)>ACC(Ms),则称Mm相比Ms放大了不一致性;在每次迭代结束时,将相比种子模型提升了不一致性程度的变异模型放入种子池中供下一迭代使用;同时,更新种子模型和变异规则对应的优先级分数;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011153213.XA CN112183749B (zh) | 2020-10-26 | 2020-10-26 | 基于有导向模型变异的深度学习库测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011153213.XA CN112183749B (zh) | 2020-10-26 | 2020-10-26 | 基于有导向模型变异的深度学习库测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112183749A true CN112183749A (zh) | 2021-01-05 |
CN112183749B CN112183749B (zh) | 2023-04-18 |
Family
ID=73922157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011153213.XA Active CN112183749B (zh) | 2020-10-26 | 2020-10-26 | 基于有导向模型变异的深度学习库测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112183749B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342662A (zh) * | 2021-06-11 | 2021-09-03 | 南京工业大学 | 一种面向神经元特性的ai系统软件模型变异技术 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060230006A1 (en) * | 2003-01-15 | 2006-10-12 | Massimo Buscema | System and method for optimization of a database for the training and testing of prediction algorithms |
CN107590313A (zh) * | 2017-08-14 | 2018-01-16 | 天津大学 | 基于遗传算法和变异分析的优化测试向量生成方法 |
CN109446090A (zh) * | 2018-10-31 | 2019-03-08 | 南开大学 | 基于深度神经网络和概率决策森林的软件缺陷预测模型 |
CN110490320A (zh) * | 2019-07-30 | 2019-11-22 | 西北工业大学 | 基于预测机制和遗传算法融合的深度神经网络结构优化方法 |
CN111428818A (zh) * | 2020-04-22 | 2020-07-17 | 浙江工业大学 | 基于神经通路激活状态的深度学习模型测试方法与装置 |
-
2020
- 2020-10-26 CN CN202011153213.XA patent/CN112183749B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060230006A1 (en) * | 2003-01-15 | 2006-10-12 | Massimo Buscema | System and method for optimization of a database for the training and testing of prediction algorithms |
CN107590313A (zh) * | 2017-08-14 | 2018-01-16 | 天津大学 | 基于遗传算法和变异分析的优化测试向量生成方法 |
CN109446090A (zh) * | 2018-10-31 | 2019-03-08 | 南开大学 | 基于深度神经网络和概率决策森林的软件缺陷预测模型 |
CN110490320A (zh) * | 2019-07-30 | 2019-11-22 | 西北工业大学 | 基于预测机制和遗传算法融合的深度神经网络结构优化方法 |
CN111428818A (zh) * | 2020-04-22 | 2020-07-17 | 浙江工业大学 | 基于神经通路激活状态的深度学习模型测试方法与装置 |
Non-Patent Citations (4)
Title |
---|
PHAM HV, LUTELLIER T, QI W, ET AL: "CRADLE:Cross-backend validation to detect and localize bugs in deep learning libraries", 《2019 IEEE/ACM INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING》 * |
汪昕等: "基于深度学习的API误用缺陷检测", 《软件学报》 * |
王赞等: "深度神经网络测试研究综述", 《软件学报》 * |
郑炜等: "基于深度学习的安全缺陷报告预测方法实证研究", 《软件学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342662A (zh) * | 2021-06-11 | 2021-09-03 | 南京工业大学 | 一种面向神经元特性的ai系统软件模型变异技术 |
Also Published As
Publication number | Publication date |
---|---|
CN112183749B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
He et al. | Damage detection by an adaptive real-parameter simulated annealing genetic algorithm | |
Ha et al. | A new under-sampling method using genetic algorithm for imbalanced data classification | |
US20060230018A1 (en) | Mahalanobis distance genetic algorithm (MDGA) method and system | |
Ha et al. | Performance-influence model for highly configurable software with fourier learning and lasso regression | |
CN111726349B (zh) | 基于ga优化的gru并行网络流量异常检测方法 | |
JP2022058331A (ja) | 二次制約なしバイナリ最適化問題を解くためのハイブリッド量子計算アーキテクチャ | |
US20210365797A1 (en) | Systems and Methods for Debugging Neural Networks with Coverage Guided Fuzzing | |
CN111258909B (zh) | 一种测试样本生成方法及装置 | |
CN112183749B (zh) | 基于有导向模型变异的深度学习库测试方法 | |
EP3739473B1 (en) | Optimization device and method of controlling optimization device | |
CN114840857A (zh) | 基于深度强化学习与多级覆盖策略的智能合约模糊测试方法及系统 | |
Huang et al. | Harnessing deep learning for population genetic inference | |
EP3937086A1 (en) | Training a student neural network to mimic a mentor neural network with inputs that maximize student-to-mentor disagreement | |
CN113095501A (zh) | 一种基于深度强化学习的不平衡分类决策树生成方法 | |
Bartz-Beielstein et al. | In a Nutshell--The Sequential Parameter Optimization Toolbox | |
US20210103807A1 (en) | Computer implemented method and system for running inference queries with a generative model | |
Briffoteaux | Parallel surrogate-based algorithms for solving expensive optimization problems | |
CN112181420B (zh) | 基于强化学习的编译器缺陷定位方法 | |
Shi et al. | Sensitivity analysis and optimisation to input variables using winGamma and ANN: A case study in automated residential property valuation | |
KR20210125310A (ko) | 약물 유사도 평가 방법 및 이를 이용한 디바이스 | |
Oberoi et al. | Research on Efficient Software Defect Prediction Using Deep Learning Approaches | |
CN117078236B (zh) | 复杂装备智能维护方法、装置、电子设备及存储介质 | |
CN118014445B (zh) | 水网系统空间均衡状态评价技术方法及系统 | |
EP3933718A1 (en) | Multi-exponential error extrapolation | |
CN117331828A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |