一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于强化学习的深度学习算子测试数据生成方法与流程

2022-04-02 06:02:44 来源:中国专利 TAG:
1.本发明属于深度学习测试领域,特别是深度学习算子准确性问题测试领域。各类深度学习模型的使用者希望通过某种方法测试其模型依赖的深度学习算子是否会出现准确性问题。
背景技术
::2.随着深度学习技术的逐渐成熟和智能应用的需求涌现,各类深度学习模型被提出并广泛应用于各个领域下的各类场景。深度学习模型由诸多深度学习算子构成,深度学习算子常常会引发一系列准确性问题,从而对模型造成严重的危害和影响,为发现这类问题,需要不断挖掘和搜索尽可能多的能够引发准确性问题的测试数据。借鉴传统变异测试思想,将变异测试应用于张量和深度学习算子测试,是一种较为有效的方法。3.然而,单纯地将单个变异方法施加于随机张量,虽然能够显著提高触发准确性问题的概率和效率,其对变异方法的高维叠加效果的挖掘是不充分的,因而,这类方法的效果仍存在很大的提升空间,且在一些准确性问题较难发掘的算子上效果一般。本发明较好地解决了上述问题,不仅考虑了变异方法间的关系及变异方法的高维叠加效果,还在有效路径的挖掘和变异方法链效率的考量之间取得了平衡。技术实现要素:4.本发明要解决的问题是:基于张量变异的深度学习算子准确性测试的测试用例生成方法对变异方法的高维叠加效果的挖掘不充分的问题。虽然基于张量变异的深度学习算子准确性测试的测试用例生成方法相较于随机采样算法已经取得了非常显著的效率提升,上述问题的存在意味着张量变异方法仍然存在很大的效果提升空间,且大量实验数据证明,这类方法在一些准确性问题较难发掘的算子上效率始终一般。本发明较好地解决了上述问题,不仅考虑了变异方法间的关系及变异方法的高维叠加效果,使得这类方法充分利用了其潜力空间,还在有效路径的挖掘和变异方法链效率的考量之间取得了平衡,保证了算法的最低效率。5.本发明的技术方案为:一种基于强化学习的深度学习算子测试数据生成方法,其特征是基于被提前定义的基本变异方法组定义一个变异方法组,构造一个以方法组中的所有方法为状态集合、跳转至方法组中的所有方法为动作集合的qtable,进行带关联的强化学习训练,并最终达到在复杂的算子场景下采用变异方法链生成深度学习算子测试数据的目的。数据变异方法组合可根据需要灵活地进行增加、删除和修改,本方法提供的基本数据变异方法包括:字节变异、高斯变异和多项式变异。其中,字节变异是指对测试数据的浮点数二进制编码进行字节操作的变异,操作包括二进制编码各字节的增加、删除、取反、移位、随机重置,支持float32和float16格式编码;高斯变异是指在以测试数据为均值的、至少99.7%处于有效数值区间的高斯分布中进行采样得到新的测试数据;多项式变异是指对测试数据到边界的距离进行不同比例缩放并以此对数据进行线性变换。上述变异基于不同的基本思想,如:边界数据更容易引发异常、均匀采样对于小于1的数不利等,兼顾有效性与多样性。该方法分为以下几个步骤:6.1)变异方法定义:本发明预定义了几种变异方法作为基本变异组,具体变异方法将在1.1中进行陈述,实际使用时可根据需要添加、减少、修改变异方法,定义该次实践专属的变异方法组。7.1.1)基本变异方法组包括以下变异方法:字节变异、高斯变异和多项式变异。其中,字节变异是指对测试数据的浮点数二进制编码进行字节操作的变异,操作包括二进制编码各字节的增加、删除、取反、移位、随机重置,支持float32和float16格式编码;高斯变异是指在以测试数据为均值的、至少99.7%处于有效数值区间的高斯分布中进行采样得到新的测试数据;多项式变异是指对测试数据到边界的距离进行不同比例缩放并以此对数据进行线性变换;8.2)构造qtable:根据定义好的变异方法组构造用于执行强化学习q-learning算法的qtable;9.2.1)定义状态s为将某种变异方法施加于当前张量,定义动作a为选择某个变异方法并跳转至该方法对应的状态,从而状态s和动作a的集合大小与变异方法组大小相同;10.2.2)以当前变异方法组的全部变异方法按上述方式分别构造状态集合和动作集合,并构造强化学习算法q-learning的qtable,该表格大小为变异方法组大小*变异方法组大小;11.3)强化学习训练:初始化qtable,进行带关联的强化学习训练;12.3.1)初始化qtable,配置强化学习训练参数,并通过随机均匀采样生成种子张量;13.3.2)均匀随机采样每次训练的起始变异方法,然后以q-learning算法对qtable进行训练,训练过程中,每跳转至一个状态都会将当前状态代表的变异方法施加于当前张量,被修改过的张量将作为下一状态的被变异张量,除非当前结果已触发准确性问题;14.3.3)对于某一次迭代,在规定次数内成功生成触发准确性问题的张量即可获得奖赏,且施加变异方法次数越短奖赏越高,反之,将不会获得负奖赏,即被抑制;15.3.4)强化学习算法将迭代至最大迭代次数或直至qtable变化程度小于某个阈值,上述基于强化学习的链式训练方式非常适合用于复杂、难预测、生成困难的张量生成应用场景;16.4)链式采样:使用训练得到的qtable进行变异方法链采样并施加于随机生成的张量;17.4.1)多次迭代,且在每次迭代中均匀随机采样每次训练的起始变异方法及种子张量;18.4.2)在每次迭代中,根据qtable探索变异方法施加路径,随着跳转改变张量并进行测试,若在最大路径长度之内成功生成触发准确性问题的测试数据,则视为成功生成一条测试数据,反之,则视为触发失败;19.4.3)通过上述采样方式,既可以学习到有效的变异方法短路径组合,也可以学习到极为有效的单个变异方法并倾向于使用该方法,因此,这种方式能够生成更为有效的测试数据,能够应对更加复杂的场景。20.本发明的特点在于:21.1.提出了一种新颖的方法,通过强化学习算法挖掘变异方法组间方法的高维组合,挖掘基于张量变异的深度学习测试算子的测试数据生成方法的剩余潜力,大幅提高了测试数据生成的效果;22.2.提供了一个经过大量实验被证明有效的基本变异方法组及其有效性参考,并允许方法使用者根据需要灵活添加、删减、修改变异方法;23.3.提供了一个基于q-learning算法的测试数据生成模型建模方案,包括:qtable的构造方法和奖赏函数的安排;24.基于以上三点,本发明可以有效解决基于张量变异的深度学习算子准确性测试的测试用例生成方法对变异方法的高维叠加效果的挖掘不充分的问题,不仅考虑了变异方法间的关系及变异方法的高维叠加效果,使得这类方法充分利用了其潜力空间,还在有效路径的挖掘和变异方法链效率的考量之间取得了平衡,保证了算法的最低效率。附图说明25.图1为本发明总体架构图26.图2为本发明变异方法定义子过程架构图27.图3为本发明构造qtable子过程架构图28.图4为本发明强化学习训练子过程架构图29.图5为本发明链式采样子过程架构图具体实施方式30.本发明涉及的关键技术是利用一些已有的深度学习算子来基于强化学习链式采样变异方法并生成测试数据,同时进行准确性问题检测,随机张量的生成及变异主要通过numpy进行实现,准确性问题检测及深度学习算子主要涉及tensorflow、pytorch、mnn框架以及mre/mare算法,强化学习部分使用q-learning算法。31.1、张量生成与变异32.本发明中,主要通过numpy库进行随机张量的生产及变异,numpy是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括线性代数、随机数生成等功能。33.2、深度学习算子34.本发明中,涉及三种框架下的算子,这三种框架分别是:tensorflow、pytorch和mnn。tensorflow是一个由谷歌人工智能团队谷歌大脑(googlebrain)开发和维护的基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现,其前身是谷歌的神经网络算法库distbelief。pytorch是一个由facebook人工智能研究院(fair)推出的开源的python机器学习库,基于torch,常用于自然语言处理等各类机器学习应用程序。mnn是一个由阿里开发的高效、轻量的深度学习框架,它支持深度模型推理与训练,尤其在端侧的推理与训练性能在业界处于领先地位。目前,mnn已被广泛应用于阿里巴巴的手机淘宝、手机天猫、优酷等20多个app。35.本发明涉及的深度学习算子在三种框架下的具体实现分别为:36.(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。37.(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。38.(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。39.3、准确性问题检测40.本发明进行准确性问题检测的算法主要包括mre和mare算法。mre及mare算法的定义如下:41.假设对于给定的算子和给定的输入,tensorflow,、pytorch和mnn的计算结果分别为ft,fp,fm,这些结果之间的方差分别是vartm(tensorflow和mnn)、vartp(tensorflow和pytorch)以及varmp(mnn和pytorch),则算子计算的benchmark结果fb的计算方式为:ifmin(vartp,vartm,varmp)=vartp,thenfb=(ft fp)/2;min(vartp,vartm,varmp)=vartm,thenfb=(ft fm)/2;if(vartp,vartm,varmp)=varmp,thenfb=(fm fp)/2。42.mre和mare基于实际计算结果与benchmark结果之间的误差,分别定义为:[0043][0044][0045]实际使用中,通过比较mre和mare的实际计算值和预设阈值来检测准确性问题是否发生。[0046]4、强化学习[0047]本发明中的强化学习算法使用q-learning算法。q-learning算法是强化学习中的一种基础value-based算法,算法的核心思想是将状态集合和动作集合构造成一张表qtable,然后根据q值来选取能够获得最大收益的当前状态下的动作。该算法属于off-policy算法,它区别于偏保守的on-policy算法(如sarsa算法),是一种鲁莽、大胆、贪婪的算法,能够最大程度地挖掘解决方案的解决空间。[0048]5、示例[0049]下面使用具体示例来说明本发明的步骤,并展示结果。[0050]实验环境为:tensorflow2.0、pytorch1.8.1、mnn1.1.4,显卡为geforcegtx1080ti。[0051]本发明的整体流程如图1所示,具体实施步骤如下:[0052]1)定义变异方法组,实验直接使用基础变异方法组,该方法组包含了5种类型的变异方法共42个;[0053]2)构造大小为42*42的qtable并初始化为全0,探索率设定为0.1,学习率设定为0.1,衰减因子定为0.9,迭代5000次,最终结果采样15000次;[0054]3)分别使用3种框架下的36个算子在mre和mare下进行实验,为这些算子分别预设两组不同的mre和mare算法阈值β、γ,分别保证随机采样的准确性问题触发率在15%以下及在30%-50%之间;[0055]4)所有实验组均在完成训练后立即使用当前训练得到的qtable进行采样,其中,允许的最大路径大小为30,30以内的路径奖赏=1/路径长度,30及以上的路径奖赏=-1,记录15000次采样下能够成功触发准确性问题的样本数。[0056]5)部分代表算子的实验结果如表格1所示。各项数据通过mre、mare的两种不同阈值取值共4种情况的结果取平均得到,可以发现使用本发明进行的采样几乎最大程度地挖掘了类似解决方案的潜力空间。[0057]表格1各框架下算子测试数据生成实验结果[0058][0059]当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献