普通研究生如何做前期研究?
“读书使人充实,讨论使人机敏,写作使人精确。” — 弗朗西斯·培根
在AI时代,一个良好且快速的读论文习惯是让人受益良多。因此,我在这里主要介绍我是怎么从调查论文开始,去快速的开启一个自己的方向,以系统化的方式去读论文,以及记笔记。在成为一位独立且优秀的科研工作者,我仍然有许多路要走,我会持续的更新本文,来更新我的研究理念。
1 如何寻找Research Topic?
寻找研究课题(Research Topic)是完成一个系统的科研任务第一步。一般而言,研究课题是分为两种——新问题 & 老方法,老课题 & 新方法。虽然是有分类,但是我认为该两种方法的研究路线是大同小异的。在该节中,我将首先介绍这两种课题形式,然后再具体解释如何寻找一个合适的研究课题。
1.1 新问题 & 老方法
新问题/老方法,是找到一个未被研究,或者未被充分研究且具有相当的限制(limitation)的工作。目前,这类工作的创新以制作一个新的基准(benchmark)为主,主要贡献在于:足够规模的数据集与新的且合理的评估标准。也就是说,这类工作需要有一个比较清晰且强大的研究动机(motivation)。由于主要贡献并不在算法,算法的设计可以不用足够的创新。
然而,这类工作有几个困难或负面影响:
- 容易撞车。对于热门方向如robot、LLM相关benchmark,这是同样的手速工作,且benchmark需要特殊的设备,或者足够量的token,这是对于很小的研究组是比较困难的。冷门方向则同样需要消耗足够多的人力精力。
- 实验数据难获取。在数据获取效率上,工业界是远超普通课题组的。
然而,这类工作同样有一些优势:
- 无需太多算法创新,且具有比较强的落地感潜力,可能会成为比较具有代表性的工作。
- 这类工作如果比较优质,可以扩展成为老问题 & 新方法,继续做一些针对benchmark的算法优化工作。
- 如果是注重于一个场景,那么可以做其他方向的迁移。
1.2 老问题 & 新方法
老问题 & 新方法,是选择一个已经被广泛研究的问题,但提出一种全新的方法来解决它。这类工作的核心贡献在于算法创新,通常需要证明新方法在多个标准benchmark上显著优于现有方法(SOTA)。
然而,这类工作同样是比较困难的:
- idea与算法实际效果不匹配。
- 小组算力不够。
好处也是比较明显的:
- 有许多前人的研究论文,可以供写作或者研究参考。
- 与企业对口方向的算法研究为就业带来更多的可能性。
事实上,无论是Sec. 1.1 还是Sec. 1.2,去调研研究课题的路线大致是相同的:
- 第一步,需要做大量的调研。最好的方式是从近年来被引量高的调查(survey/review)展开,使用大模型辅助了解该方向的大概与可能存在的受限之处。找到备选的研究课题。
- 第二步,需要找到可能相关的代表性文章。使用先进的智能体或大模型,从调查类型论文中,找到引用其的论文(通常可以从谷歌学术的谁引用了它来找),且和你备选研究课题相关的论文,进行归纳与粗读,挑选适合精读的文章。
- 第三步,精读论文,规划实验,迅速确定可行性。
普遍而言,完成第一篇论文需要阅读100~300甚至更多的相关论文。而且一定要迅速确定该课题是否可行。事实上,很多时候可能并不是研究生能力不行,而是课题的可行性没有被确定。
2 如何阅读论文?
在本节中,我将介绍我的阅读习惯。需要注意的是,我的阅读习惯并非优秀,只供参考。
2.1 粗读
粗读的最佳方式已不再是快速浏览摘要和结论。我认为这部分完全可以交给大语言模型:让它们总结论文,并分析其创新点与不足之处。这对于那些没有明确说明自身局限性的论文尤其有用。
2.2 精读
前言: 在我看来,对于当前的工作——尤其是AI领域的算法创新与应用——如果代码没有开源,则没有必要精读。 算法创新与数据集的不稳定性常常导致一个方法看似有效,实则不然。许多学生为了毕业或求职而编造数据,这已屡见不鲜。我反对任何不公开代码的已发表论文——除非资助方要求保密。
精读通常至少需要两遍:第一遍快速,第二遍慢速。它可分为两种情况:熟悉该领域与不熟悉该领域。
**
熟悉该领域时:借助大语言模型辅助阅读引言**(Introduction)部分,明确论文要解决的问题及其贡献。跳过相关工作(Related Work)部分,直接进入方法(Methods)部分。
不熟悉该领域时: 通读相关工作部分,找到与本文最相关的论文——作者通常会花额外篇幅对其进行阐述。你可能还需要精读那篇相关论文。
精读第一遍: 不要关注所有实验——只关注主要实验。我建议在这一遍不要使用 Typora 或 Obsidian 等笔记工具,而是使用 Zotero、EndNote 等工具直接在文献上添加简要批注。
精读第二遍:
- 仔细阅读方法部分与开源代码。
- 能够用自己的话描述每一步的方法,尤其是整体架构图。
- 阅读所有实验,并分析每个实验的设计意图。
- 如果你确信这项工作是一个值得对比的基线(baseline),那么:
- 粗读对比方法的实验设置。
- 精读本文的实验设置。
第二遍之后:
- 考虑撰写并发布一篇阅读理解博客。它应包含:
- 解决了什么问题
- 完整的创新点列表
- 完整的算法流程
- 关键的实验设置与数据分析
- 至少一张自己绘制的示意图(除原论文图片外),以辅助理解
- 关键代码片段的注释与解释
- 写完后,在发布前与大语言模型进行讨论和校对。
- 精读完成后,为PDF建立知识图谱链接,形成阅读闭环。
于我而言,这是一个比较好的研究流程。然而,所有的研究流程都需要我们耗费很多的时间来弄懂一个方向的真正含义。需要注意的是,科研并不是处处包含了创新,科研同样包含部分重复性劳作。
对于一个完整的科研流程而言,这只是一个开始。
后续我将更新如何去做好科学的实验记录,以及如何撰写一篇文章。