【导读】近日IBM研究院提出从深度学习相关论文中自动生成深度学习代码,使用这项研究,在研究论文中提出的DL设计可以被自动提取,然后使用一种新颖的深度学习UI编辑器DARVIZ,可以手动修改和完善提取的设计。对于提取的DL设计,其源代码可以在 Keras(Python)和 Caffe(prototxt)中实时生成。所提出的DLpaper2Code框架从研究论文中提取图形和表格信息并将其转换为源代码,未来可能对DL研究的重现性产生重大影响。
论文:DLPaper2Code: Auto-generation of Code from Deep Learning Research Papers
论文链接:https://arxiv.org/pdf/1711.03543.pdf
DARVIZ网站链接:https://darviz.mybluemix.net/
▌摘要
随着深度学习相关论文的丰富,对现有工作的重现和采用成了一个挑战,因为很多论文的并不会开放源代码。此外,在不同的框架上重现研究论文是一项颇为艰巨的任务。为了解决这些挑战,我们提出了一种新颖的可扩展方法DLPaper2Code,这个方法用于提取和理解论文中提供的深度学习设计流程图和表格,并将其转换为抽象的计算图。然后将抽取的计算图实时地转换为Keras 和 Caffe可执行源码。我们创建了一个类似arXiv的网站,将5000份研究论文自动生成的设计公开。生成的设计可以使用直观的拖放UI框架以众包的方式进行评级和编辑。为了评估我们的方法,我们制造了一个仿真数据集,数据集使用手动定义的语法创建了具有超过216000个有效可视化设计。仿真数据集上的实验表明,该框架的流程图内容提取的准确率达到93%以上。
▌引言
人工智能领域的深度学习方法在过去的十年间取得了惊人的成功,根据Google学术统计深度学习论文达到了35800篇。对于科研工作者或者工程师来说想紧跟着这股潮流真是件费劲的事。在最近的一次人工智能顶级会议NIPS 2016 上总共有总共有2500篇投稿,录用了大概685篇,而他们的主题都是“深度学习或者神经网络”。但是大部分被录用的论文都没有提供相应的实现代码,在NIPS 2016 上101/567也就是仅仅大概18%的的论文开源了他们的代码。对于深度学习并不精通的软件工程来说,实现论文中的代码往往要花费数天时间。
另外一个巨大的挑战是论文的代码实现采用了五花八门的框架,甚至多种编程语言,比如Tensorflow, Theano , Caffe, Torch , MXNet, DL4J, CNTK 以及一些封装框架像 Keras, Lasagne, 和 PyTorch。这些论文的公开的代码采用不同的框架是的他们之间没法直接相互借鉴。我们以“imagecaptioning”领域被引用最多的几篇论文为例:
1. Show and Tell(Vinyals et al. 2015): 原始论文用 Theano实现; https://github.com/ kelvinxu/arctic-captions
2. NeuralTalk2(Karpathy and Fei-Fei 2015): 原始论文用Torch实现; https://github. com/karpathy/neuraltalk2
3. LRCN (Donahueet al. 2015): 原始论文用Caffe实现; http://jeffdonahue.com/ lrcn/
由于这些论文用不同的框架实现,研究者很难直接的结合使用这些模型。此外如果一个工程师习惯使用基于java的框架(DL4J),直接使用上面的每一个框架都是一项艰巨的任务。因此我们我们强调了两项在深度学习领域容易被忽视的挑战:
1. 由于缺少对已有工作的公开代码实现,自动动手复现这些代码往往需要耗费大量的时间。
2. 现有的实现仅仅有一种或很少的几种框架实现,限制了和其他框架的兼容。
我们发现大部分论文要么采用一张图要么用一张表来解释他们模型的设计。因此在本文中我们提出一个新的算法来自动的解析一篇论文并提取出文中描述的深度学习模型。随后这个模型被表示成一个与具体框架无关的简要计算图。最后从这个深度学习模型简要计算图中自动的生成多种框架实现源代码。我们在5000 篇arXiv论文上自动产生出了他们的Caffe代码和Keras代码。但是如何评估这些生成的代码因为缺乏统一的标准而会产生争议。为了克服这个问题,我们模拟产生了了一个包含21600张用caffe或者Keras实现的模型结构图。为了产生深度学习模型的可视化结构图,我们手动的定义了DL模型的语法。由于我们产生的模型可视化图有着很大的差异性,很难和真正论文中的结构图区分开。我们的贡献主要有以下几点:
1. 通过解析深度学习论文中的图和表自动的理解深度学习模型的设计,
2. 从深度学习模型的简要计算图中自动的产生Keras和Caffe代码,
3. 自动的从5000篇论文中模型结构图并建立一个可以用众包方式编辑的用户界面。
4. 在这个使用手工定义语法生成的21600张模型结构图中,我们验证的结构图的匹配准确率超过95%
▌提出的方法
图 1:这是提出的系统框架图,首先从一篇深度学习的论文中提取和理解网络构造的计算图,然后在两个不同的平台上(Keras和Caffe)产生可执行的深度学习代码。
深度学习论文中模型结构的解释用图有的用表格。因此在我们提出的DLPaper2Code结构包含五个主要的部分,如图1 所示。
1)从论文中提取所有图和表。其中图和表的处理是相互独立的两个部分,但是主要流程都一样。
2)这些图除了包含模型结构以外还可能有一些是描述性的图或者是跟结果相关的一些表格,所以我们根据图或者表中是否有深度学习模型结构来对它们分类。当然还要进一步采用跟细粒度的分类器来判读是用图还是用表来表示模型结构的。
3)分别从图和表中提取图形化数据流程和文字的描述。
4)构建一个和框架无关的简要计算图。
5)根据计算图自动产生Caffe和Keras代码
图2是深度学习论文中形式各样的模型结构图
图3这是用表格来描述模型结构图
图4我们提出的从复杂的图形中进行流程检测方法
图5是最后生成的Keras代码和Caffe protobuf
使用提出的DLPaper2Code框架,我们从5000多篇下载的论文中提取它们深度模型设计框架。但是定量的分析生成的框架流程由于没有标准评价方法而很难实现。所以我们建立了一个类似于arXiv的网站,我们在上面提供了论文、原文中的模型设计图以及我们生成的模型设计图。我们把用户对提取的设计图的打分作为反馈来衡量自动生成效果,如图6所示。
图 6:一个类似arXiv的网站,网站有很多深度学习相关的论文,每一篇论文有其提取得到的网络结构图,以及产生的源代码。
而且用户可以采用拖拽的简单方式来编辑生成的结构图:
图 7:这是提出的系统框架图,首先从一篇深度学习的论文中提取和理解网络构造的流程图,然后在两个不同的平台上(Keras和Caffe)产生可执行的深度学习代码。
▌结论和后续研究
研究人员和开发人员不必再深入研究深度学习的研究论文。使用这项研究,在研究论文中提出的DL设计可以被自动提取。使用我们作为本研究的一部分而设计的基于UI的直接拖放编辑器,可以手动修改和完善提取的设计。对于提取的DL设计,其源代码可以在Keras(Python)和Caffe(prototxt)中实时生成。所提出的DLpaper2Code框架从研究论文中提取图形和表格信息并将其转换为源代码。目前,我们创建了一个类似arXiv的网站,其中包含5000篇研究论文的DL设计和源代码。为了评估我们的方法,我们制作了一个有108000个设计的模拟数据库,其中的设计都是通过某个提出的语法和相应的Keras和Caffe可视化验证得到。在总数据集中,所提出的使用NNet分类器的二分类获得99.9的准确度。总数据集包括216000个深度学习模型可视化图和28120个图表(这些可视化图和图表是在深度学习研究论文中却可视化的)。所提出的抽取通用计算图图形的方法使性能提升超过93%。
因为这项研究可能对DL研究的重现性产生重大影响,我们已经计划对拟议的方法进行大量可能的扩展:
1、本文提出的流程只检测layers (blobs)和图像边缘。 它可以扩展到检测和提取每个层的超参数值,使计算图更丰富的内容。
2、目前,我们用两个独立的 pipelines,分别用于从表格和图形中生成抽象计算图。结合多模源获得的信息可以提高提取的DL设计流程的准确性。
3、除了Keras和Caffe之外,整个DLPaper2Code框架可以扩展为支持额外的库,比如Torch,Tensorflow等。
4.更大的目标是提出一个在研究论文中代表DL模型设计的定义,实现统一性和更好的可读性。此外,未来的论文作者还可以在创建的网站上发布他们的设计,以便于访问社区。
论文链接:https://arxiv.org/pdf/1711.03543.pdf
网站链接:https://darviz.mybluemix.net/
作者开发的 Darviz 深度学习IDE:
特别提示-Anush Sankaran 博士论文下载:
请关注专知公众号