admin管理员组

文章数量:1530984

本周阅读了论文《A Comprehensive Study on Deep Learning Bug Characteristics》,以下总结论文要点。

研究数据来源:

  • 来自Stack Overflow的高质量帖子:可以了解开发人员在使用深度学习库构建软件时遇到的错误。
  • Github关于5个深度学习库(Caffe, Keras, Tensorflow, Theano, Torch)的错误修复提交:可以了解在开源软件中发现并修复的错误。

问题:

RQ1(bug类型):哪些类型的bug更常见?

RQ2(根本原因):bug的根本原因?

RQ3(bug影响):bug的主要影响?

RQ4(bug易发阶段):哪些深度学习流程阶段更容易受到bug的影响?

RQ5(共性):这些bug遵循共同的模式吗?

RQ6(bug进化):bug模式如何随着时间推移而改变?

结论:

  • 大多数深度学习错误是数据错误和逻辑错误;
  • 其主要根源是错误的模型参数(IPS)和结构低效(SI);
  • 大多数错误发生在深度学习流程的数据准备阶段;
  • 错误的分布和反模式之间存在很强相关性。

方法:

数据收集-分类-为bug贴标签-bug分类(API bug、coding bug、data bug、structural bug、non model structural bug)-bug根本原因分类(API间不兼容、缺少类型检查、API改变、API误用、与计算模型混淆、错误的模型参数或结构、其他、结构低效、未对齐张量[UT]、文档错误)-bug造成的影响分类(表现不佳、崩溃、数据冲突、挂起、功能不正确、内存越界)

RQ1:

实验结果:

1. data bug出现得最频繁

2. caffe的structural logic bug占比最高

3. torch、keras、tf的API bug频率较高

4. 所有错误类型在所有5个库的GitHub和Stack Overflow中都有类似的模式

RQ2:

实验结果:

5. IPS是最常见的根本原因

6. keras、caffe的SI多

7. UT是torch最主要的bug原因

8. theano有30%的bug源自缺少类型检查

9. tf和keras分别有9%和7%的bug源自API改变

10. 除API误用外,所有其他bug根本原因在Github和Stack Overflow中都有相似的模式

11. 在与模型相关的bug中,SI和IPS占比显著

RQ3:

实验结果:

12. 绝大部分bug导致崩溃

13. 在5个库中都有一定比例的bug导致表现不佳

14. 也有一定比例的bug导致功能不正确

15. GitHub和Stack Overflow中的bug影响相同

RQ4:

实验结果:

16. 绝大多数bug发生在数据准备阶段

17. 其次是训练阶段

18. 再其次是选择模型阶段

RQ5:

实验结果:在错误类型方面,库之间有接近1的强相关系数存在,而caffe与其他库相关性非常弱。19. tf和keras的反模式分布相似,而torch不相似

RQ6:

实验结果:

20. keras、caffe、tf中structural logic bug呈增长趋势

21. 自2015年来,data bug缓慢下降(除torch外)

本文标签: 缺陷深度特征