当前位置:网站首页>机器学习的冒烟测试
机器学习的冒烟测试
2022-08-07 11:11:00 【海苔小饼干】
本周粗略阅读了《Smoke testing for machine learning: simple tests to discover severe bugs》,是关于将冒烟测试应用到机器学习中的研究。这部分研究还从来没有看到过相关文献,比较新颖,因此记录一下。
首先理解冒烟测试:冒烟测试是在软件开发过程中的一种针对软件版本包的快速基本功能验证策略,是对软件基本功能进行确认验证的手段,并非对软件版本包的深入测试。冒烟测试也是针对软件版本包进行详细测试之前的预测试,执行冒烟测试的主要目的是快速验证软件基本功能是否有缺陷。如果冒烟测试的测试例不能通过,则不必做进一步的测试。进行冒烟测试之前需要确定冒烟测试的用例集,对用例集要求覆盖软件的基本功能。(百度百科)
研究问题:
什么是能够发现错误并提高机器学习算法质量的简单和通用的软件测试?
为此,基于输入域的等价类分析开发了一套冒烟测试,以识别输入域中可能揭示错误的有问题的区域。此外,机器学习算法具有许多超参数,可以配置开发的机器学习模型的复杂性(例如决策树的深度、神经元的数量),也可以配置优化算法(例如牛顿梯度下降或随机梯度下降),而由于问题的指数性质,用网格搜索对超参数进行穷举测试通常是不可能的。因此提出了一种简单方法,其中测试的数量只随超参数的数量线性增长。
将方法应用于三个最先进的机器学习库,以评估测试有效性,即是否能检测到以前没有检测到的真实错误。实验发现并报告了11个以前未知的错误,其中两个是严重错误。
贡献:
为分类算法、聚类算法分别定义了22个、15个冒烟测试;
一种具有线性复杂性的组合冒烟测试的简单方法,考虑了所有超参数的不同值;
案例研究,将方法应用于Weka、scikit-learn,Spark MLlib,测试53个分类和19个集群算法,发现了11个错误;
概念证明,该方法也适用于深度学习框架TensorFlow;
对开发人员的两个建议(关于简单但有效的测试),可提高机器学习库的质量保证。
等价类划分:
首先确定了一个表示良好数据(几乎不会导致错误)的等价类;
然后对剩余的等价类建模,使其各自表示不同的潜在问题行为。其中4个等价类处理由于浮点运算的精度问题而可能触发问题的功能;3个等价类考虑特征分布的情况,可能揭示推断特征分布的算法的问题;3个考虑特征特殊情况的等价类;2个考虑与特征值无关的分类数据有问题的标签;1个考虑特征和类之间的交互;1个考虑训练数据和测试数据之间关系.
根据不同数据可能处理的问题进行了归纳解释。
标签生成:
以上生成的所有分类都是二进制。使用的冒烟测试策略:矩形策略和随机策略。下图在两个维度上可视化了矩形标签。

组合冒烟测试:
为了达到线性复杂度并避免无效测试用例,提出两个改进:一次只修改一个参数,并使用定义有效组合的集合。
通过从测试覆盖标准中提取模式来实现线性复杂性。最基本的组合方法类似于路径覆盖,即执行所有可能的执行路径,但该问题呈指数级增长。因此,将条件覆盖率的思想(即所有原子条件至少假设一次所有可能的值(真和假))应用于超参数:不关心所有可能的组合,而是对除一个参数用来进行修改外,其余所有参数使用缺省值。使用参数的不同值以覆盖所有等价类。理想情况下,将使用每个等价类中的多个值,覆盖等价类边界处的输入,类似于边界值分析。
以上会产生许多测试用例,这些测试用例的超参数数量是线性的。此外,同样使用这个概念部分解决其中的无效测试用例的问题。
边栏推荐
- pyautogui practice - 10 lines of code to realize the "solidified desktop" in "Broken Elite"
- 第4章 漏洞扫描
- UGUI系列-Dropdown控件研究(Unity3D)
- UGUI系列-原理分析(Unity3D)
- 百度智能云 | 全球首个!元宇宙安全极客大会来了
- Niu Ke Duo School-Z-Game on grid- (Game Theory + Must-win and must-defeat transfer)
- Want to save programs?The dongle is too much trouble, try this (Unity3D)
- 一个很重的代码坏味:多行代码糅合在一行
- unity 动画结束 后处理事件
- Problems encountered by the custom push ringtone plugin
猜你喜欢

STM32 LWIP Server、Client如何判断网络异常

Apipost--软件测试

【云原生--Kubernetes】安全机制

数据可视化matplotlib(一)---亚马逊销售飙升榜

MySQL advanced (twenty-eight) GRANT REVOKE usage details

CVPR2022Oral专题系列(二):多帧图像合成与增强

The prototype of ES6

Leek 1408. String matching in arrays

Custom Annotations and Reflections

How to break the review bottleneck period?
随机推荐
MapStruct 高级用法
一个很重的代码坏味:多行代码糅合在一行
Problems encountered by the custom push ringtone plugin
如何打破复习瓶颈期?
CCNA-DHCP (Dynamic Host Configuration Protocol)
搭一个K3S 玩玩
Shell regular and its commands
GPT - 3 combination DALL e., 60 seconds to get the game set and original animation!After the net friend to see: want to play this game
formData
mysql进阶(二十八)GRANT REVOKE用法详解
UGUI系列-Dropdown控件研究(Unity3D)
QT练手小项目:飞机大战
牛客多校-Z-Game on grid-(博弈论+必胜态必败态转移)
The 900-page mathematical paper proves that the rotating black hole will not explode, Chengtong Yau: The first major breakthrough in general relativity in more than 30 years...
UGUI系列-Button绑定事件的多种实现
【合肥工业大学】考研初试复试资料分享
求平均数解决溢出问题的方法
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
Canvas和SVG的区别
Mysql transaction details