如果你的机器学习模型在坚持测试数据集上的正确性得分很高,那么在生产中部署它安全吗?
所有的模型都是错误的,但有些是有用的。
-- 乔治·伯克斯(英国著名统计学家)
但我要问的问题是:更正确的模型更有用吗?
最近,我们为一位客户培训了语音识别,其准确率高于给定目标。在仔细检查错误后,我们发现该模型在转录数字方面做得特别差。显然,仅仅评估模型的准确性是不足以决定模型是否足够好,可以部署。
模型评估与模型测试
在机器学习中,我们主要关注模型评估:在看不见的坚持测试数据集上总结模型正确性的度量和图。
另一方面,模型测试是为了检查模型的学习行为是否与“我们期望的”相同。它不像模型评估那样严格定义。通过模型误差和特征误差进行组合(就像我在语音识别中发现的数字问题一样)只是一种测试。
有关训练前和训练后的概述,请参阅Jeremy Jordan的机器学习系统的有效测试。有关相同的一些示例测试用例,请参阅:Eugene Yan的《如何测试机器学习代码和系统》。
模型解释性(Explainability)或模型可解释性(Interpretability)
人类可以在多大程度上理解模型的结果,并可以解释其决策“逻辑”。至少对于非DNN模型来说,这是测试中非常重要的一部分。
10种ML测试
Srinivas Padmanabhuni博士在针对您的AI/ML/DL模型的10个测试中列出了10种类型的测试,包括模型评估、模型测试、推理延迟等:
- 随机测试与训练验证测试分割(Randomized Testing with Train-Validation-Test Split:):在未发现的数据上测量模型准确性的典型测试。
- 交叉验证技术(Cross-Validation Techniques):测量数据分割的多次迭代的性能,例如K-Fold、LOOCV、Bootstrap。
- 可解释性测试(Explainability Tests):当模型(如DNN)不可解释时很有用。主要有两种类型:模型不可知测试和模型特定测试。
- 安全测试(Security Test):防止使用中毒数据欺骗模型的对抗性攻击。再次,有两种变体:白盒(具有模型参数知识)和黑盒。
- 覆盖测试(Coverage Tests):一种系统的方法,以确保看不见的数据足够多样化,涵盖广泛的输入场景。
- 偏见/公平性测试(Bias / Fairness Tests):确保模型不歧视任何人口学。
- 隐私测试(Privacy Tests):防止隐私攻击/侵犯。模型推断不应使计算出训练数据成为可能,并且推断的数据中不应嵌入PII。
- 性能测试(Performance Tests):模型推理是否发生在用例的延迟SLA内。
- 漂移测试(Drift Tests):防止概念/数据漂移。
- 代理测试(Tests for Agency):模型结果与人类行为的接近程度。
带有代码示例的详细示例
与Eugene Yan的文章相似,但篇幅更长,重点不同,代码示例更详细:
-
Testing ML Systems: Code, Data and Models (in Made With ML) by Gokul Mohandas
-
Snorkel Intro Tutorial: Data Slicing by Snorkel AI
总结
当谈到机器学习测试时,它与软件测试大不相同。它还没有像传统测试那样成熟和被广泛理解。
对于在生产中部署,您不应该只关注模型评估,还应该测试模型的切片、运行时性能、偏差、安全性等。
我们都在想办法测试机器学习模型。
最新内容
- 12 hours ago
- 14 hours ago
- 14 hours ago
- 3 days 5 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 14 hours ago
- 1 week ago
- 1 week ago