从深度学习研究论文中自动生成可执行源代码

大部分研究论文缺乏相应的开源实现,在不同的库中复现研究论文的实现也是一大难题。因此,这篇论文的作者提出一种新型算法,可以自动解析论文,提取文中描述的深度学习模型设计,并生成 Keras 和 Caffe 可执行源代码,在模拟数据集上的实验表明该框架对流程图内容提取的准确率达到了 93%。

过去十年,深度学习在人工智能领域飞速发展,自 2016 年以来就发布了 35800 篇研究论文。与论文一样不断增长的还有研究者和从业者真实的努力和奋斗。在近期的一次 AI 会议 NIPS 2016 上,提交论文中出现最多的主题(~685/2500)是「深度学习或神经网络」。然而,大部分研究论文缺乏相应的实现。在 NIPS 2016 中,只有约 18%(101/567)的论文具备实现过程。研究论文的实现至少需要软件工程师数天的时间,假设他们在具备深度学习领域的有了解的话(Sankaran et al. 2011)。

因此,这篇论文的作者提出一种新型算法,可以自动解析论文,提取文中描述的深度学习模型设计。该设计以抽象计算图的形式呈现,独立于实现库和语言。最后,利用该抽象计算图在多个库中生成源代码。

这篇论文的主要研究贡献为:

1. 通过解析论文中的图表自动理解深度学习模型设计的技术;

2. 利用深度学习模型设计的抽象计算图在 Keras 和 Caffe 中生成源代码;

3. 为 5000 篇 arXiv 论文自动生成模型设计,构建一个 UI 系统,从而以众包的方式编辑它们;

4. 在包含 216000 个深度学习模型可视化图的模拟数据集上,使用手动定义的语法评估论文提出的方法,准确率超过 93%。


论文地址:https://arxiv.org/abs/1711.03543

深度学习领域涌现了大量研究论文,使得对现有研究的复现和使用成为一项挑战。原因在于缺乏作者提供的开源实现。此外,将研究论文在另一个库中重新实现也是一项非常困难的任务。为了解决这些问题,我们提出了一种新的可扩展方法 DLPaper2Code,用于提取和理解研究论文中的深度学习设计流程图和表格,并将它们转换为抽象的计算图。提取出来的计算图会实时在 Keras 和 Caffe 中被转换为可执行的源代码。我们创建了一个类似于 arXiv 的网站,并在上面公开发布了 5000 篇研究论文的自动生成设计。生成设计可以用众包的方式使用一种直观的拖拽式 UI 框架进行评价和编辑。为了评估我们的方法,我们用手动定义的语法创建了一个包含超过 216000 个有效的设计可视化图的模拟数据集。在模拟数据集上的实验表明,我们提出的框架对流程图内容提取的准确率达到了 93%。


图 1:DLPaper2Code 的框架,用于提取和理解论文中的深度学习设计流程图和表格,在两个不同的平台 Keras 和 Caffe 上生成可执行的深度学习源代码。

我们人工观察了研究论文中的 3000 余张图像,将深度学习模型设计图分为 5 个大类,如图 2 所示。


图 2:五大类深度学习模型设计图。


 图 3:从复杂图中进行流程图检测的方法图示(Szegedy et al. 2017)(AAAI 2017),(b)节点/层检测,(d)边缘检测。

在一个行优先表格中,每一行对应深度学习设计流程图中的一层,如图 4 所示。类似的,在一个列优先的表格中,每一列对应该层的其它参数。层的命名通过匹配一个手动设计的词典提取出来。此外,参数的命名通过将一行或一列的标头映射到该层对应的预定义参数命名列表提取出来。因此,整个深度学习设计流程是从一个表格连续地提取出来的。


图 4:该表展示了和 Parkhi et al. 2015 中提到的 tabular 格式一样的深度学习设计流程图。

此外,推断引擎具备高度灵活性,允许简单的扩展和添加新层定义。推断引擎向 Pooling2D 层的词典映射示例,如下图所示。


图 5:Pooling2D 层图示,显示推断引擎的规则库,将抽象的 JSON 格式转换成 Caffe protobuf 和 Keras python 代码。


表 1:用该语法创建为当前层定义可能的下一层列表的有效深度学习设计模型。


图 5:五个分类器识别论文中深度学习设计流程图的性能。


图 8:一个直观的拖拽式 UI 框架,可以编辑提取的模型设计,并将其公开。

利用该研究,论文中的深度学习模型设计可以被自动提取。利用这个直观的拖拽式 UI 编辑器,我们可以对提取出的模型设计图进行手动编辑和完善。总之,该论文提出的 DLpaper2Code 框架从论文中提取图表信息,并将其转换成源代码。

理论论文自动编程论文解析
2