能够使用代码实现最新的论文对于数据科学家来说是一项极具竞争力的技能。

如果想了解黑匣子内部发生了么,提高创造力或成为第一个将最新科学研究带入业务的开发人员 这篇文章应该可以帮到你。

我们将讨论如何选择一篇“好”的论文作为开始,这对于初学者来说会比较容易;本文中将概述典型的论文结构以及重要信息的位置;并提供有关如何处理和实现论文的分步说明,并分享在遇到困难时可能有所帮助的链接。

从哪儿开始?

如果你想让你的学习顺利无压力的开始,应该找一篇“好”的论文。作为起点建议选择一篇描述你熟悉概念的并且被引用度高的论文。

高引用率的旧论文通常解释了非常基本的概念,这些概念也是最近研究的基础,这些基础知识会更好的帮你理解最新的论文。但是要记住对于深度学习,2016 年之前的论文已经过时了。引用量高的论文意味着许多其他科学家能够理解并使用该方法,也侧面说明了该方法是可重复的。要找出特定论文的引用次数,可以在 Google Scholar 中搜索它。引用次数超过 1000 次的论文被认为是高被引论文。

最后,较旧的论文描述了更简单的概念,这对初学者来说是一个很大的优势。

论文结构:忽略什么,读什么

典型的深度学习论文具有以下结构:

  • Abstract
  • Introduction
  • Related Work
  • Approach in Details
  • Experiments
  • Conclusion
  • References

摘要Abstract:论文的整体内容摘要,它很短。重点介绍为什么这种方法比以前的方法更好,以及它的新颖之处。摘要会发布在会议日程表和在线归档(如 Arxiv)中,它们的唯一目的是说服你阅读这篇特定的论文。如果你已经选择了一篇论文来阅读,可以随意跳过摘要,但是如果你打算进行论文的创作,这个部分是你论文“营销”的关键。

引言Introduction:是重要的必读部分。它提供了论文中提到方法的高级概述。通常它不是太技术性并且非常“用户友好”,因此如果阅读的时候请先阅读这部分,因为可以让我们在深入研究算法细节之前先热身。

相关工作Related Work:所有科学论文(以及深度学习)都是相关的,因为每一项发现都建立在之前数十项甚至数百项研究工作的基础之上。相关工作概述是每篇论文的必填部分。作者必须确保他们的工作是相关的,并且解决了以前论文中的重要的问题的同时不会重复其他研究人员之前所做的工作。这是学术界的一个重要部分——但对我们(从业者)来说不是,所以如果知识阅读和实现论文可以跳过,但是如果编写改进改论文实现的方法的新论文,这里一定要看。(或者有时你可能正在寻找该领域的其他基本论文/概念来阅读,这里也可以给你新的思路)

详细方法Approach in Details:这是论文中最复杂和最具挑战性的部分,也是最重要的部分(一定要阅读!)。不要期望过高,也不要期望通过一次阅读就了解所有内容。因为这是在编码时一次又一次仔细阅读理解的部分,所以我们的“乐趣”就从这里开始。

不要害怕复杂的公式,在大多数情况下,它们解释了基本概念。这就是研究人员以他们的形式“开的玩笑”。对于论文的实现我们甚至不用关注他们,当然如果你想改进论文,这些复杂的公式还是需要用的。看不懂也没关系多看看论文,用不了多久你就会习惯了🤣。

在阅读论文时,必须获取可能需要的所有信息,例如:数据预处理技术、详细的神经网络架构、损失函数、训练技巧和后处理。如果阅读了几次都不太明白也没关系,后面我会告诉你怎么做。

实验Experiments:这一节充满了图表、表格和图像。通常它包含有关数据集、训练和指标评估的详细信息,以及对模型在各种超参数下的表现以及与其他论文中的最新方法进行比较的回顾。如果论文是关于计算机视觉的,也会有模型预测的可视化。这部分可以选择感兴趣部分阅读。

结论Conclusion:是对论文的总结,有时包含作者对未来研究的想法。小学作文中老师都说过要扣题对吧,这部分就是要与前面的摘要和引言呼应。所以跳过它没什么问题。

参考文献References:学术界有一个严格的规则:如果研究人员使用属于其他人的想法,他/她必须添加对原始作品的引用。当论文中已经解释了这些参考文献中的概念或只是不重要时,可以跳过大多数此类参考文献。但是有时作者可能会说:“我们使用了论文 [2] 中描述的模型架构,只修改了最后一层的激活”。在这种情况下,您需要找到并阅读论文 [2] 以完全理解该方法。

现在——是时候阅读论文了。在接下来的 30 分钟里,你应该高度专注,因为你正潜入一个有挑战性并且令人兴奋新世界。

去哪里寻求帮助?

对许多人来说,“实现论文”意味着“快速阅读论文,然后在互联网上寻找现成的实现”(paperwithcode:说的对😘)。这是的确是最简单的方法,但不是有益的方法。我强烈建议你从头开始,不要马上寻找现成的解决方案。至少自己做些事情因为那才是对你的技能提高的关键。

即使你是一个完全初学者,总有一些事情你可以做:

下载数据集,研究它,对数据集做EDA,写一个数据加载器等等。这是一项简单而又容易的任务,但一旦完成它,你就会有信心并帮助你继续前进:

开始编写模型架构,简化或跳过你不理解的部分。例如这里有一个奇怪的权重初始化器(跳过它,使用通用甚至默认的那个)。以前从未使用过PReLU激活(那就先用ReLU)。你现在的目标是创建一个可训练的模型把流程跑通(有输入,有输出,可以进行训练),而不是要训练出论文的模型或表现更好的模型。在论文中有一个自定义的损失:用一个类似的损失替换它。对优化器、数据扩充、后处理进行同样的处理——简化或跳过。这样你最终会得到一个原型。你甚至可以使用这个原型跑通完整的流程,看看它如何工作-也许结果不会那么糟糕🙂

下一步就是填补缺口,修复工作不好的部分。再次阅读论文仔细理解你之前漏掉的概念。如果你被卡住了也不要生气。因为你已经有原型了,这是一个很大的进步你已经学到了很多。你甚至可以给论文的作者写信,因为在学术界大部分的论文作者还是非常的友善的。

觉得完全卡住了?那就进行总结一下具体是哪里的问题,有重点的提高相关的知识。在下一篇论文,你会写得更好,因为这是一个学习的过程。文章的开始建议选一篇被高度引用的论文。现在你就能感受到好处了。流行的论文在互联网上有几十种实现,(paperwithcode:我又来了🙃),这里推荐paper With Code的原因是它包含了可能所有流行论文的代码实现。这些有的实现是官方的,有的来自像你我这样的研究人员。例如,word2vec在PyTorch和Tensorflow中有67个paper With Code实现。

您可以复制粘贴,但一定要花时间来理解代码。

最后总结

  1. 选择一篇被高度引用的旧论文。
  2. 仔细阅读它并试着获取尽可能多的信息——数据准备、模型架构、损失函数和训练细节。
  3. 如果你不明白所有的事情,不要着急
  4. 通过跳过和简化你不理解的概念来创建一个原型。如果你的原型与论文中的方法相去甚远也没关系,但是要试着自己改进草稿。
  5. 在互联网上寻找文章和代码。复制粘贴,但要阅读和理解。
  6. 重复一篇新论文。然后感受第二次的感觉是多么的顺利🙂

真正的学习发生在步骤2-5上,所以你在这里花的时间越多,你学得就越快。好运!

作者:Olga Chernytska


deephub
119 声望92 粉丝