背景
深度学习是热门的核心技术,然而深度学习的测试手法并不丰富。对比通用软件测试的诸多测试手法, 深度学习大部分测试场景使用的准确率和测试集损失值,过于浮于表面,它们无法包含对模型更多象限的考量和模型全面的认知。
软件测试界的观点是: 测试黑盒的深度学习算法模型可以借鉴于软件工程(SE)的覆盖率方法。通读意义上的,SE测试覆盖率追求最大程度覆盖一个软件源码在限定的测试用例中是否覆盖。 更高的覆盖率,奠定了更大发现系统缺陷的可能。
类比思想
模型的本质可视为其参数,其中包括权重、残差等。模型进行前向推理的过程类比于一个程序针对某个输入产生输出的过程,每一层的输出值(或者说是激活值)就相当于各个调用函数的输出。在前向神经网络中,输出由上一层的多个神经元按权重决定。然而,对于个体例子的输出,例如将车分类到正确的标签上,每一层中只有少数的神经元提供了激活值,这些神经元被称为被覆盖的神经元。
在低神经元覆盖率下,比如使用数量较少的测试数据集,只有部分神经元被激活,因此测试结果只能反映这些神经元组合下功能的正确性。然而,如果更多的神经元被激活,模型的正确性就无法保证。当某个测试数据集中的测试案例能够激活模型中尽可能多的神经元时,我们通常将其称为“覆盖率高”的测试数据集。增大神经元覆盖率是一种有效的方法,可以揭示模型中的潜在问题。
本文探讨了深度学习模型测试中的神经元覆盖率方法,与传统软件工程测试相比较,强调了这种方法在全面评估模型性能和发现潜在问题上的优势。同时,文中提到了DeepXplore和DeepGauge的研究,以及覆盖率测试与梯度方法的优缺点,指出在实际应用中需平衡成本和效率,以选择合适的测试策略。
最低0.47元/天 解锁文章
247

被折叠的 条评论
为什么被折叠?



