有的机器学习论文中有大量的数学公式和推导过程,读这样的论文往往很是费力费时。为了了解阅读这样的论文的技巧,Reddit 用户 thebackpropaganda 提出了自己的问题:理解机器学习论文读什么书比较好?要读懂数学内容很多的机器学习论文,我又该读什么书?问题发出后反响热烈,很多「过来人」都分享了自己经验和看法。机器从中选择了部分进行编译介绍,更多经验可原帖(地址见文后)。
当你阅读一篇论文时,你不会只读一次。你首先要阅读标题,然后你要决定要不要读摘要,读完摘要你还要决定是否浏览结果,之后你再决定是否浏览整个文本,等等。人生苦短,要读的文章实在太多了。
要读懂一篇有很多代数运算的论文,秘诀是不要在第一次阅读时就去理解代数部分。这是大多数学生都会犯的错。在第一次阅读时,你不需要理解一个长计算过程的所有步骤。你大略看看并且假设它就是对的,着重看看其中的关键步骤即可。阅读那些公式之间用英语写的内容。阅读结果,阅读结论。当你大概理解了这篇该死的论文在说什么之后,然后再考虑要不要花时间去琢磨那些代数部分。别被你不理解的部分困住。假设它们是对的,然后继续阅读。后面可以回过头再来看。如此反复直到你完全搞懂。
当你像一位「应用数学家」一样熟练时,你就有能力只需略览代数部分就能或多或少理解这部分的内容、想要实现的目的以及需要做哪些步骤。没人能快速阅读对复杂公式的长操作,所以你不需要一开始就读这些。你只需要粗略看看,然后每一次复读都关注越来越细的细节。
另外,你也应该注意,计算中很多时候都会有错误。在第一次阅读时就找到这些错误是不可能的。大多数时候这些错误与这篇文章想要得到的结论无关,但它们会让你困惑,阻碍你对这些代数内容的理解。如果你之前已经有了大概的了解,就能更容易发现这些错误。
另外,当你查看这些等式时,你要确保你能理解这些等式的实际意义。我相信你知道这些等式的数学含义,但你明白这些等式的物理意义吗?(抱歉,因为我是物理学家,所以我只知道这个比喻。)你知道该怎样用普通语言解释给我听吗——这个等式说明了这个特定系统在做什么?你可以说出这样的话吗——「当你最大化 ELBO,这个近似后验将与似然项中的数据允许的先验相似」?这就是 ELBO 表达式背后的「物理意义」。当你达到这种程度时,推理长长的代数操作就轻松多了。要怎样达到这种程度?读大量论文,做大量计算。别无他法。
另一种「太多数学」的论文是用了非常形式化的数学语言而且依赖于(有时候是过分依赖或不必要依赖)许多形式的数学概念的论文。比如它引用了勒贝格测度、Radon-Nikodym 导数、西格玛代数等等。
对我来说,这读起来要难得多,因为它们会让我的八道检测器困惑。所有形式部分看起来都很重要。但技巧是一样的:首先略看。现在还无需查阅了解并记住什么是博雷尔分层(Borel Hierarchy)。留在后面来做吧,你甚至可能不会读这篇论文第二遍。
另外,也可以将形式概念替换成普通场景中的特定案例。很多时候,人们使用形式数学的原因是安全,防止出现什么怪异的案例毁了他们的推理。就像是一个自作聪明的在读数学博士问:「哦,要是这个函数是连续的但任何地方都不可微分呢?这仍然有效吗?」所以,你应该假设没有这样自作聪明的人,并用比率来替代所有的 Radon-Nikodym 导数、用好用的黎曼积分的简单函数来替代所有测度,并且假设这个论文作者在卖弄自己,你不需要这些富丽的辞藻来理解他所说的内容。
有时候这种方法不管用,而你又确实应该读那篇充满了形式数学的论文,因为数学在其中发挥了重要作用。那就只有硬着头皮上了。如果你像我一样,形式数学不是长项,那就要花点时间和功夫了。
当我开始阅读论文时,我总是会试图一次性理解所有东西。我总是会卡在小细节上,因为沮丧,大多时候我都不能读完这些论文。后来我看到了这篇论文《如何阅读论文》:,现在我正在尝试使用其中的技巧来提升我的阅读能力,目前来看,效果良好。
不要担心时间长;这极其取决于论文的新颖性、作者写作的质量和你先前的知识。如果我阅读的是一个熟悉的主题,我读一遍就能理解其中的主要思想。但是我要读好几遍才能消化一篇非常新颖的论文或很少关注的主题的论文。即使如此,那也可能要好几天,甚至好几周,才能得到合理的直觉理解。尽管如此,我过去几年也读完了大约 1000 篇论文。
至少对我来说,关键在于完全理解作者的意图,然后再去研究公式。自下而上地实现目标鲜有成效。(计算机科学博士飘过)
推荐: