再过几天就是导师让我们进行汇报的日子了,我前面这段时间其实并没有认真地去学相关的研究内容,我发现自己经常会卡在一个很关键的问题上,就是论文的阅读,这在前段时间曾一度对我打击很大,读了很多篇文章,自己也有去跑论文的代码,但是自己就是不知道该如何自己着手去做相关的科研内容,这让我很怀疑自己是不是没有这方面的天赋,于是乎执着于方法论的我在网上找了一些前人大牛提出的方法论,其中文献阅读部分主要出自 CS230 中吴恩达教授的论文阅读方法,我整合出如下笔记,供自己和有幸阅读到这篇博客的人作为参考。
知识整理#
无论是日常学习还是做研究,都会有很多知识点。人的大脑容量有限,没办法一直记得某个知识点。这时候就需要一份自己的知识库的文档。一方面是看过的内容自己写出来会加深理解,看懂了和能够把看懂的东西写出来完全是两回事。另一方面是过一段时间一些知识忘记了,再回过头来看自己写的东西很快就能记起来,不需要再去翻书或者资料,而且有些东西看完甚至都不记得是在哪里看的了。
比如说你的研究领域会用到CNN(卷积神经网络),那么就可以在文档中专门整理一块关于CNN的内容,可以包括CNN的基本模型结构、起源、优缺点、通常用于解决什么问题、比较有效的几种改进方式、最新研究进展等等。
这份文档需要持续更新和维护,随着你学的内容增加,也会有一些新的理解,可以持续往里面加内容,有时候看到一些新的内容发现自己以前理解的是错的,也可以随时进行修正。同时也可以使用DAG(有向无环图)或者思维导图来帮助整理文献之间的种类与关系,例如某几篇文章是属于同一类方法,或者文章之间的依赖关系。这样对文章之间的关系脉络,以及整个方法种类会更加清晰。
文献阅读#
-
收集关注主题的资源。在Google上快速搜索相关资源,资源可以是研究论文、 媒体文章、博客文章、视频、 GitHub库等形式。
-
在下一步中,你将对你认为与主题相关的任何资源进行深入研究。重要的是要有一种方法可以跟踪对每个入围资源的理解。吴恩达建议绘制一个与你的理解水平相对应的资源表,它看起来与下表相似:
确保每篇文献至少阅读理解10%~20%以上,这样能确保自己能够对于该研究的相关性有个较好的认知。 -
对于收集相关的研究资源,如何保证自己所收集到的相关资源的质量?最好是从该领域的顶会的文章入手,重点关注当前该领域的前沿热点,从这些文章中的 reference 当中再找到与该领域相关的文献资源。 那么收集多少的文献资源是足够的呢?吴恩达教授认为,5-20篇论文代表基本理解了相关主题,或许对于进一步理解技术实现足够了。
-
接下来是很重要的一步:做结构性笔记,即用自己的话总结论文中的关键发现、结果和技术。
IMPORTANT
对于一篇文章我们要进行多次的阅读 (Take multiple passes):
- 第一遍阅读: 读标题、摘要、图表
- 第二遍阅读: 读介绍、总结、再结合图表,并简单浏览剩下内容
- 第三遍阅读: 阅读论文的整个部分,但是跳过可能感到陌生的数学的部分,也可以跳过任何你不理解或不熟悉的术语。
- 之后的阅读: 那些对某个领域进行深入研究的人可以多看几遍。这些额外的阅读将专注于理解论文中出现的数学,技术和未知的术语。
攥写结构性笔记主要聚焦于以下四个问题:
- 描述论文作者的目标是什么,或者可能已经实现了什么?
- 如果在论文中引入了一种新的方向 / 技术 / 方法,那么这种新方法的关键要素是什么?
- 论文中的哪些内容对你有用?
- 有哪些参考文献你想要跟踪吗?
-
如何深入地阅读并理解一篇文献?吴恩达教授将其分为两个方面:
code:运行该研究的开源代码;从头开始尝试自己复现该论文的代码 math:根据论文从头推导一遍其数学公式
协助研究的额外资源#
一些在线资源使得相关信息的发现和检索相对容易。下面是帮助你搜索相关信息的资源示例。
- Reddit 机器学习社区
- Reddit 深度学习社区
- PapersWithCode 代码库
- 顶级会议,如NIPS, ICML, ICLR
- Research Gate 网站
参考文章:#
- 科研入门 ↗:知识整理部分内容摘抄自这篇文章。
- 吴恩达 Career Advice / Reading Research Papers ↗
- 吴恩达教你读论文 ↗