弃用机器学习API用法的特征刻画与自动更新
软件工程
2020-11-11 v1
摘要
由于AI应用的兴起,机器学习库变得极易获取,而Python是编写这些库最常用的编程语言。机器学习库往往定期更新,可能弃用现有API,使得开发者有必要更新其用法。然而,更新弃用API的用法通常并非开发者的优先事项,导致弃用API的广泛使用,使库用户暴露于漏洞问题。本文中,我们构建了一个工具来自动化这些更新。我们首先开展了一项实证研究,以更好地理解Python中弃用机器学习API用法的更新方式。该研究涉及来自Scikit-Learn、TensorFlow和PyTorch的112个弃用API的数据集。我们发现了与更新操作(即执行迁移所需的操作)、API映射(即弃用API及其对应更新API的数量)和上下文依赖性(即执行迁移时是否需要考虑周围上下文)相关的弃用API迁移维度。受实证研究发现的指导,我们创建了MLCatchUp,一种自动化Python弃用API用法更新的工具,它通过比较弃用和更新的API签名自动推断API迁移变换。这些变换用领域特定语言(DSL)表达。我们使用从公共GitHub仓库收集的包含258个文件、514处API用法的测试数据集评估了MLCatchUp。在该评估中,MLCatchUp达到了86.19%的准确率。我们通过添加一个特性进一步提升了其准确率,该特性允许其接受额外用户输入以在DSL中指定上下文相关API迁移的变换约束,此时MLCatchUp达到了93.58%的准确率。
引用
@article{arxiv.2011.04962,
title = {Characterization and Automatic Update of Deprecated Machine-Learning API Usages},
author = {Stefanus Agus Haryono and Ferdian Thung and David Lo and Julia Lawall and Lingxiao Jiang},
journal= {arXiv preprint arXiv:2011.04962},
year = {2020}
}