CN114265764A - 一种基于带权重采样的深度学习算子测试数据生成方法 - Google Patents
一种基于带权重采样的深度学习算子测试数据生成方法 Download PDFInfo
- Publication number
- CN114265764A CN114265764A CN202111471772.XA CN202111471772A CN114265764A CN 114265764 A CN114265764 A CN 114265764A CN 202111471772 A CN202111471772 A CN 202111471772A CN 114265764 A CN114265764 A CN 114265764A
- Authority
- CN
- China
- Prior art keywords
- variation
- mutation
- sampling
- test data
- group
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 134
- 238000012360 testing method Methods 0.000 title claims abstract description 66
- 238000005070 sampling Methods 0.000 title claims abstract description 49
- 238000013135 deep learning Methods 0.000 title claims abstract description 26
- 230000035772 mutation Effects 0.000 claims abstract description 46
- 238000012614 Monte-Carlo sampling Methods 0.000 claims abstract description 6
- 239000011159 matrix material Substances 0.000 claims description 13
- 238000012216 screening Methods 0.000 claims description 13
- 238000002474 experimental method Methods 0.000 claims description 4
- 238000013100 final test Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 claims description 3
- 230000001172 regenerating effect Effects 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 claims 1
- 238000010606 normalization Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 abstract description 2
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000013136 deep learning model Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000000342 Monte Carlo simulation Methods 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Landscapes
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
一种基于带权重采样的深度学习算子测试数据生成方法,其特征是将一组提前设计的变异方法视作向不同数据取值域的映射,在其中进行预先的蒙特卡罗采样,从而获取各变异方法的有效性并以此为权重进行采样,并最终在兼顾数据多样性的同时更有效地生成深度学习算子测试数据。数据变异方法组合可灵活进行增、删、改,本方法提供的基本变异方法包括:字节、噪声和倒转变异。其中,字节变异指对测试数据的浮点数二进制编码进行字节操作的变异,包括各字节的增加、删除、取反、移位、随机重置;噪声变异是指随机使用各类噪声施加于测试数据;倒转变异是指将测试数据作为分母计算其伪倒数的变异。上述变异基于不同的基本思想,兼顾有效性与多样性。
Description
技术领域
本发明属于深度学习测试领域,特别是深度学习算子准确性问题测试领域。各类深度学习模型的使用者希望通过某种方法测试其模型依赖的深度学习算子是否会出现准确性问题。
背景技术
随着深度学习技术的逐渐成熟和智能应用的需求涌现,各类深度学习模型被提出并广泛应用于各个领域下的各类场景。然而,人们在研究、使用和测试深度学习模型时,往往倾向于关注模型整体功能或流程的正确性和完整性,而忽略其模型背后依赖的特定算子的正确性。事实上,深度学习算子常常会引发一系列准确性问题,从而对模型造成严重的危害和影响,因此,对于深度学习算子的准确性测试是十分有必要的。
不同于传统测试,深度学习算子准确性测试的测试用例生成存在困难,人们无法准确获知有效测试用例的具体特征,因而也无法针对测试用例进行精确设计,只能通过诸如随机采样的方式对于有效的测试用例进行寻找。然而,单纯的均匀随机采样存在许多问题,它往往是极其低效率的,且没有给予一些重要取值区间足够的重视,如:小于1的浮点数。借鉴传统变异测试的思想,对随机生成的测试数据进行变异能够有效提高测试触发准确性问题的概率,但这其中仍然存在无法确定在何时使用何种变异方法的问题。本发明较好地解决了上述问题,不仅提供了较为有效的基本变异方法组并允许其灵活变化,还通过蒙特卡罗方法和带权重采样提出了一种确定如何在何时使用何种变异方法的解决方案。
发明内容
本发明要解决的问题是:深度学习算子准确性测试的测试用例生成难以精确设计,生成效率低下的问题。人们无法准确获知有效测试用例的具体特征,因而也无法针对测试用例进行精确设计,只能通过诸如随机采样的方式对于有效的测试用例进行寻找。然而,单纯的均匀随机采样存在许多问题,它往往是极其低效率的,且没有给予一些重要取值区间足够的重视,如:小于1的浮点数。本发明针对上述问题,设计了一系列测试数据变异方法,并通过蒙特卡罗采样对这些方法进行有效性评价,从而挑选合适的变异方法及对应权重进行带权重的变异数据采样,大大提高了深度学习算子准确性测试的测试用例生成效率、有效性和多样性。
本发明的技术方案为:一种基于带权重采样的深度学习算子测试数据生成方法,其特征是将一组被提前设计的数据变异方法视作向不同数据取值域的映射,并在其中进行预先的蒙特卡罗采样,从而获取各变异方法的有效性并以此为权重带权重地进行采样,并最终达到在兼顾数据多样性的条件下更有效地生成深度学习算子测试数据的目的。数据变异方法组合可根据需要灵活地进行增加、删除和修改,本方法提供的基本数据变异方法包括:字节变异、噪声变异和倒转变异。其中,字节变异是指对测试数据的浮点数二进制编码进行字节操作的变异,操作包括二进制编码各字节的增加、删除、取反、移位、随机重置,支持float32和float16格式编码;噪声变异是指均匀地随机使用高斯噪声或均匀噪声施加于测试数据;倒转变异是指将测试数据作为分母计算其在取值域内的伪倒数的变异。上述变异基于不同的基本思想,如:边界数据更容易引发异常、均匀采样对于小于1的数不利等,兼顾有效性与多样性。该方法分为以下几个步骤:
1)变异方法定义:本发明预定义了几种变异方法作为基本变异组,具体变异方法将在1.1中进行陈述,实际使用时可根据需要添加、减少、修改变异方法,定义该次实践专属的变异方法组。
1.1)基本变异方法组包括以下变异方法:字节变异、噪声变异和倒转变异。其中,字节变异是指对测试数据的浮点数二进制编码进行字节操作的变异,操作包括二进制编码各字节的增加、删除、取反、移位、随机重置,支持float32和float16格式编码;噪声变异是指均匀地随机使用高斯噪声或均匀噪声施加于测试数据;倒转变异是指将测试数据作为分母计算其在取值域内的伪倒数的变异;
2)随机采样,得到每一种变异方法的变异后准确性问题触发成功率;
2.1)使用均匀随机采样得到种子随机测试用例;
2.2)对该种子随机测试用例分别施加每一种变异方法并测试变异效果,多次迭代后,统计每一种变异方法的变异后准确性问题触发成功率;
3)有效性分析:根据蒙特卡罗采样方法的基本思想,将每一种变异方法的变异后准确性问题触发成功率视为其在该算子下的有效性,并对其进行归一化得到采样权重矩阵;
4)变异方法筛选:根据需要对变异方法组中的变异方法进行筛选;
4.1)变异方法剔除:对于一些特殊情况,如:存在0成功率或反而将成功率大幅降低的变异方法、存在大量成功率与随机方法相差无几的变异方法、应用场景不要求多样性而急需以高成功率进行大量采样等,需要对变异方法组进行进一步筛选;
4.2)筛选、剔除操作主要包括:筛选出变异组中前K高有效性的变异方法形成新的变异组和剔除变异组中前K低有效性的变异方法形成新的变异组,如有必要,可重新定义变异组并重新进行全套过程
4.3)矩阵修改:根据变异方法组筛选、剔除或修改的结果,修改有效性矩阵,并重新生成用于带权重采样的权重矩阵;
5)带权重采样:根据4.2得到的权重矩阵,进行带权重采样并检查是否成功触发准确性问题;
5.1)对权重矩阵从大到小进行排序,同时记录每种变异方法对于的索引,然后在0到其权重总和的区间内进行均匀采样,并找到对应的变异方法,该方法及其前面的变异方法的权重和大于或等于该随机值,且其前面的变异方法的权重和小于该随机值;
5.2)随机采样得到种子测试数据,将采样得到的变异方法施加于该数据得到最终测试数据并将其输入算子检查是否成功触发准确性问题;
本发明的特点在于:
1.提出了一种新颖的方法,通过对随机生成的种子测试用例施加各类变异方法,并分别评估它们的有效性,实现兼顾数据生成效率、有效性和多样性的深度学习算子测试数据生成方法;
2.提供了一个经过大量实验被证明有效的基本变异方法组及其有效性参考,并允许方法使用者根据需要灵活添加、删减、修改变异方法;
3.将蒙特卡罗采样得到的变异后准确性问题触发成功率视为变异方法的有效性度量,提供了一种新颖且具有理论依据的变异方法评价方法;
基于以上三点,本发明可以有效解决深度学习算子准确性测试的测试用例生成效率低下的问题,显著地提高了深度学习算子准确性测试的测试用例生成效率、有效性和多样性,较好地为后续深度学习算子准确性测试提供了支持。
附图说明
图1为本发明总体架构图
图2为本发明变异方法定义子过程架构图
图3为本发明蒙特卡罗随机采样子过程架构图
图4为本发明有效性分析子过程架构图
图5为本发明变异方法筛选子过程架构图
图6为本发明带权重采样子过程架构图
具体实施方式
本发明涉及的关键技术是利用一些已有的深度学习算子来基于带权重变异方法采样生成测试数据,并进行准确性问题检测,随机张量的生成及变异主要通过NumPy进行实现,准确性问题检测及深度学习算子主要涉及TensorFlow、PyTorch、MNN框架以及MRE/MARE算法。
1、张量生成与变异
本发明中,主要通过NumPy库进行随机张量的生产及变异,NumPy是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括线性代数、随机数生成等功能。
2、深度学习算子
本发明中,涉及三种框架下的算子,这三种框架分别是:TensorFlow、PyTorch和MNN。TensorFlow是一个由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护的基于数据流编程的符号数学***,被广泛应用于各类机器学习算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。PyTorch是一个由Facebook人工智能研究院(FAIR)推出的开源的Python机器学习库,基于Torch,常用于自然语言处理等各类机器学习应用程序。MNN是一个由阿里开发的高效、轻量的深度学习框架,它支持深度模型推理与训练,尤其在端侧的推理与训练性能在业界处于领先地位。目前,MNN已被广泛应用于阿里巴巴的于机淘宝、手机天猫、优酷等20多个App。
本发明涉及的深度学习算子在三种框架下的具体实现分别为:
(1)TensorFlow:tf.nn.bias_add、tf.nn.avg_pool、tf.nn.max_pool、tf.nn.softmax、tf.nn.sigmoid、tf.nn.tanh、tf.nn.relu、tf.nn.conv2d、tf.nn.reduce_mean、tf.matmul、tf.nn.reduce_max、tf.keras.layers.BatchNormalization。
(2)PyTorch:torch.add、F.avg_pool2d、F.max_pool2d、F.softmax、torch.sigmoid、torch.tanh、torch.nn.functional.relu、torch.nn.Conv2d、torch.mean、torch.matmul、torch.max、torch.nn.BatchNorm2d。
(3)MNN:MNN.expr.bias_add、MNN.expr.avg_pool、MNN.expr.max_pool、MNN.expr.softmax、MNN.expr.sigmoid、MNN.expr.tanh、MNN.expr.relu、MNN.nn.conv、MNN.expr.reduce_mean、MNN.expr.matmul、MNN.expr.reduce_max、MNN.nn.batch_norm。
3、准确性问题检测
本发明进行准确性问题检测的算法主要包括MRE和MARE算法。MRE及MARE算法的定义如下:
假设对于给定的算子和给定的输入,TensorFlow,、PyTorch和MNN的计算结果分别为ft,fp,fm,这些结果之间的方差分别是VarTM(TensorFlow和MNN)、VarTP(TensorFlow和PyTorch)以及VarMP(MNN和PyTorch),则算子计算的benchmark结果fb的计算方式为:if min(VarTP,VarTM,VarMP)=VarTP,then fb=(ft+fp)/2;min(VarTP,VarTM,VarMP)=VarTM,then fb=(ft+fm)/2;if(VarTP,VarTM,VarMP)=VarMP,thenfb=(fm+fp)/2。
MRE和MARE基于实际计算结果与benchmark结果之问的误差,分别定义为:
实际使用中,通过比较MRE和MARE的实际计算值和预设阈值来检测准确性问题是否发生。
4、示例
下面使用具体示例来说明本发明的步骤,并展示结果。
实验环境为:TensorFlow 2.0、PyTorch 1.8.1、MNN 1.1.4,显卡为GeForce GTX1080Ti。
本发明的整体流程如图1所示,具体实施步骤如下:
1)定义变异方法组,实验直接使用基础变异方法组,该方法组包含了3种类型的变异方法共34个,设定随机采样迭代次数为20000次,带权重采样次数为15000次;
2)分别使用3种框架下的36个算子在MRE和MARE下进行实验,为这些算子分别预设两组不同的MRE和MARE算法阈值β、γ,分别保证随机采样的准确性问题触发率在15%以下及在30%-50%之间。本阶段获得所有算子在不同情况下的准确性问题触发率;
3)将上述准确性问题触发率视为变异方法的有效性,将其转化为归一化的权重矩阵并进行适当筛选和修改后,根据这些权重矩阵进行带权重采样,并在每次采样后进行测试,检测生成数据是否成功触发算子的准确性问题。
4)各框架下算子测试数据生成的实验结果如表格1所示。各项数据通过MRE、MARE的两种不同阈值取值共4种情况的结果取平均得到,可以发现使用本发明进行的采样在各框架的各类算子下成功率均明显高于随机采样算法。
表格1各框架下算子测试数据生成实验结果
Claims (6)
1.一种基于带权重采样的深度学习算子测试数据生成方法,其特征是基于被提前定义的基本变异方法组定义一个变异方法组,并对其中的每一个方法进行预先的蒙特卡罗随机采样,从而获取各变异方法的有效性并进一步评价、精化变异组,最后进行带权重采样,并最终达到在兼顾数据多样性的条件下更有效地生成深度学习算子测试数据的目的。该方法分为以下几个步骤:
1)变异方法定义:本发明预定义了几种变异方法作为基本变异组,实际使用时可根据需要添加、减少、修改变异方法,定义该次实践专属的变异方法组,上述变异方法均属于张量变异方法,区别于传统标量变异;
2)蒙特卡罗随机采样,统计得到每一种变异方法的变异后准确性问题触发成功率:区别于传统标量变异测试,张量变异更复杂,效果更难预测和直接评估,最为直观和合理的方法是通过蒙特卡罗随机采样近似每一种变异方法的成功率;
3)有效性分析:根据蒙特卡罗采样方法的基本思想,将每一种变异方法的变异后准确性问题触发成功率视为其在该算子下的有效性,并对其进行归一化得到采样权重矩阵;
4)变异方法筛选:根据需要对变异方法组中的变异方法进行筛选;
5)带权重采样:根据4.2得到的权重矩阵,进行带权重采样并检查是否成功触发准确性问题。
2.根据权利要求1所述的变异方法定义子过程,其特征在于:
1)预定义了一组基本的变异方法组,该方法组包括:字节变异、噪声变异和倒转变异。其中,字节变异是指对测试数据的浮点数二进制编码进行字节操作的变异,操作包括二进制编码各字节的增加、删除、取反、移位、随机重置,支持float32和float16格式编码;噪声变异是指均匀地随机使用高斯噪声或均匀噪声施加于测试数据;倒转变异是指将测试数据作为分母计算其在取值域内的伪倒数的变异;
2)上述预定义的基本变异方法基于不同的基本思想,如:边界数据更容易引发异常、均匀采样对于小于1的数不利等,经过大量实验证明兼顾有效性与多样性,且目标为张量变异,变异操作较标量变异更复杂、更具统计学特征;
3)基于基本变异方法组,可根据实际需要对其进行扩增、削减和修改,形成新的变异方法组,但需要保证变异方法适用于张量且同时适用于float32和float16格式编码。
3.根据权利要求1所述的蒙特卡罗随机采样子过程,其特征在于:
1)使用均匀随机采样得到种子随机测试用例;
2)对该种子随机测试用例分别施加每一种变异方法并测试变异效果,多次迭代后,统计每一种变异方法的变异后准确性问题触发成功率,保证所有变异方法在随机采样过程中是受到公平对待的,变异后准确性问题触发成功率=变异后成功触发准确性问题样本数/总样本数。
4.根据权利要求1所述的有效性分析子过程,其特征在于:
1)将每一种变异方法的变异后准确性问题触发成功率视为其在该算子下的有效性,对变异方法的有效性进行进一步分析;
2)将每一种变异方法在某算子下的有效性视为在带权重采样中期望使用的比例,通过归一化得到变异方法组的权重矩阵。
5.根据权利要求1所述的变异方法筛选子过程,其特征在于:
1)对于一些特殊情况:存在0成功率或反而将成功率大幅降低的变异方法、存在大量成功率与随机方法相差无几的变异方法、应用场景不要求多样性而急需以高成功率进行大量采样等,需要对变异方法组进行进一步筛选;
2)筛选、剔除操作主要包括:筛选出变异组中前K高有效性的变异方法形成新的变异组和剔除变异组中前K低有效性的变异方法形成新的变异组,如有必要,可重新定义变异组并重新进行全套过程;
3)根据变异方法组筛选、剔除或修改的结果,修改有效性矩阵,并重新生成用于带权重采样的权重矩阵。
6.根据权利要求1所述的带权重采样子过程,其特征在于:
1)对权重矩阵从大到小进行排序,同时记录每种变异方法对于的索引,然后在0到其权重总和的区间内进行均匀采样,并找到对应的变异方法,该方法及其前面的变异方法的权重和大于或等于该随机值,且其前面的变异方法的权重和小于该随机值;
2)随机采样得到种子测试数据,将采样得到的变异方法施加于该数据得到最终测试数据并将其输入算子检查是否成功触发准确性问题。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111471772.XA CN114265764A (zh) | 2021-11-30 | 2021-11-30 | 一种基于带权重采样的深度学习算子测试数据生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111471772.XA CN114265764A (zh) | 2021-11-30 | 2021-11-30 | 一种基于带权重采样的深度学习算子测试数据生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265764A true CN114265764A (zh) | 2022-04-01 |
Family
ID=80826256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111471772.XA Pending CN114265764A (zh) | 2021-11-30 | 2021-11-30 | 一种基于带权重采样的深度学习算子测试数据生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265764A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115687158A (zh) * | 2022-12-28 | 2023-02-03 | 北京邮电大学 | 一种协议软件的测试方法及装置 |
-
2021
- 2021-11-30 CN CN202111471772.XA patent/CN114265764A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115687158A (zh) * | 2022-12-28 | 2023-02-03 | 北京邮电大学 | 一种协议软件的测试方法及装置 |
CN115687158B (zh) * | 2022-12-28 | 2023-03-10 | 北京邮电大学 | 一种协议软件的测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yan et al. | Unsupervised learning for fault detection and diagnosis of air handling units | |
CN108647520B (zh) | 一种基于脆弱性学习的智能模糊测试方法与*** | |
CN110232280B (zh) | 一种基于树结构卷积神经网络的软件安全漏洞检测方法 | |
US20200285984A1 (en) | System and method for generating a predictive model | |
CN112508243A (zh) | 电力信息***多故障预测网络模型的训练方法及装置 | |
CN107729241B (zh) | 一种基于变异体分组的软件变异测试数据进化生成方法 | |
CN110162972B (zh) | 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 | |
CN110956309A (zh) | 基于crf和lstm的流程活动预测方法 | |
CN112735541A (zh) | 一种基于简单循环单元神经网络的污水处理水质预测方法 | |
Masabo et al. | Big data: deep learning for detecting malware | |
CN114265764A (zh) | 一种基于带权重采样的深度学习算子测试数据生成方法 | |
CN113076545A (zh) | 一种基于深度学习的内核模糊测试序列生成方法 | |
CN115114166A (zh) | 一种以太坊智能合约安全测试方法 | |
Zhang et al. | Generating test data for both paths coverage and faults detection using genetic algorithms: multi-path case | |
CN114548493A (zh) | 一种电能表电流过载预测方法与*** | |
CN113159441A (zh) | 银行业务项目实施情况的预测方法及装置 | |
Gu et al. | Research on system log anomaly detection combining two-way slice GRU and GA-attention mechanism | |
CN117195044A (zh) | 故障分析方法、装置、计算机设备、存储介质和程序产品 | |
Wu et al. | Spp-cnn: An efficient framework for network robustness prediction | |
Jin et al. | An approach to constructing effective training data for a classification model to evaluate the reliability of a passive safety system | |
Tsanas et al. | A simple filter benchmark for feature selection | |
CN115908909A (zh) | 基于贝叶斯卷积神经网络的进化神经架构搜索方法及*** | |
Zheng et al. | Software Defect Prediction Model Based on Improved Deep Forest and AutoEncoder by Forest. | |
Obert et al. | Efficient binary static code data flow analysis using unsupervised learning | |
Mohan et al. | White-Box and black-box reliability modeling framework: integration through analytical model and user profile validation via deep learning—a practitioner’s approach |
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 |