How to Read a Paper ?

本文最后更新于:2023年7月18日 下午

Researchers spend a great deal of time reading research papers. However, this skill is rarely taugh, leading to much wasted effort[1].

本文旨在通过学习前人的经验,形成自己的一套阅读文献的方法。

在开始阅读文献之前,首先要确定大致的研究方向,并对相关领域有一定的了解

  • 该领域存在的价值是什么?
  • 该领域有哪些基本概念、专有名词、Key Words?
  • 该领域必要的 Preliminaries 有哪些?
  • 该领域能 work 的基本原理是什么?
  • 该领域最著名的工作、成果有哪些?

以上内容大部分可以在中文博客中找到前人总结好的文章,我们要做的任务就是广泛搜集、大量阅读、形成自己的 First Impression。此外,还可以在 ArXivGitHubDaliy PapersTowards Data SciencePaper DigestConnected Papers 等网站上找到有用的资源。

以上最好能输出第一篇自己的 Overview 博客,接下来才是真正接触文献。

读什么?

初学者

作为一个刚踏入新领域的初学者,读文献的优先级应该是[2]

  1. 近一两年该领域有影响力的 Survey 或 Review(视领域的发展速度而异):综述一般会将各个流派以及最先进的方法整理出来,读完后会对该领域有更深的认识,同时可以完善此前的博客。
  2. 近五年内该领域的经典著作(高引用,具有启发性的):就算读不懂也会有很多博客讲解,并且会有 backbone 的各种源码实现,最好结合起来看,阅读的同时输出若干篇精读笔记
  3. 经典著作引用的更经典著作(引用量达到一定量级):时间可能会过于久远,领域也可能不完全契合,但这些文章绝对值得一看。
  4. 近两年的顶会 SOTA(有开源代码优先):帮助你更快地掌握该领域最新的热点。同上,阅读的同时输出若干篇泛读笔记,泛读过程中对有启发的文章加以精读。
  5. 其他相近领域可能有启发的经典著作、综述。

学术圈唯 SOTA 论的风气严重,几乎每篇论文都会声称自己达到某某任务的 SOTA,筛选时更要区分 Trick 和真正的 Contribution,不要在 Trick 上花太多的时间。

确定了优先级后,做好以下的事情:

  • 根据此前的积累,辨识并搜集有用的文献;
  • 使用 Zotero 管理文献,使用 Notion 管理阅读;
  • 多和导师、师兄师姐沟通,不要开局就踩坑。

研究者

如果你对当前领域已经有了较深的认识,甚至取得过一定的成果和产出,下面还有三种扩宽知识面的方法[6]

读大牛:如果他们在领域经典著作中高频出现,我们可以在 Google Scholar 主页找到更多的资料:

  • 他的从博士阶段至今的研究课题;
  • 他的高被引经典著作、形成的写作方式;
  • 他的研究方向变动,特别是在领域有重大突破的时间节点;
  • 他的最新论文动态(可能指示着领域未来的热点)。

扫会议:最新的会议 Accepted List,扫一遍耗时略久,但可以保持对领域的清晰认识:

  • 通过关键词云,判断其他人的研究动向;
  • 从其他人的 method 中摘取灵感。

追踪论文:在 Google Scholar 选择一篇你关注的文献(经典、强相关),添加引用提醒:

  • 进入文章的引用列表(cited by),点击 Create Alert,新论文引用该论文时,就会有邮件通知;
  • 进入作者主页,点击 Create Alert,当作者维护自己的主页时(有新文章),就会有邮件通知;
  • 有时候,论文还没发表,就已经能够通过引用关系找到该论文。

怎么读?

一篇论文的构成

首先要了解论文各部分的重要性[3]

  1. Abstract:论文最重要的部分,概括问题的提出到解决,一般由导师直接把关;
  2. Introduction:重要性仅次于摘要,内容更加易懂,带有最关键Figure,指出本文的 MotivationNovelty
  3. Related Work、Background:对领域内工作的分类和总结,面对一个生涩的主题时读者则需要阅读,但通常没什么干货;
  4. Method、Approach:论文的模型算法细节,对于理解本论文非常重要;
  5. Experiment、Evaluation:会提出重要metric,results 中有会对比其他工作的 Table
  6. Discussion、Outlook、Conclusion:全文总结和展望,很可能会指出文章的缺陷
  7. Reference:论文引用的文献列表;
  8. Appendix:部分无法放到正文中的内容,如证明和算法。

