机器学习 API 需要何种契约
软件工程
2023-07-28 v1 机器学习
编程语言
摘要
近期研究表明,机器学习(ML)程序容易出错,并呼吁为 ML 代码引入契约。契约(如契约式设计方法中的契约)有助于记录 API 并帮助 API 使用者编写正确的代码。问题在于:何种契约能为 API 使用者提供最大帮助?我们特别感兴趣的是,何种契约能帮助 API 使用者在 ML 流水线的更早阶段捕获错误。我们描述了一项针对 Stack Overflow 上四个最常被讨论的 ML 库(TensorFlow、Scikit-learn、Keras 和 PyTorch)帖子的实证研究。对于这些库,我们的研究提取了 413 条非正式的(英文)API 规范。我们利用这些规范来理解以下问题:ML 契约违反的根本原因和后果是什么?ML 契约违反是否存在常见模式?理解 ML 契约何时需要高级别的 ML 软件专业知识?在 API 层面检查契约是否有助于在 ML 流水线早期阶段检测违规?我们的关键发现是,ML API 最常被需要的契约要么是检查 API 单个参数的约束,要么是检查 API 调用的顺序。软件工程界可采用现有的契约挖掘方法来挖掘这些契约,以促进对 ML API 的深入理解。我们还注意到需要结合行为与时态契约挖掘方法。我们报告了所需 ML 契约的类别,这可能有助于契约语言的设计者。
引用
@article{arxiv.2307.14465,
title = {What Kinds of Contracts Do ML APIs Need?},
author = {Samantha Syeda Khairunnesa and Shibbir Ahmed and Sayem Mohammad Imtiaz and Hridesh Rajan and Gary T. Leavens},
journal= {arXiv preprint arXiv:2307.14465},
year = {2023}
}
备注
Accepted for publication at EMSE (Empirical Software Engineering) Journal, 2023