一句话:通过 Stack Overflow 与 GitHub 数据实证刻画深度学习库缺陷的类型、根因、影响与反模式。
深度学习开发者常依赖库和工具构建应用,但对其软件缺陷特征缺乏系统理解。本文分析 Stack Overflow 的 2716 条高质量帖子,以及 GitHub 上 Caffe、Keras、TensorFlow、Theano 和 Torch 五个流行库的 500 个缺陷修复提交,考察缺陷类型、根因、影响、流水线易发阶段和常见反模式。结果显示,数据缺陷与逻辑缺陷是最严重的缺陷类型,出现频率超过 48%;主要根因是错误模型参数(IPS)和结构低效(SI),出现频率超过 43%。研究还发现库使用中存在一些常见反模式,可指导更好的平台、调试机制、开发实践及分析验证框架。
Deep learning has gained substantial popularity in recent years. Developers mainly rely on libraries and tools to add deep learning capabilities to their software. What kinds of bugs are frequently found in such software? What are the root causes of such bugs? What impacts do such bugs have? Which stages of deep learning pipeline are more bug prone? Are there any antipatterns? Understanding such characteristics of bugs in deep learning software has the potential to foster the development of better deep learning platforms, debugging mechanisms, development practices, and encourage the development of analysis and verification frameworks. Therefore, we study 2716 high-quality posts from Stack Overflow and 500 bug fix commits from Github about five popular deep learning libraries Caffe, Keras, Tensorflow, Theano, and Torch to understand the types of bugs, root causes of bugs, impacts of bugs, bug-prone stage of deep learning pipeline as well as whether there are some common antipatterns found in this buggy software. The key findings of our study include: data bug and logic bug are the most severe bug types in deep learning software appearing more than 48% of the times, major root causes of these bugs are Incorrect Model Parameter (IPS) and Structural Inefficiency (SI) showing up more than 43% of the times.We have also found that the bugs in the usage of deep learning libraries have some common antipatterns.