Deep Neural Networks (DNNs) are used in a wide variety of applications. However, as in any software application, DNN-based apps are afflicted with bugs. Previous work observed that DNN bug fix patterns are different from traditional bug fix patterns. Furthermore, those buggy models are non-trivial to diagnose and fix due to inexplicit errors with several options to fix them. To support developers in locating and fixing bugs, we propose DeepDiagnosis, a novel debugging approach that localizes the faults, reports error symptoms and suggests fixes for DNN programs. In the first phase, our technique monitors a training model, periodically checking for eight types of error conditions. Then, in case of problems, it reports messages containing sufficient information to perform actionable repairs to the model. In the evaluation, we thoroughly examine 444 models -53 real-world from GitHub and Stack Overflow, and 391 curated by AUTOTRAINER. DeepDiagnosis provides superior accuracy when compared to UMLUAT and DeepLocalize. Our technique is faster than AUTOTRAINER for fault localization. The results show that our approach can support additional types of models, while state-of-the-art was only able to handle classification ones. Our technique was able to report bugs that do not manifest as numerical errors during training. Also, it can provide actionable insights for fix whereas DeepLocalize can only report faults that lead to numerical errors during training. DeepDiagnosis manifests the best capabilities of fault detection, bug localization, and symptoms identification when compared to other approaches.
翻译:深神经网络(DNN) 用于多种应用。 然而, 与任何软件应用程序一样, DNN 应用程序都存在错误。 先前的工作发现, DNN 错误修正模式与传统的错误修正模式不同。 此外, 这些错误模型对于诊断和修正并非三重性, 原因是有各种解释错误。 为了支持开发者查找和修复错误, 我们提议了Deep Diagnosis, 这是一种新颖的调试方法, 将错误、 报告错误症状 和 DNNN 程序建议修补方法本地化。 在第一阶段, 我们的技术监测一个培训模式, 定期检查八类错误条件。 然后, 在出现问题时, 它报告含有足够信息的信息, 用于对模型进行可操作的修理。 在评估中, 我们彻底检查了 444 模式 - 53 真实世界, 并且由 AUTOTRAIINER 整理了391 。 与 UMLUAT 和 Declodicalization 相比, 深度诊断方法可以提供更高的准确性。 我们的技术比 EUTRAINN 方法更快地监测方法, 能够支持本地化的方法, 和本地化方法的报告类型。 在处理中, 我们的解算方法中的结果显示, 我们的解算方法中, 我们的解算方法只能能提供更多的方法报告。