需要在文章开始说明一点,我本人并非机器学习专业,而是凭借着一直以来对机器学习领域怀抱着极大的兴趣,借助各种途径对机器学习领域有过一些粗浅的了解。因为工作的关系在短时间内阅读到机器学习在时间序列分析领域大量的论文。在如何有效阅读专业论文这一点上,我参考了别人的经验,结合自己实践,分享一些心得体会。

前期心理建设

dont_panic

首先明确一点,写论文的人通常是行业大牛,这些人在行业通常有长达数十年的浸淫。作者本人或许为写这篇论文花费了数年的时间。在开始阅读之前首先要摆正心态,放低期望、放松心情。机器学习和深度学习是一个前沿且复杂的领域,读不懂其中的内容是完全正常的,不用对此感到焦虑。

阅读顺序很重要

我把最重要的事放在开头:

不要拿到一篇论文就从头到尾开始读!!!

不要拿到一篇论文就从头到尾开始读!!!

不要拿到一篇论文就从头到尾开始读!!!

一篇论文通常由 标题关键词摘要正文(包含:研究背景、研究方法、实验步骤、结果分析讨论、总结)参考文献 这些部分构成。

面对一篇论文,首先应该判断这篇论文是否值得花时间阅读

粗读的第一阶段

首先是粗读论文,具体的做法是先看标题和关键词,接下来看摘要,接着直接跳到最后阅读结论。这样做的好处是能够在较短时间内对论文主旨有一定了解。知道作者用了什么方法,目地是解决什么问题,达到了怎样的效果。在这个阶段,一边阅读一边思考这篇论文对自己当下正在研究的话题有多大的参考价值,任何时刻,如果感觉到论文对自己参考价值不大,大可立即停下来,寻找下一篇。

粗读的第二阶段

在初步判断论文有阅读价值之后,也不要急着去看正文。回到开头的标题部分,把上一个步骤重复一遍。这一遍的阅读不但要留意更多的细节,而且应该做好笔记。这时候可以适当关注作者和作者所在的机构,所谓术业有专攻,一个学术研究者通常会深耕某一领域,如果你当下关注的话题与论文中提到的内容重合,那么大概率这个人或者所在机构所做的相关研究同样具有较高的参考价值。

在第二次阅读摘要的过程中,要提取摘要中的关键词,因为这些词大概率会是整篇论文讨论的核心。针对摘要提出问题,并且记录下来,这样在后续正文的阅读中就会更能够抓住重点。

在读完摘要之后将下面三个问题的答案记录下来:

  1. 这篇论文在研究什么,具体解决了什么问题?
  2. 作者想要达到什么样的效果?
  3. 这篇论文对我有什么用处?

在第二次读过结论部分后,也同样记得用自己的话写下一段简短的总结。

粗读的第三阶段

之所以反复强调需要将以上这些内容用自己的话“翻译”一遍,一方面的原因是为了促进对文章的理解,简单的阅读、勾画或是摘抄不过是在呈现别人已有的观点,用自己语言描述,有一个反复考验自己 “我真的对这些内容了解了吗”、“作者反复提到的 xx 是指 xx 的意思对吧” …… 的思考过程。因为自己脑袋生产出来的东西,每次看到更加熟悉亲切,自然而然的容易记住。另一方面的原因是为了帮助区分重点,这里的重点并不一定是作者想要在论文中表达的重点,而是为了理解这篇论文自己需要把握的重点,两者的区别在于,作者写作过程中的某一个知识点可能被他默认成读者已经掌握的先验知识,比较常见的诸如理论、公式、符号、定理。这个知识点对读者来说或许是陌生的,这其中的有些会对理解整篇论文造成障碍,有些不会。那些会造成障碍的就是应当重点关注并留待后续拓展理解的。如果只是单纯勾画,大概率最终变成满篇全是重点,“真正的重点”被淹没在“不是重点的重点”里,这种现象还是比较常见的。

推荐使用电子笔记,这样可以方便索引,也能够作为自己论文的储备材料。
参考:卡片笔记写作法

通过之前的步骤在对论文的摘要和结论有比较深入的了解之后,接下来才进入正文部分。这个阶段对文章还只是粗读,所以同样不需要一字一句的从头到尾。在正文一开头,按照惯例,作者会花费一定的篇幅谈论研究背景和研究基础。这部分的内容也是为了帮助读者建立基础认知。读完这部分的内容之后不妨跳过具体论证部分,把后面的大小标题、图表等内容走马观花的浏览一遍,以便于之后详细阅读时对哪部分内容会花费多少时间建立感性认知。

