大师兄

073 | 如何读懂类似谷歌“三驾马车”这样的技术论文?

在信息化时代,技术发展日新月异,知识更新的速度也是越来越快。以前我们可以安安稳稳地坐在教室里,等到一本写得不错的教材出来,再去系统地学习知识。而现在,我们却必须选择去读那些最新发表出来的技术论文,因为只有这样才能赶得上时代发展的潮流。

作为互联网行业的软件从业人员,能不能读懂论文,是一项可以决定自己发展潜力的必备技能

然而,读懂论文并不容易,这比读懂一本书要难多了。在我看来,读懂一篇技术论文是需要技巧的。

作为一个美国大学毕业的PhD,曾先后在各种顶级会议和期刊上发表过十几篇论文的作者,我觉得可以从论文写作的角度,跟你谈一谈论文和教科书的区别,帮助你理解怎么读论文才是一个相对正确而又省力的过程。

要理解为什么技术论文难以读懂,你首先要弄明白一个问题:论文到底是写给谁看的?

目前发表在顶级期刊或者会议上的论文,包括非常经典的谷歌“三驾马车”的论文,都是为了给这个领域的专家看的,而不是要写给广大程序员看的。因此,这些论文也就不太可能普遍照顾到程序员的理解能力。

关于作者在写作论文时会预先设定目标读者这一点,我们可以从以下两个方面来理解。

  1. 顶级期刊或者会议发表的论文都是需要经过同行评审的。同行评审是很关键的一步,论文能否录取,往往取决于跟你处在同一个水平或者更权威的专家对论文内容的判断和评价。所以,论文首先就是写给同行专家看的,否则是无法通过同行评审这一关的,那论文发表又从何谈起呢?

  2. 论文发表的目的是什么?其实,发表论文的目的有很多。在学术界,发表论文就是工作的一部分,目的就是宣示你做了很多、很有影响力的研究;在工业界,发表论文的目的就更多了,但树立自己在业界的领先地位这一点是毫无疑问的。

理解了“论文到底是写给谁看的”这个问题,我们再**来看下一个问题:论文通常都是怎么写出来的?**这是个非常复杂的问题,我会一点一点地分解剖析。

首先,论文作者对同行的知识结构是有假设的。 和教科书非常不同,论文作者首先会假设同行对这个领域的基础性研究和相关知识都已经非常熟悉了,因此只在非常必要或者特殊情况下才会去介绍特定的知识。而在大部分情况下,论文作者给出一个引用已经是很奢侈的事情了。这意味着什么呢?如果你连这个领域的基础知识都不懂,是没有办法一上手就读懂论文的。

举个例子,如果你去看大数据基础架构的论文,比如谷歌的“三驾马车”的论文,倘若你连最基本的分布式系统知识都没有,那无异于是“小孩子读微积分”;倘若机器学习的知识你一点儿都不懂,那一篇讨论深度学习的论文对你来说,无异于“天书”。

因此,作为一个读者,你能不能读懂一篇论文,直接取决于你自己在这个领域中的基础知识积累。所以,想要有阅读论文的能力,首先要把基础知识补好。

其次,论文里面的内容都是“化了妆”的。 学术圈有一个基本规则,简单地说就是:不可以在论文里面说谎。然而,“不说谎”不代表作者要把自己做的系统的方方面面都说出来,换个说法就是:作者可以对系统的缺点轻描淡写,能简单就简单;而对系统的优点和先进性大书特书,极力营造为“天上没有,人间极品”的效果。因此,在不违背基本原则的前提下,作者在论文里有选择性地写作,是学术圈里公认的套路。

这就意味着,读者要带着批判性去读论文,而不能按照读教科书的思路去读。教科书的作者在写作时一般都会做到客观公正、深入浅出,而这很显然不是论文作者的写作方法。 因此,对于作者语焉不详的地方要多问几个为什么,对于作者自夸的地方要认真思考一下是不是真的牛。其实,这些都是读懂论文的基本功。

那这种基本功从何而来呢?总结起来,我觉得可以从以下三个方面来获得这些基本功。

  1. 自己撰写论文,然后努力发表。 这个办法比较奢侈也比较痛苦,而且见效较慢。但是一旦成功,效果往往是其他办法不能比的。即便没有成功发出论文来,你也可以从论文的写作过程中学到很多知识。
    所以,在有条件发表论文的情况下,一定要不惜代价地尝试。即使最后一篇论文也没发出来,但这种尝试也绝对有好处。最明显的好处就是,可以帮助你理解论文写作过程中要展现好的一面、掩藏坏的一面,理解作者在论文中没写的那部分到底是什么。

  2. 找到两篇可以比较的论文:后者引用前者,和前者的方法进行比较,并在前者的基础上有所提高。 这时,你可以拿着前者的文章,看看作者是如何“吹牛”的、又是如何避免谈缺陷的,而后者又是如何表明自己弥补了前者不足的。通过比较前后两篇论文的内容,可以有效地提高你用批判性思维阅读论文的能力。
    但是,这个方法对系统性的文章,比如谷歌的“三驾马车”这类的文章,不是特别适用。主要原因是,这类文章表述的系统往往是从无到有的原创性系统,也只有谷歌这样的大型科技公司才有能力去开发这样的系统。一般来说,是无法找到可以相比较的文章的。

  3. 一定要认识到论文中一般只交代作者成功的故事,而对于成功背后无数次失败的尝试这样的内容绝少出现。 这就意味着,你看到的只是作者成功的解决方案。有过基础研究的人很清楚地知道,任何一篇论文背后都隐藏着无数次失败的尝试。对于系统论文、大数据论文,这个规律依然适用。
    比如,在微软、百度、阿里巴巴做过类似于谷歌“三驾马车”的系统开发人员,这些人虽然还没有成功,但是经历了多次类似的失败,已经足够体会到经验背后的教训了,因而可以比较轻松地读懂这些论文。而对其他没有类似体验的人来说,就很难了。

所以有些论文你读不懂,其实是因为论文中缺乏对系统研究过程中失败尝试的描述,而你也没有过开发类似系统的体验。因此,从这个角度来讲,最能读懂论文的,往往都是那些从事过类似系统开发的人。

关于这一点,我认为比较好的解决办法只有两个。

  1. 加入一个团队进行类似的系统开发,毕竟“纸上得来终觉浅”。

  2. 找到这篇论文在各大网站上的相关解读,以及论文作者此后演讲的相关材料,这些资料往往是帮助你理解论文的最佳途径。在这些演讲材料中,作者往往会更自由地分享一些成功的经验、失败的教训。而在论文发表时,因为同行评审等压力,往往会有所忌讳,所以不会分享的太全面。

写到这里,我需要特别指出一类比较特殊的论文,就是综述性质的论文。这种论文,往往是由业界大佬就这个领域在某段时间内的所有研究工作汇总而成,是最接近教科书的论文。

除了阅读综述性论文以外,你还可以参加一些行业的顶级会议。这些顶级会议除了论文宣讲,还会邀请行业大佬举行一些综述性质的讲座。这些讲座的内容往往更客观公正、逻辑性更强,也比较像教科书,更容易被听众理解。但是,这些讲座通常不会被发表成论文,只有现场的参会人员才可以听到。

总结来讲,论文难懂是正常情况。要想读懂论文,你需要明白论文是写给谁看的、是怎么写的。作为读者,你首先要提高自己的领域基础知识,然后明白论文的一些基本套路,这会让你在阅读论文时更容易读懂、更有收获。最后,综述性质的论文很像教科书,特别适合用于特定领域的入门。