目录
Stanford CS230吴恩达Reading Research Papers学习笔记
“涉及深度学习关键技术的学术文献在未来深度学习技术的长期发展中将依旧保持重要地位。”吴恩达老师在斯坦福大学CS230深度学习课上如此讲到。
阅读论文是深度学习的学生和从业者为了理解经典网络架构,跟上技术前沿所必须要做的事。但当我们有了想要了解某一领域知识的目标时,如何通过合理的方法阅读论文去高效地实现这一目标,而对于单个一篇论文而言,我们又该如何高效阅读,吴恩达老师给出了他的方法,在此做一总结记录。
如何通过更有效地阅读研究论文,来接触新领域知识
- 搜集目标领域的相关论文,论文来源可以多种多样,可以是相关专业论文,也可以是视频、博客或者Github开源项目,最终形成自己的一个论文阅读清单。
- 快速浏览阅读每一篇文章,保证对清单内的每篇文章有至少10%的理解,这些理解程度足够你用来评估该篇论文与你目标领域的相关性及其成果对于你的价值。
- 不是持续研究一篇论文直到透彻,而是在这个清单内的论文间跳跃阅读,仔细阅读相关程度更高、更具价值的论文,适时放弃阅读过程中发现不合适的论文。
- 不断向清单中添加新论文。
持续进行这一过程,当你的论文阅读量达到15-20篇时,你对该领域的知识框架就有了初步的了解,这些知识足够你在该领域内做一些工作,应用一些已有的算法。
当你的论文阅读量达到50-100篇时,你对该领域的知识就已经有了充分的理解,足以帮助你做一些该领域前沿技术的研究工作。
如何有效地针对一篇论文进行阅读
首先明确,从论文的第一个字一直读到最后一个字,并不是一种好的方法。
吴恩达老师建议在阅读论文时,要少量多次,先阅读信息密度较高的部分——英文文本部分,再不断深入更难的材料——数学公式部分,从而提出了基于这一思想的论文阅读方法——多次阅读法。
论文的多次阅读法
- 第一阶段阅读,阅读论文的标题、关键字、摘要、关键神经网络架构图表,这是因为深度学习论文的主要内容往往可以用一两张网络架构图所概括,而标题、关键字和摘要也可以在初次接触该论文时给你提供大量有效信息。
- 第二阶段阅读,详细阅读引言、结论、图表部分,略读或浏览剩余部分。这是因为论文作者为了快速向读者和审稿人传达论文的思想和价值所在,总是会在摘要、引言、结论部分总结他们的工作,并尝试用一个案例来说明论文的内容和价值。而相关工作部分内容虽然有助于理解论文作者具体做了哪些工作,但实际阅读时可以浏览甚至可以跳过,因为除非你非常熟悉该论文,否则相关工作部分有时几乎无法被读者理解。
- 第三阶段阅读,反复地阅读论文,但是跳过数学部分内容。
- 第四阶段阅读,全篇阅读论文,但是跳过无意义或不重要的部分,因为论文作者在书写论文时,虽然会着重陈述自己认为重要的部分,但实际上人们不可能总是预测到自己工作的哪一部分在未来被业界广泛高度评价,这导致即便是一些被广泛认可的经典论文,在内容分布上依然有大量不是十分重要的部分。
阅读论文过程中应该时刻思考的一些问题
- 作者试图实现什么目标?
- 在实现这一目标的途径中,有哪些关键要素?
- 论文中的哪些内容对我们有用,我们可以用它来做什么?
- 在阅读论文后,我们还想要关注哪些文献?
关于论文中的数学和代码
- 对于数学部分,通读并详细记录过程,最后尝试从头开始推导出结果。这样做会花费大量的时间,但有助于彻底掌握论文背后的数学思想,同时有助于提高数学能力。在推导的过程中你也可能产生自己的算法思想。
- 对于代码部分,理解并运行开源代码帮助你简单理解原理;而深入理解的最好方式就是从头开始重新实现自己的代码。
长期阅读
最后,吴恩达老师还提到了一个重要的原则:
“要培养阅读论文的习惯,并长期坚持,而非短期内读大量的论文。”
一些个人理解
事实上在学习之前,本人在阅读论文时就一直在用逐字通读的方式阅读,在碰到数学公式时也会耗费大量的时间去尝试理解,效果可能反而不好。吴恩达老师关于论文阅读方法的分享确实给我打开了一种新的思路,阅读时少量多次,在反复阅读中加深理解,由浅入深,略过数学公式推导而只关注结果,在理解整体思路的基础上再去研究数学公式的推导过程。
以往在阅读论文时总是希望花一整段连续的时间去完全吃透论文,在遇到不懂的地方也是死啃不敢贸然跳过,实际上一次吃透本就是不现实的,反而可能效果不好,今后在论文阅读过程中也要注意方法的科学性和高效性。