针对机器学习(深度学习)论文,很重要的一个部分是模型架构和数据使用。可以从以下问题为切入点来关注一篇论文:

  • 构成模型的基本单元是什么,有几个层?
  • 模型是否引入不寻常的新结构层?
  • 各层之间是怎么关联的?
  • 模型输入数据是怎样的、输出是怎样的?
  • 是否有多个输入、多个输出?
  • 参与训练的数据量有多少?
  • 数据怎样在模型中流动?
  • 理想的输出结果是什么?
  • 算法的复杂度是多少?
  • Loss 是如何计算出来的?

某些论文能够找到对应的源代码,会对理解这篇论文十分重要。应该尽可能的把代码在自己的环境运行一遍,关注其中的参数是如何设置的,试着改变其中的参数,看看会有怎样的效果。

善用搜索引擎

在阅读论文的过程中一定会遇到各种各样的问题。

在前互联网时代,由于获取到的信息有限,解决问题最普遍的学习方法是拿到一本相关领域的教材,然后从头到尾浏览一篇,以期望找到答案。或者是找到这个领域的专家,向他们咨询(如果能够找得到且对方有意愿为你解惑的话)。

这套方法放在今天就显得有些过时且低效率了。后互联网时代的今天,借助搜索引擎,完全可以以一种更主动且积极的方式寻找问题的答案。

遇到不理解的概念?问 Google !

遇到不会的数学公式?问 Google !

使用搜索引擎的优势在于,在 99.99% 的情况下你都可以得到关于这个问题不止一个答案,你有更大的机会得到对自己而言能容易理解的答案。

通过大量阅读论文来建立对一个领域的认知是最有效率的方式。因为同一个领域的论文与论文之间通常有很强的关联,会反复提及这个领域的核心概念,因此只要从某篇论文的某一个关注点切入,顺着参考文献用搜索引擎一点一点的往上朔源,便能够扯出一整片相互关联的核心概念(一个树状或是网状结构),这是一个量身定制的反复强化的过程。阅读并理解一篇论文不仅仅收获的是作者本人的观点,还包含理解这个领域的核心概念。

具体到机器学习这个领域,它对数学有较高的要求,通常会在论文中包含大量数学公式,因此要理解论文需要首先理解数学公式。而数学的本质其实是一层一层堆叠起来的符号系统,只要善用搜索引擎顺着从上往下一层一层找、一个概念一个概念的理解,最后合起来就能够理解完整公式。在这个过程不光帮助理解了论文,同时理解了数学概念,这些数学概念毫无疑问的会反复出现在下一篇将要阅读的论文里。

著名机器学习领域专家,斯坦福大学 吴恩达(Andrew Ng) 教授经评估过,大概需要阅读 40 篇左右的论文,能够建立起对机器学习行业的认知。
参考: Stanford CS230: Deep Learning | Autumn 2018 | Lecture 8 - Career Advice / Reading Research Papers

值得强调的一点是,使用上述方式,特别是刚开始阅读第一篇论文的时候必然会是非常辛苦的。一开始要做好心理建设,别慌,一步一步循序渐进。初次阅读时,选择一篇靠谱的论文十分重要,要选择受到行业内普遍认可的、引用量高的、作者在这个领域有长时间专研取得丰硕成果的、在 GitHub 上能够找到高质量代码实现的论文。要抓住重点,降低预期,把目标设定在读懂其中 70~80% 内容,避免在旁枝末节上越陷越深。

复习、回顾、总结

一篇论文不能指望仅仅阅读 3-5 遍就能完全理解,事实上,读十几遍完全是稀松平常的事,这个过程往往痛苦、繁琐且反复。一篇论文是否值得花费这么多的时间和精力,在一开始就要通过粗读环节建立判断。在过程中一边阅读一边记录,就像是在电子游戏的流程中使用 check points 机制,把阅读的进度存储下来,保证既能随时放下又能随时拿起。在一篇论文阅读完毕之后,并不意味着万事大吉,所有工作就全部结束了,复习、回顾、总结 同样非常重要。将阅读过程中的收获记录下来,不但减轻之后复习的压力,同时会为自己的研究提供灵感和素材。

参考资料