一、引言
这一篇,主要介绍模型算法测试之模型蜕变测试。
说到模型蜕变测试,我相信会有很多一部分测试人没有接触过,也有很多一部分测试人没有听说过。
设么是模型蜕变测试呢? 这一篇,我们就来解开它的面纱。
二、概述
模型蜕变测试(Metamorphic Testing, MT)是一种特殊的测试方法,最早用于解决传统测试方法难以应对的复杂软件系统,特别是那些没有明确预期输出的系统。
在模型算法方面,主要利用模型算法内含属性的测试方法,
蜕变测试的核心思想是利用已知的、可验证的输入输出关系(蜕变关系)来推断未知的输出结果,从而验证程序的正确性,
换句话说:修改了与属性相关的输入,再给定原始输入和输出的情况下预测新的输出。
说到蜕变测试,不得不提的一个词“蜕变关系”, 什么是蜕变关系呢?
蜕变关系(Metamorphic Relations, MR)是一组预期的输入输出间的关系,即:一组与模型算法中多对输入和输出相关的属性,在多次执行目标程序时,输入与输出之间期望遵循的关系,常用来验证模型的稳定性和一致性。
三、蜕变关系
我们了解了蜕变测试的流程,接下来就了解蜕变的关系。这也是蜕变测试的难点和核心的关键点。
这里我就以我的工作(目标检测,计算机视觉)为例,常见的蜕变关系,如下:
1.旋转不变性
输入:原始图像、旋转(90度、180度、270度)后的图像
预期输出关系:旋转前后的分类结果应保持一致。
2.缩放不变性
输入:不同尺度缩放后的图像(放大或缩小)
预期输出关系:缩放前后的分类结果应保持一致。
3.翻转不变性
输入:水平翻转或垂直翻转后的图像
预期输出关系:翻转前后的分类结果应保持一致。
4.亮度不变性
输入:变化亮度后的图像(增加或减少亮度)
预期输出关系:亮度变化前后的分类结果应保持一致。
5.对比度不变性
输入:调整对比度后的图像(增加或减少对比度)
预期输出关系:对比度变化前后的分类结果应保持一致。
6.噪声鲁棒性
输入:添加随机噪声后的图像
预期输出关系:噪声前后的分类结果应保持一致。
7.颜色空间转换不变性
输入:转换为不同颜色空间(如灰度、HSV)的图像
预期输出关系:转换前后的分类结果应保持一致。
当然,除了目标检测/计算机视觉领域之外, NLP领域常见的蜕变关系如下:
1.同义词替换不变性
输入:用同义词替换部分词语后的文本
预期输出关系:同义词替换前后的分类结果应保持一致。
2.拼写错误鲁棒性
输入:文本中包含少量拼写错误
预期输出关系:拼写错误前后的分类结果应保持一致或相近。
3.句子重组不变性
输入:重组句子内词语顺序但不改变句子语义后的文本
预期输出关系:重组前后的分类结果应保持一致。
4.文本形式变换不变性
输入:文本大小写变换或加标点符号后的文本
预期输出关系:变换前后的分类结果应保持一致。
5.负载增强不变性
输入:添加或去除文本中的冗余信息(如插入无实质意义的词语)
预期输出关系:冗余信息前后的分类结果应保持一致。
关于蜕变关系,我就说到这里了,关于其他(数据增强和改进生成、抽象层次等)蜕变关系,大家可以在留言区进行补充。
四、测试流程
模型蜕变测试可应用于机器学习模型的黑盒测试。蜕变测试流程涉及到:
1.定义蜕变关系:选择一组输入以及这些输入的变体,确定这些输入变体与原始输入之间的关系,以及改变前后模型输出结果应该满足的关系
2.构建测试案例:利用某些变换(如添加噪声、改变特征值等)生成多个输入变体,
3.执行测试案例:将原始输入和变体输入分别输入模型,获得输出结果,并检查这些输出结果是否满足定义的蜕变关系。
4.分析结果:分析模型输出,判断是否存在不符合蜕变关系的情况,如果有不符合的情况,进一步分析可能的原因,如数据分布、模型训练不足、特征工程问题等。
同样,为了便于更好的对蜕变测试的理解, 我这里以流程图与实例结合。
例子:假设年龄与薪资收入关系模型,输入的年龄与模型算法系统的输出相关。
模型算法输出Y 是薪资收入可行性估计。随着年龄的增长,薪资收入可能性也会增加。
所以,这里的就建立了蜕变关系,即:X与Y之间的蜕变关系,如下图:
假设X1 = 28,输出Y1 = 0.4 ,基于这已知模型预测结果,我们设计测试案例:
1、X2 = 20 , Y2 的值应该小于Y1;
2、X3 = 45 ,Y3的值应该大于Y1 ;
3、X4 = 33,Y4 的值应该大于Y1 小于Y3 ;
4、X5 = 120 ,Y5 的值,理论上应该是异常值;
通过上述这例子,我们就能更好的理解蜕变测试,也能更好的理解蜕变关系了。
(当然,这个例子,是相对值,咱也不用特意的转牛角尖,说这例子没有考虑一些特殊情况,特殊情况不在这个例子中。)
五、总结
在这篇,我详细的介绍了蜕变关系的概念、蜕变测试流程及实例展示。目的就是为了让我们更容易理解蜕变关系。
在模型算法测试中,蜕变测试是一种有效验证模型稳定性和鲁棒性的测试方法。
基于各类常见的蜕变关系保证了在真实场景中,模型能适应数据的变化和噪声,是提升模型质量的有效方法。
当然,构建与定义蜕变关系构成了测试过程中的最大挑战与核心环节,这一过程不仅需要专业知识做支撑,更依赖于项目实践中不断积累的经验总结与持续优化。
作者:Carl_奕然