论文标题
修复深度神经网络:修复模式和挑战
Repairing Deep Neural Networks: Fix Patterns and Challenges
论文作者
论文摘要
对应用深神经网络(DNN)的重大兴趣激发了支持使用DNN的软件的工程。使用DNNS的修复软件是一种无误的SE需求,而自动化工具可能是有益的;但是,我们并不完全了解手动修复DNN时使用的修复和模式的挑战。自动维修工具应提出哪些挑战?哪些自动化可以帮助开发人员的维修模式?为了构建自动化错误维修工具,应将哪些修复模式分配给更高的优先级?这项工作对错误修复模式进行了全面研究,以解决这些问题。我们研究了415个堆栈溢出的维修和Github的555个维修工作,用于五个流行的深度学习库Caffe,Keras,Tensorflow,Tensorflow,Tensorflow,Theano和Torch,以了解维修和错误修复模式中的挑战。我们的主要发现表明,与传统的错误修复模式相比,DNN错误修复模式是独特的。最常见的错误修复模式是修复数据维度和神经网络连接。 DNN错误修复有可能引入对抗性漏洞; DNN错误修复经常引入新错误;开发人员在修复错误时面临的主要挑战是DNN错误本地化,训练有素的模型的重复使用以及应对频繁的发行版。我们还贡献了667 DNN(错误,维修)实例的基准。
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.