综上,无论精读还是泛读,看一篇文章的正确顺序应该是[7]

  1. Abstract & Conclusion
  2. Introduction
  3. Figure & Tables
  4. Evaluation metric
  5. Others(如果要精读)

准备工作

  • 一篇初步完成的 Overview 博客
  • 使用 Zotero 搜集整理好的文献
  • 使用 Notion 创建一个 Paper To Read 的优先级 List
  • 使用 Notion 创建一篇 Paper 的精读 or 泛读模板

泛读 Pass 1

目的:在有限的时间里筛选出或许有用的论文,并简要记录在表格中

顺序

  1. Title:论文是不是跟自己目前的工作相关?
  2. Abstract & Conclusion:论文试图解决什么问题?为什么这篇文章能中?
  3. Introduction:论文的动机是什么?故事讲的如何?
  4. Figure & Tables:解决方案之关键是什么?

要点

  • 预计用时 10-15 分钟;
  • 得出结论:这篇文章要不要继续读下去?优先级如何?

泛读 Pass 2

目的:知道文章每一块在干什么,总结出一段泛读笔记

顺序

  1. Abstract & Conclusion:论文试图解决什么问题?为什么这篇文章能中?
  2. Introduction:论文的动机是什么?故事讲的如何?有什么贡献
  3. Related Work、Background:有哪些相关研究?如何归类
  4. Method:解决方案是什么?图和方法怎么对应起来?值得学习的绘图技巧?
  5. Experiment:实验是如何设计的?用于定量评估的指标和数据集是什么?
  6. Table:作者提出的方法跟别人的方法是怎么对比的?差距在哪?
  7. Reference:论文中多次引用、提出改进的重要文献,有哪些值得一看?

要点

  • 预计一天看个几篇;
  • 不用太注意公式特别的证明,或者一些很细节的处理;
  • 如果还没有特别没有搞得懂在干什么,可以读作者引用的重要文献;
  • 可以并行阅读,互相启发,加深理解;
  • 得出结论:这篇文章值得精读吗?

精读

目的:知道文章每一句话在干什么,总结出一篇精读笔记,简要回答以下八个问题[4]

  1. 论文试图解决什么问题?为什么这篇文章能中?
  2. 论文的动机是什么?故事讲的如何?有什么贡献
  3. 论文中提到的解决方案之关键是什么?如果是自己来完成会怎么做
  4. 论文中的实验是如何设计的?实验的难点在哪里
  5. 论文中的实验结果和分析有没有很好地支持需要验证的科学假设?能否改进
  6. 用于定量评估的指标和数据集是什么?代码有没有开源?能否复现
  7. 论文提到的思路、模型、实现、工具、数据集有哪些可以为我所用
  8. 下一步呢?论文中提到的不足和拓展,有什么工作可以继续深入或跟进

如果这篇论文足够重要,足以在组会中讨论、分享它,最好按照上面十个问题进行梳理,特别是前两个问题(介绍)和后两个问题(体会)。

要点

  • 一天能看完一篇吗?
  • 很多原因会造成理解不够深入甚至理解错误,需要多次阅读(如果有必要,多次讨论)来避免这类问题;
  • 如果在阅读过程中出现了大量盲点,反思是不是 Preliminaries 的掌握不够;
  • 学会挑刺,不能顺着作者的逻辑,要换个角度尝试去反驳它,就像审稿人一样。要能够找出这篇论文的优缺点、有哪些改进的空间,这样才能在相对成熟的研究中发现新问题。

后续工作

如果此前已经有了足够的 Preliminaries,且有过一定的文献阅读经验,到这一步时大概已经过了两三个月了。

此时你已经阅读了大量文献和源码,和导师、同门进行了几次讨论,这时候还留在筐子里 ideas 很有可能是可行的,现在就需要把你的 idea 实现了。这个阶段也不必孤军奋战,可以找同组的小伙伴一起合作

又过了一两个月,当你的 idea 基本证实有效之后,就可以开始动手写论文了。主要使用的工具为线上多人合作的 Overleaf。

参考


How to Read a Paper ?
https://hwcoder.top/Read-Paper
作者
Wei He
发布于
2022年1月2日
许可协议