Skip to main content
QUICK REVIEW

[论文解读] Repairing Deep Neural Networks: Fix Patterns and Challenges

Johirul Islam, Rangeet Pan|arXiv (Cornell University)|May 3, 2020
Adversarial Robustness in Machine Learning参考文献 38被引用 7
一句话总结

本文基于来自 Stack Overflow 和 GitHub 的五个 DNN 库(Caffe、Keras、TensorFlow、Theano 和 Torch)中 667 个(错误,修复)实例,对深度神经网络(DNN)错误修复模式进行了全面研究。研究识别出独特的修复模式,特别是数据维度和连接性修复;指出诸如对抗性漏洞和引入新错误等风险;揭示了错误定位、模型复用以及库版本快速发布等关键挑战,并为未来自动化修复研究贡献了一个公开可用的基准。

ABSTRACT

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.

研究动机与目标

  • 理解在手动修复深度神经网络(DNN)软件错误时所采用的常见模式。
  • 识别开发者在修复 DNN 错误时面临的关键挑战,例如错误定位、模型复用以及频繁的库更新。
  • 评估 DNN 错误修复是否会引入新漏洞或回归问题,特别是对抗性漏洞。
  • 通过识别高优先级的修复模式和结构性挑战,为自动化 DNN 修复工具的设计提供依据。
  • 为未来 DNN 软件工程研究贡献一个公开可访问的 667 个(错误,修复)实例基准。

提出的方法

  • 从 Stack Overflow 收集了 415 个 DNN 错误报告,从 GitHub 收集了 555 个错误报告,覆盖五个主要 DNN 库:Caffe、Keras、TensorFlow、Theano 和 Torch。
  • 从 Stack Overflow 中选取并分析了 320 个修复片段(被采纳的答案和高分回复),从 GitHub 中选取并分析了 347 个修复片段(错误修复提交)。
  • 采用开放式编码方法,通过迭代编码和验证开发的自定义分类体系,对手动标记和分类修复模式。
  • 对错误类型、库和修复模式进行对比分析,以识别重复出现的主题和差异。
  • 通过分析修复是否引入了新错误或对抗性漏洞,评估修复的安全性。
  • 发布了一个包含 667 个(错误,修复)对的公开基准,以支持可复现性和未来工具开发。

实验结果

研究问题

  • RQ1RQ1:DNN 软件中最常见的错误修复模式是什么?
  • RQ2RQ2:不同类型的 DNN 错误是否需要不同的修复模式?
  • RQ3RQ3:DNN 错误修复模式在不同 DNN 库之间是否一致?
  • RQ4RQ4:DNN 错误修复是否会引入新错误或对抗性漏洞?
  • RQ5RQ5:开发者在修复 DNN 错误时面临的主要挑战是什么?

主要发现

  • 最常见的 DNN 错误修复模式是修复数据维度不匹配问题以及纠正神经网络连接性问题,例如断开或缺失的层。
  • DNN 错误修复模式与传统软件错误修复模式显著不同,结构性问题和数据相关问题占主导地位。
  • 大量 DNN 修复引入了新错误,表明修复过程中存在较高的回归风险。
  • DNN 修复可能引入对抗性漏洞,尤其是在修改输入维度或模型架构时。
  • 主要挑战包括 DNN 错误定位困难、由于缺乏行为洞察导致训练模型复用性差,以及难以跟上库的快速发布节奏。
  • 本研究贡献了一个公开可用的 667 个(错误,修复)实例基准,支持未来自动化修复研究和工具开发。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。