在学术界,能写好论文是一项关键的生存技能(就像是生火技能对穴居人一样)。特别地,很重要的一点是要意识到论文是一种特别的事物:它们看起来有一定的形式、以一定的方式流动、有一定的结构、语言以及其他学者所期望的统计数据。对我来说,查看我博士早期阶段的论文真是一种痛苦的历练,因为它们实在太糟糕了。在这方面有很多东西需要了解。
查阅论文。如果你正在学习写更好的论文,阅读许多好论文并提取出其中的模式似乎是一个明智的选择。但事实证明这并不是最好的策略;这就好像是对于一个二元分类问题只接受正面的样本一样。你真正需要的是查阅大量糟糕的论文,其中一种方法是评阅论文。大部分好的会议的论文接收率大约为 25%,所以你查阅的大部分论文都很差,这让你可以构建一个强大的二元分类器。你可以阅读一篇糟糕的论文,看它的描述有多么不清楚,或者它如何没有定义自己的变量、摘要介绍有多模糊、或者它如何过快地深入到了细节之中——你可以学习让你的论文不落入同样的陷阱。另一个相关的有价值的经验是参加(或组织)读书俱乐部——你将看到经验丰富的研究者批评论文,并且了解自己的论文将会被其他人怎样分析。
格式正确。我清楚地记得有一次和飞飞参加一次审阅会议。我在前面的几个小时里只评阅了 4 篇论文,而她拿起这些论文,每篇只翻了 10 秒钟就说其中一篇很好,其它都很糟糕。确实如此,我也接受了这一篇并拒绝了其它三篇,但这项花费我几个小时做成的事她只用几十秒就完成了。飞飞是将论文的格式作为强大的启发线索的。随着你变成越来越资深的研究者,你的论文将有一种特定风格的外观。一页引言/介绍。一页带有合适密度引用文献(不过于稀疏也不过于密集)的相关成果介绍。一张设计良好的 pull figure(在第一页或第二页)和系统图(在第三页)——不要用 MS Paint 制作。描写技术的章节在某个地方有些数学符号、带有大量数字的结果表(其中一些是粗体)、一个额外的聪明的分析实验、而且论文正好有 8 页(页数限制)且一行不少。你将不得不学习如何为你的论文赋予相同的格式,因为许多研究者在评价你的成果时都将其作为认知的捷径。
确定核心贡献。在你开始写任何东西之前,首先很重要的是要确定你的论文对该领域的一个单一的核心贡献。我会特别强调其中的单个词。一篇论文不是你运行的一些实验的随机集合的报告。论文的目的是给出一个之前并不存在或并不明显的单个事物。你必须认为这个事物是重要的,它之前从未被完成过,然后你通过实验的方式在有对照组的环境中证明它的优点。整篇论文都应该围绕这一核心贡献精准地展开。尤其是不要有任何额外的无价值的扩展,也不要裹带任何其它东西。举一个具体的例子,在我早期的一篇关于视频分类的论文( Large-scale Video Classification with Convolutional Neural Networks )中我就犯了这个错误,我尝试一次打包两个贡献:1)一个用于视频卷积网络的架构布局集合,2)一个不相关的带有很小改进的多分辨率架构。我把它加上去是因为我觉得一是也许有人会对此感兴趣然后跟进后续研究,二是因为我觉得论文的贡献越多越好:两个贡献好于一个贡献。不幸的是,这是一个非常彻底的错误。第二个贡献是微不足道的/可疑的,它稀释了这篇论文,分散了注意力,而且也没人关心。在我 CVPR 2014 的一篇论文( Deep Visual-Semantic Alignments for Generating Image Descriptions )中我又犯了类似的错误,我在该论文给出了两个没有关联的模型:一个排序模型和一个生成模型。我可以举出一些好的论据来证明我应该分开发两篇论文;只些一个贡献的原因更多是历史上的,而非理智上的。
结构。一旦你确定了你的核心贡献,就有了一个写论文的默认配方。上层结构默认的是引言/介绍、相关工作、模型、实验、结论。当我写我的引言时,我发现可以以相关评论的形式写下一些条理分明的顶层叙述,然后再填写下面的文本,这会很有帮助。我喜欢围绕单个明确的点来组织我的段落,并且这个观点在第一段就会给出,并用该段的剩下部分来支撑这个观点。这样的结构可以让读者轻松地快速略览。然后我们需要一个好的思维流程,可以按以下线索进行:1)X(如果不明显,还要加上对 X 的定义)是一个重要的问题;2)核心的挑战是什么,2)X 上之前的成果已经用 Y 解决的问题,而这一次的问题是 Z;3)在这项工作中,我们做了 W(?);4)这有以下有吸引力的特性,我们的实现表明了什么。你可以稍微调整这个结构,但这些核心的点需要得到明确。再重申一下:论文需要围绕你的确切贡献精准地进行组织。比如说,当你罗列挑战的时候,你需要确切列出那些你将在后面解决的问题,而不要牵扯到你做的与之无关的事情上(你可以在后面的结论中多做一点推测)。不只是在引言中,保持论文整体的合理结构也是很重要的。比如说,当你解释你的模型时,每一节应该:1)解释清楚在这一节做了什么,2)解释核心挑战,3)解释基本方法或之前其他人做了哪些工作,4)解释你的动机和你所做的工作,5)描述它。
打破结构。你也应该灵活应对这些格式,扩展你的论文,为之增加一点香料。比如说 Razavian et al. 的这篇论文(CNN Features off-the-shelf: an Astounding Baseline for Recognition)惊人地将引言做成了一位学生和教授的对话形式。这做得很聪明,我很喜欢。另一个例子,Alyosha Efros 的很多论文都带着一种俏皮的语气,为有趣论文的书写给出了绝佳的案例。比如说他与 Antonio Torralba 合著的这篇论文《Unbiased look at dataset bias》。另一种我见过的效果不错论文是问答式的章节,可能用在附录中。
常见的错误:洗衣清单(laundry list)。洗衣清单是应该避免的一种非常常见的错误,它看起来像这样:「这里有一个问题。现在为了解决这个问题,我们首先做 X,然后我们做 Y,再做 Z,之后再是 Y,就得到了我们的结果。」你应该竭力避免这种结构。每一个点都应该得到证明、给出动机和解释。为什么你要做 X 或 Y?有没有替代选择?其他人做了什么?可以说这样的论文很常见(如果可能的话我倒愿意给出例子)。你的论文不是一份报告,不是你做过的事情的枚举,也不是你的按时间排列的笔记和实验的某种格式化的翻译。论文是对于一个问题、你的方法和其背景的高度处理过的和高度聚焦的讨论。它应该能教给你的同事一些东西,它必须要能证明你的步骤,而不只是描述你做了什么。
语言。随着时间的推移,你会积累一个写论文时的好词词典和坏词词典。具体可以机器学习或计算机视觉论文为例:在你的论文中永远不要出现「study」和「investigate」(这是无聊的、被动的、糟糕的词);而你应该使用「develop」或甚至「propose」这样的词。你不要提出一个「system」或甚至更糟的「pipeline」;相反,你开发了一个「model」。你不是在学习「features」,你是在学习「representations」。而且上帝保佑,你千万不要使用「combine」、「modify」或「expand」。这些多余的、粗陋的术语肯定会让你的论文被拒 :)
提前两周的内部截至时间。并没有许多实验室这样做,但幸运的是飞飞对这个提前两周的内部截至时间限制很是坚定,在这个时间,你必须提交至少 5 页带有所有最终实验的草稿(即使不是最终的数字);这份草稿会进入一个与外部完全一样的内部评审过程(具有相同的评审表等等)我发现这种做法非常有用,因为这会迫使你思考整篇论文的布局,从而总是能让你彰显出一些你必须为这篇论文的思路而运行的关键实验,并让论据思路条理清晰、连贯和有说服力。
关于这一主题的另一个好资源是 Jennifer Widom 写的《 Tips for Writing Technical Papers》。