一句话:通过实证研究总结 DNN 缺陷修复模式与挑战,并发布 667 个修复实例基准。
本文研究深度神经网络(DNN)程序缺陷修复的挑战与模式。作者从 Stack Overflow 收集 415 个修复,从 GitHub 收集 555 个修复,覆盖 Caffe、Keras、TensorFlow、Theano、Torch 五个流行深度学习库,归纳 DNN 漏洞修复模式。关键发现包括:DNN 修复模式不同于传统修复;最常见的是修复数据维度和网络连接性;修复可能引入对抗脆弱性;修复常引入新 bug;缺陷定位、训练模型复用和频繁版本发布是主要挑战。作者还贡献了包含 667 个 DNN(bug, repair)实例的基准。
Significant interest in applying Deep Neural Network (DNN) has fueled the need to support engineering of software that uses DNNs. Repairing software that uses DNNs is one such unmistakable SE need where automated tools could be beneficial; however, we do not fully understand challenges to repairing and patterns that are utilized when manually repairing DNNs. What challenges should automated repair tools address? What are the repair patterns whose automation could help developers? Which repair patterns should be assigned a higher priority for building automated bug repair tools? This work presents a comprehensive study of bug fix patterns to address these questions. We have studied 415 repairs from Stack Overflow and 555 repairs from GitHub for five popular deep learning libraries Caffe, Keras, Tensorflow, Theano, and Torch to understand challenges in repairs and bug repair patterns. Our key findings reveal that DNN bug fix patterns are distinctive compared to traditional bug fix patterns; the most common bug fix patterns are fixing data dimension and neural network connectivity; DNN bug fixes have the potential to introduce adversarial vulnerabilities; DNN bug fixes frequently introduce new bugs; and DNN bug localization, reuse of trained model, and coping with frequent releases are major challenges faced by developers when fixing bugs. We also contribute a benchmark of 667 DNN (bug, repair) instances.