博士生涯生存指南「Andrej Karpathy文章」
- 原文链接:A Survival Guide to a PhD
- 日期:Sep 7, 2016
本指南仿照了我很久以前写的一篇文章“在课程中表现出色”,那篇文章介绍了一些我在本科期间总结出的技巧/窍门。我收到了关于那份指南的好评,因此本着同样的精神,既然我的博士生涯即将结束,我想整理一份类似的回顾性文档,希望能对一些人有所帮助。与本科生指南不同,这篇更难写,因为攻读博士学位的经历差异性要大得多。因此,许多观点可能存在争议,并且很大一部分内容会特定于我所熟悉的领域(计算机科学/机器学习/计算机视觉研究)。但免责声明很无聊,让我们开始吧!
准备工作
首先,你应该攻读博士学位吗?我很幸运,从小就知道自己非常想读博。不幸的是,这并非出于任何深思熟虑的考量:首先,我非常喜欢学校和学习,想尽可能多地学习;其次,我非常想成为游戏《半衰期》(Half-Life)里的戈登·弗里曼(他拥有麻省理工学院理论物理学博士学位)。我超爱那个游戏。但如果你在做人生决策时更理智呢?你应该想读博吗?有一个非常好的 Quora 讨论帖,在接下来的考量总结中,我将借鉴/重述其中 Justin/Ben/其他人的几点看法。我将假设你考虑的第二个选项是加入一家中大型公司(这可能是最常见的情况)。问问自己,以下这些特质是否吸引你:
自由(Freedom)。 博士学位将在你想研究和学习的主题方面为你提供大量自由。你说了算。当然,你会有导师施加一些限制,但总的来说,你会比在其他地方拥有更多自由。
所有权(Ownership)。 你产出的研究成果将属于你个人。你的成就将与你的名字紧密相连。相比之下,在大公司里“融入集体”更为常见。这里常见的感觉是成为“大机器中的一颗螺丝钉”。
独特性(Exclusivity)。 进入顶尖博士项目的人非常少。你将加入一个由几百名杰出人士组成的群体,而不是加入某个公司的数万(?)人。
地位(Status)。 不管应不应该如此,努力攻读并最终获得博士学位在文化上是受人尊敬的,并被认为是一项了不起的成就。你还能成为一名博士(Doctor);这太棒了。
个人自由(Personal freedom)。 作为博士生,你是自己的老板。今天想睡懒觉?当然可以。想翘一天去度假?当然可以。重要的是你的最终产出,没人会强迫你朝九晚五打卡。当然,有些导师可能对此或多或少有些弹性,有些公司也可能如此,但这确实是一个基本事实。
最大化未来选择(Maximizing future choice)。 攻读博士学位不会关闭任何大门或消除未来的就业/生活方式选项。你可以走一条路(博士 -> 其他任何地方),但反过来则不行(其他任何地方 -> 博士 -> 学术界/研究界;这在统计上可能性较小)。此外(尽管这可能非常特定于应用机器学习领域),作为博士毕业生甚至博士辍学生,你的受雇能力都严格更强,许多公司可能愿意给你一个更有趣的职位或更高的起薪。更普遍地说,为未来的你最大化选择是一个值得遵循的好启发。
最大化变数(Maximizing variance)。 你还年轻,真的没必要着急。博士毕业后,你可以在某个公司度过接下来约 50 年的人生。选择让你的经历有更多的变数吧。
个人成长(Personal growth)。 博士是一段快速成长(你学到很多)和个人自我发现(你将成为管理自己心理的大师)的密集经历。博士项目(尤其是如果你能进入一个好的项目)还提供了非常高密度的、将成为你终生挚友的杰出人才。
专业知识(Expertise)。 博士可能是你一生中唯一有机会真正深入钻研一个课题,并成为某领域公认的世界顶尖专家的机会。你在探索人类知识的前沿,没有次要干扰或限制的负担。这其中有种美妙之处,如果你不同意,这可能表明博士不适合你。
免责声明(The disclaimer)。 我还想补充几句关于潜在的缺点和失败模式。博士是一种非常特殊的经历,值得大书特书地声明一下。你将不可避免地发现自己工作非常努力(尤其是在论文截止日期之前)。你需要能够承受痛苦,并拥有足够的精神毅力和决心来应对压力。在某些时候,你会忘记今天是星期几,靠微型厨房的剩饭度日。在一个阳光明媚的美好周六,你会疲惫地独自坐在实验室里,刷着 Facebook 上朋友们在异国旅行中玩乐的照片,那些旅行是用他们 5-10 倍的薪水支付的。你将不得不扔掉 3 个月的工作成果,同时还要设法保持心理健康。你会挣扎于意识到自己数月的工作成果只换来了一篇几乎没人引用的论文,而你的朋友们却在做着登上 TechCrunch 的激动人心的创业项目,或者将产品推向数百万用户。你会经历身份认同危机,在此期间你会质疑自己的人生决定,并想知道自己把生命中最美好的几年用来做了什么。因此,你应该非常确定自己能在非结构化的环境中茁壮成长,追求科学研究和发现。如果你不确定,默认情况下应该稍微倾向于否定。理想情况下,你应该考虑在决定投入之前,在本科期间通过暑期研究项目体验一下研究。事实上,在博士招生过程中,研究经历如此受欢迎的主要原因之一并非研究本身,而是学生更可能知道自己将要面对什么。
我应该明确澄清,这篇文章不是为了说服任何人去读博,我只是试图在上面列举一些常见的考虑因素。这篇文章的大部分内容侧重于,一旦你决定去读博,如何驾驭这段经历的一些技巧/窍门(我们很快就会在下面看到)。
最后,作为一个随想,我听说有人说只有想进入学术界的人才应该读博。鉴于以上所有内容,我认为博士学位具有强大的内在价值——它本身就是一个目的,而不仅仅是达到某个目的(例如学术工作)的手段。
进入博士项目:推荐信,推荐信,推荐信。(Getting into a PhD program: references, references, references.) 太好了,你决定要读博了。现在如何进入一个好的博士项目?首要的近似答案很简单——到目前为止最重要的部分是强有力的推荐信。理想的情况是,一位知名教授给你写了一封信,大意是:“某某是我合作过的学生中排名前 5 的。她积极主动,能提出自己的想法,并将其实现。”最糟糕的信是这样的:“某某上过我的课。她表现得很好。”在暑期研究项目中发表过一篇研究论文是一个非常强的加分项,但并非绝对必要,只要你有强有力的推荐信。特别注意:成绩相当不重要,但你通常不希望它们太低。这对我本科时来说并不明显,我花了很多精力去取得好成绩。这些时间本应投入到研究中(或者至少是个人项目),尽可能多、尽可能早,并且如果可能的话,在多位导师的指导下进行(你需要 3 封以上的推荐信!)。最后一点,贸然去打扰你潜在的导师对你帮助不大。他们通常是极其忙碌的人,如果你试图在会议上或通过电子邮件过于激进地接近他们以图给他们留下某种印象,这可能会惹恼他们。
选择学校(Picking the school)。一旦你被一些博士项目录取,你该如何选择学校?很简单,加入斯坦福!开个玩笑。更严肃地说,你的理想学校应该 1) 是一所顶尖学校(不是因为它在你的简历/履历上好看,而是因为反馈循环;顶尖学校吸引其他顶尖人才,你将有机会认识并与他们中的许多人合作) 2) 有几位你想合作的潜在导师。我确实是指“几位”——这非常重要,为你提供了一个安全缓冲,以防因为数百种原因中的任何一种(其中许多情况是你无法控制的,例如你的梦中情导离开、搬走或突然消失)而与你的首选导师合作不顺畅,以及 3) 处于一个良好的物理环境。我认为新生们对此重视不够:你将在这所学校校园附近度过 5 年以上非常美好的时光。相信我,这是一段很长的时间,你的生活将远不止研究。
导师
图片来源:PhD comics。
师生关系(Student adviser relationship)。导师是一个极其重要的人,他对你的博士经历会产生很大影响。理解这种关系的本质很重要:导师-学生关系是一种共生关系;你有自己的目标,想从博士学位中获得一些东西,但他们也有自己的目标、限制,并且他们也在建立自己的事业。因此,了解你导师的激励结构非常有帮助:终身教职(tenure)流程如何运作,他们如何被评估,他们如何获得资金,他们如何资助你,他们可能陷入的院系政治,他们如何获奖,学术界通常如何运作,以及具体来说他们如何获得同事的认可和尊重。仅此一点就能帮助你避免或减轻很大一部分师生间的摩擦点,并让你能够适当地进行规划。我也不想让这种关系听起来太像商业交易。导师-学生关系,往往最终会发展成为一种持久的关系,其基础远不止职业发展。
获得终身教职前 vs. 后(Pre-vs-post tenure)。每个导师都不同,因此了解变化的维度及其对你博士经历的影响很有帮助。作为一个经验法则(请记住有很多例外),重要的是要关注潜在导师是处于获得终身教职之前还是之后。年轻的教员通常会更常在(他们正在努力争取终身教职),并且通常会更深入细节,对你应该做什么有更强的意见,他们会和你一起推导数学公式,提出具体的想法,甚至查看(或贡献于)你的代码。这是一种更亲力亲为、可能更紧张的经历,因为导师需要强大的发表记录来获得终身教职,他们有动力推动你也同样努力工作。相比之下,更资深的教员可能拥有更大的实验室,并且往往有许多研究之外的其他事务(例如,委员会、演讲、差旅),这意味着他们只能在研究领域和对学生的指导层面上保持较高的抽象层次。打个比方,区别在于“你那个方程里少了个第二项”和“你可能需要在这个领域多读些文献,和某某人谈谈,并以某种方式推销你的工作”。在后一种情况下,细节层面的建议仍然可以来自实验室里的高年级博士生或博士后。
变化的维度(Axes of variation)。还有许多其他需要注意的维度。有些导师很随和,有些则更喜欢保持非常专业的关系。有些会试图对你工作的细节施加很大影响,有些则更加放手。有些会专注于特定的模型及其在各种任务上的应用,而有些则专注于任务,对任何特定的建模方法则较为不关心。在更偏管理的特性方面,有些会每周(甚至每天!)与你见面多次,而有些你可能几个月都见不到。有些导师会立即回复电子邮件,有些则一周(或者从不,哈哈)不回邮件。有些导师会对你的工作时间表提出要求(例如,你最好长时间工作或周末加班),有些则不会。有些导师会慷慨地为学生提供设备支持,有些则认为笔记本电脑或旧电脑基本够用。有些导师会资助你去参加会议,即使你没有论文发表,有些则不会。有些导师具有创业精神或偏向应用,有些则更倾向于理论工作。有些会让你去做暑期实习,有些则认为实习只是干扰。
寻找导师(Finding an adviser)。那么你该如何选择导师?第一站,当然是亲自和他们谈谈。师生关系有时被称为婚姻,你应该确保彼此合拍。当然,首先你要确保能和他们交谈并且个人相处融洽,但同样重要的是要了解他们在上述维度方面处于“教授空间”的哪个区域,尤其是你们之间在感兴趣的问题上是否存在智力上的共鸣。这可能和他们的管理风格一样重要。
收集参考信息(Collecting references)。你还应该收集关于你潜在导师的参考信息。一个好的策略是和他们的学生交谈。如果你想获得真实信息,这不应该在非常正式的方式或场合下进行,而应在轻松的环境或氛围中(例如,派对上)。在许多情况下,如果笼统地问,学生可能仍然会避免说导师的坏话,但当你问具体问题时,他们通常会如实回答,例如,“你们多久见一次面?”,或者“他们有多亲力亲为?”。另一个策略是查看他们以前的学生最终去了哪里(你通常可以在网站的校友部分找到这个信息),这当然也在统计上为你的最终结果提供了信息。
给导师留下印象(Impressing an adviser)。导师-学生匹配过程有时被比作婚姻——你选择他们,但他们也选择你。从他们的角度来看,理想的学生是具有兴趣和热情的人,不需要太多手把手指导的人,以及主动采取行动的人——一周后出现时,不仅完成了导师建议的事情,而且超越了它;以意想不到的方式改进了它。
考虑整个实验室(Consider the entire lab)。另一个需要意识到的重点是,你可能每周见导师一次,但你会每天见到他们实验室的大多数学生,他们将成为你最亲密的朋友。在大多数情况下,你最终也会与一些高年级博士生或博士后合作,他们将扮演与你导师非常相似的角色。尤其是博士后,他们是“见习教授”,他们可能会渴望与你合作,因为他们正试图获得可以用于申请学术职位的指导经验。因此,你要确保整个团队中有你能相处融洽的人,有你尊敬并能与之密切合作进行研究项目的人。
研究课题
人类知识一小部分的 t-SNE 可视化(来自 paperscape)。每个圆圈是一篇 arxiv 论文,大小表示引用次数。
所以你已经进入了博士项目并找到了导师。现在该做什么呢?
外循环练习(An exercise in the outer loop)。首先注意这种经历的性质。博士既有趣又令人沮丧,因为你不断地在元问题(meta problem)层面上操作。你不仅仅是在解决问题——那仅仅是简单的内循环。你大部分时间都花在外循环上,弄清楚哪些问题值得解决,哪些问题已经成熟可以解决。你不断地想象自己解决假设性的问题,并问自己那会将你置于何地,它能解锁什么,或者是否有人在乎。如果你像我一样,这有时会让你有点抓狂,因为你花了很长时间在某些事情上,却甚至不确定它们是否是正确的事情,或者是否有解决方案。
培养品味(Developing taste)。当谈到选择问题时,你会听到学者们谈论一种神秘的“品味”感。这是真实存在的。当你向导师推销一个潜在的问题时,你要么会看到他们面部扭曲,眼睛翻白,注意力转移,要么你会感觉到他们眼中闪烁着兴奋,因为他们正在思考那片等待探索的未知领域。在那一瞬间发生了很多事情:对问题重要性、难度、吸引力、历史背景(可能还有它是否符合他们正在进行的基金项目)的评估。换句话说,你的导师很可能是外循环的大师,并且对问题有高度发达的品味感。在你的博士期间,你将有机会自己获得这种感觉。
特别是,我认为我刚开始读博时的品味很糟糕。我可以从我博士早期的笔记中看到这一点。当时我感到兴奋的很多问题,回想起来都是构思拙劣、难以解决或无关紧要的。我想通过实践和学徒式的学习,到最后我提升了这种感觉。
现在让我尝试梳理一下构成这种品味感的几个想法,以及什么让一个问题值得研究。
肥沃的土壤(A fertile ground)。首先,要认识到在博士期间,你将深入钻研一个领域,你的论文很可能会相互关联,形成一个体系(这就成了你的学位论文)。因此,在选择问题时,你应该始终向前看几步。预测事情将如何发展是不可能的,但你通常可以感觉到可能有多少空间进行额外的工作。
契合导师的兴趣和优势(Plays to your adviser’s interests and strengths)。你会希望在导师感兴趣的领域内进行研究。有些导师可能允许你在稍微偏离的领域工作,但这样你就无法充分利用他们的知识,并且会让他们不太愿意帮助你完成项目或推广你的工作。例如,(这涉及到我之前提到的理解导师工作的那一点)每个导师都有一个关于他们研究的“默认演讲”幻灯片,他们会一直使用,如果你的工作能为这个幻灯片添加激动人心的前沿工作内容,那么你会发现他们对你的研究投入更多、更有帮助、更积极参与。此外,他们的演讲也会推广和宣传你的工作。
要有雄心:难度的次线性扩展(Be ambitious: the sublinear scaling of hardness)。人们的心理中内置了一个奇怪的错误:一个重要性或影响力大 10 倍的问题,直觉上感觉难度也大 10 倍(或者成功的可能性小 10 倍)。这是一个谬误——根据我的经验,一个重要性大 10 倍的问题,最多难 2-3 倍。事实上,在某些情况下,一个难 10 倍的问题可能更容易实现。这是怎么回事?因为思考 10 倍迫使你跳出框框,面对方法的真正局限性,从第一性原理出发思考,彻底改变策略,进行创新。如果你渴望将某事改进 10% 并努力工作,那么你会做到。但如果你渴望将其改进 100%,你仍然很有可能做到,但你会以非常不同的方式去做。
有雄心但要有攻击路径(Ambitious but with an attack)。在这一点上,同样重要的是要指出,有很多重要的问题并不构成好的项目。我推荐阅读理查德·汉明(Richard Hamming)的《你和你的研究》,其中对此观点有详细阐述:
如果你不研究重要的问题,你就不太可能做出重要的工作。这是显而易见的。伟大的科学家们都仔细思考过他们领域中一些重要的问题,并时刻留意如何着手解决它们。让我提醒你,
重要问题
这个词必须仔细定义。在某种意义上,物理学中三个最杰出的问题在我在贝尔实验室期间从未被研究过。我所说的重要是指保证能获得诺贝尔奖和你想要多少钱就能提到多少钱。我们没有研究(1)时间旅行,(2)心灵传输,和(3)反重力。它们不是重要的问题,因为我们没有攻击路径。让一个问题变得重要的不是其后果,而是你有一个合理的攻击路径。这才是让一个问题变得重要的原因。
那个做了 X 的人(The person who did X)。最终,博士的目标不仅是在一个领域发展深厚的专业知识,而且还要在上面留下你的印记。去引导它,塑造它。理想的情况是,到博士结束时,你在某个重要领域拥有一席之地,最好这个领域也容易且快速地描述。你希望人们这样说:“她是那个做了 X 的人”。如果你能填补那里的空白,你就会成功。
有价值的技能(Valuable skills)。认识到在你的博士期间,你将成为你所选择领域的专家(顺便说个有趣的,注意 [5年]x[260工作日]x[每天8小时] 是 10,400 小时;如果你相信格拉德威尔(Gladwell)的理论,那么博士学位正是成为专家所需的时间)。所以想象一下 5 年后的自己成为这个领域的世界级专家(无论你的工作的学术影响力如何,这 10,000 小时都将确保这一点)。这些技能是否令人兴奋,或者对你未来的事业有潜在价值?
负面例子(Negative examples)。还有一些你理想中想要避免的问题或论文类型。例如,你有时会听到学者谈论“增量工作”(incremental work)(这在学术界是可能的最糟糕的形容词)。增量工作是指一篇通过使现有东西变得更复杂而在某个基准测试上获得额外 2% 提升的论文。关于这些论文有趣的一点是,它们被接受的可能性相当高(审稿人找不到任何理由毙掉它们;它们有时也被称为“蟑螂论文”),所以如果你有一系列这样的论文被接受,你可能会觉得自己非常高产,但实际上这些论文不会被高度引用,你也不会对领域产生很大影响。类似地,寻找项目理想情况下不应包含类似“空中漂浮着下一个逻辑步骤,还没人做,让我来做吧”,或者“这应该是一篇容易的 poster”的想法。
案例研究:我的论文(Case study: my thesis)。为了让这些讨论更具体,我想用我自己博士经历的例子。首先,有趣的事实:我的整个学位论文都是基于我博士最后 1.5 年的工作。也就是说,我花了相当长的时间在元问题空间中徘徊,才找到一个让我感到非常兴奋愿意投入的问题(另外约 2 年我主要在 3D 方面(例如 Kinect Fusion、3D 网格、点云特征)和视频方面徘徊)。然后在我博士第三年的某个时候,我在某个周六凌晨 2 点偶然路过 Richard Socher 的办公室。我们聊了聊有趣的问题,我意识到他关于图像和语言的一些工作实际上触及了一些非常有趣的东西(当然,图像和语言交叉领域的研究可以追溯到比 Richard 更早的时候)。我无法完全预见之后会出现的所有论文,但直觉上它看起来非常有前景:它非常肥沃(大量未解决的问题,许多将描述与图像联系起来的有趣可能性),我觉得它非常酷且重要,容易解释,它似乎处于可能的边界(深度学习刚刚开始奏效),数据集刚刚开始可用(Flickr8K 刚刚发布),它很好地契合了 Fei-Fei 的兴趣,即使我没有成功,至少我能通过优化有趣的深度网络获得大量实践经验,这些经验可以在其他地方重新应用。当一切在我脑海中就位时,我强烈地感觉到一连串的核对标记。第二天我向 Fei-Fei(我的导师)推销了这个领域作为深入研究的方向,令我宽慰的是,她热情地批准了,鼓励了我,并且后来在这个领域内指导了我(例如,Fei-Fei 坚持让我做图像到句子的生成,而我当时主要满足于做排序)。我很高兴事情从那里开始发展。简而言之,我徘徊了 2 年,卡在外循环,寻找可以深入的东西。一旦基于几个启发式方法我弄清楚了那是什么,我就投入了进去。
抵制(Resistance)。我还想提一下,你的导师绝非永远正确。我目睹并听说过很多例子,事后看来,导师做出了错误的决定。如果你在博士期间有这种感觉,你应该有勇气有时忽略你的导师。学术界通常颂扬独立思考,但你具体导师的反应可能会因情况而异。我知道多个赌注最终效果很好的案例,我个人也经历过效果不好的案例。例如,我在第一年强烈反对 Andrew Ng 给我的一些建议。我最终研究了一个他不太感兴趣的问题,结果,令人惊讶的是,他被证明是非常对的,我浪费了几个月。有得有失 :)
不要玩游戏(Don’t play the game)。最后,我想挑战你,把博士看作不仅仅是一系列论文。你不是论文写手。你是研究社区的一员,你的目标是推动领域前进。论文是实现这一目标的一种常见方式,但我鼓励你超越既定的学术游戏规则。独立思考,从第一性原理出发。做别人不做但应该做的事情。离开摆在你面前的跑步机。我在整个博士期间也尝试做了一些这样的事情。这个博客就是一个例子——它允许我交流那些通常不会写进论文的东西。ImageNet 人类参考实验就是一个例子——我强烈认为让领域了解 ILSVRC 上人类准确率的大致范围很重要,所以我抽出几周时间进行了评估。学术搜索工具(例如 arxiv-sanity)就是一个例子——我对在文献中查找论文的低效感到持续沮丧,我发布并维护了这个网站,希望它能对其他人有用。教了两次 CS231n 是一个例子——我投入的精力远超一个应该在做研究的博士生理性上应该投入的程度,但我认为如果人们不能有效地学习这个主题并进入该领域,领域就会受到阻碍。我的许多博士期间的努力可能都以牺牲标准学术指标(例如 H 指数,或在顶级会议上的发表数量)为代价,但我还是做了,我会再次这样做,并且我在这里鼓励其他人也这样做。为了加点盐,冲淡一点理想主义,基于过去与我的朋友和同事的几次讨论,我知道这种观点是有争议的,许多人会不同意。
写论文
写好论文是学术界人士的一项基本生存技能(有点像穴居人会生火)。特别要认识到,论文是一种特定的东西:它们有特定的外观,特定的行文方式,特定的结构、语言和统计数据,这是其他学者所期望的。翻看我博士早期的一些论文草稿对我来说通常是一种痛苦的经历,因为它们写得很糟糕。这里有很多东西要学。
审阅论文(Review papers)。如果你想学习写出更好的论文,一个看似合理的策略是查看许多优秀的论文并试图提炼模式。事实证明这不是最好的策略;这类似于在一个二元分类问题中只接收到正例。你真正想要的是也接触到大量糟糕的论文,而获得这种经验的一种方法是审阅论文。大多数好的会议接受率约为 25%,所以你审阅的大部分论文都是糟糕的,这将使你能够建立一个强大的二元分类器。你会读一篇糟糕的论文,意识到它是多么不清晰,或者它没有定义变量,它的引言多么模糊和抽象,或者它过快地深入细节,然后你就会学会在自己的论文中避免同样的陷阱。另一个相关的宝贵经验是参加(或组建)文献讨论小组(journal clubs)——你会看到经验丰富的研究人员评论论文,并了解其他人将如何分析你自己的论文。
把握整体感觉(Get the gestalt right)。我记得有一次在审稿期间对 Fei-Fei(我的导师)印象深刻。我有一叠在过去几个小时里审阅过的 4 篇论文,她拿起它们,每篇翻阅了 10 秒钟,然后说其中一篇是好的,另外三篇是坏的。确实,我正准备接受那篇,拒绝另外三篇,但我花了好几个小时做的事情,她只用了几秒钟。Fei-Fei 依靠的是论文的整体感觉(gestalt)作为一种强大的启发式方法。当你成为更资深的研究者时,你的论文会呈现出一种特有的外观。大约 1 页的引言。大约 1 页的相关工作部分,引用密度适中——既不太稀疏也不太拥挤。一个精心设计的引人注目的图(在第 1 或第 2 页)和系统图(在第 3 页),不是用 MS Paint 制作的。一个技术部分,里面有些数学符号,结果表格里有很多数字,其中一些是粗体,一个额外的可爱的分析实验,论文正好 8 页(页数限制),不多不少一行。你必须学会赋予你的论文同样的整体感觉,因为许多研究人员在评判你的工作时,依赖它作为一种认知捷径。
确定核心贡献(Identify the core contribution)。在你开始写任何东西之前,重要的是要确定你的论文对领域做出的单一核心贡献。我特别要强调单一这个词。一篇论文不是你做过的一些实验的随机集合报告。论文推销的是一个以前不明显或不存在的单一事物。你必须论证这个事物是重要的,以前没有人做过,然后在受控实验中支持它的价值。整篇论文都围绕这个核心贡献以手术般的精确性组织起来。特别地,它没有任何额外的冗余内容,也不试图附带任何其他东西。举个具体的例子,我在早期一篇关于视频分类的论文中犯了一个错误,我试图塞进两个贡献:1) 一套视频卷积网络的架构布局和不相关的 2) 一个带来微小改进的多分辨率架构。我添加它是因为我首先推断也许有人会觉得它有趣并在以后跟进,其次是因为我认为论文中的贡献是可加的:两个贡献比一个好。不幸的是,这是错误的,而且大错特错。第二个贡献是次要的/可疑的,它稀释了论文,分散了注意力,而且没有人在乎。我在我的 CVPR 2014 论文中又犯了类似的错误,那篇论文提出了两个独立的模型:一个排序模型和一个生成模型。事后看来,有几个很好的论点可以说明我应该提交两篇独立的论文;它之所以是一篇,更多是历史原因而非理性原因。
结构(The structure)。一旦你确定了你的核心贡献,就有一个默认的写论文的配方。顶层结构默认为引言(Intro)、相关工作(Related Work)、模型(Model)、实验(Experiments)、结论(Conclusions)。当我写引言时,我发现把一个连贯的顶层叙述写在 LaTeX 注释里,然后在下面填充文本很有帮助。我喜欢围绕一个在第一句陈述的单一具体观点来组织我的每个段落,然后在段落的其余部分支持这个观点。这种结构使读者容易快速浏览论文。一个好的思路流程大致是这样的:1) X(如果不明显然,定义 X)是一个重要的问题 2) 核心挑战是这个和那个。2) 以前关于 X 的工作用 Y 来解决这些问题,但这存在 Z 问题。3) 在这项工作中,我们做了 W (?)。4) 这具有以下吸引人的特性,我们的实验表明了这一点和那一点。你可以稍微调整这个结构,但这些核心要点应该被清晰地阐述。再次注意,论文是围绕你的确切贡献进行手术般精确组织的。例如,当你列出挑战时,你要列出的正是你稍后要解决的东西;你不会漫谈与你所做的工作无关的事情(你可以在结论中稍后多推测一点)。在整篇论文中保持合理的结构很重要,而不仅仅是在引言中。例如,当你解释模型时,每个部分应该:1) 清晰解释该部分在做什么,2) 解释核心挑战是什么 3) 解释基线方法是什么或其他人以前做过什么 4) 阐述动机并解释你做了什么 5) 描述它。
打破结构(Break the structure)。你也应该随意(并且被鼓励!)在某种程度上玩转这些公式,为你的论文增添一些趣味。例如,看看这篇来自 Razavian 等人在 2014 年的有趣论文,它将引言构建为学生和教授之间的对话。这很聪明,我喜欢。再举个例子,Alyosha Efros 的许多论文都带有一种俏皮的语气,是写有趣论文的绝佳案例研究。仅举众多例子中的一个,看看他与 Antonio Torralba 合写的这篇论文:无偏见地看待数据集偏见。我见过的另一个效果很好的可能性是包含一个常见问题解答(FAQ)部分,可能放在附录里。
常见错误:流水账(Common mistake: the laundry list)。一个非常常见的要避免的错误是“流水账”,它看起来像这样:“这是问题所在。好了,现在为了解决这个问题,我们首先做 X,然后做 Y,然后做 Z,现在我们做 W,这是我们得到的结果”。你应该非常努力地避免这种结构。每一点都应该被证明、阐述动机、解释。你为什么做 X 或 Y?有哪些替代方案?其他人做了什么?可以说这是常见的做法(如果可能的话添加引用)。你的论文不是一份报告,不是你所做工作的枚举,也不是你按时间顺序记录的笔记和实验到 LaTeX 的某种翻译。它是一个经过高度处理、非常集中的关于一个问题、你的方法及其背景的讨论。它旨在教给你的同事一些东西,你必须证明你的步骤是合理的,而不仅仅是描述你做了什么。
语言(The language)。随着时间的推移,你会积累一套写论文时使用的好词和坏词的词汇表。具体以机器学习或计算机视觉论文为例,在你的论文中,你从不“研究(study)”或“调查(investigate)”(这些是无聊、被动、糟糕的词);相反,你“开发(develop)”或者更好的是你“提出(propose)”。你不会展示一个“系统(system)”或者,令人不寒而栗的,“流程(pipeline)”;相反,你开发一个“模型(model)”。你不是学习“特征(features)”,你学习“表示(representations)”。而且,上帝保佑,你从不“结合(combine)”、“修改(modify)”或“扩展(expand)”。这些是增量式的、粗糙的术语,肯定会让你的论文被拒 :)。
提前 2 周的内部截止日期(An internal deadlines 2 weeks prior)。不是很多实验室这样做,但幸运的是,Fei-Fei 对于在截止日期前 2 周设立内部截止日期非常坚决,届时你必须提交至少 5 页的草稿,包含所有最终实验(即使数字不是最终的),这份草稿会经历一个与外部审稿过程相同的内部审稿过程(填写相同的审稿表格等)。我发现这种做法极其有用,因为强迫自己完成完整的论文几乎总能揭示出一些你必须运行的关键实验,以使论文流畅,使其论证流程连贯、一致且有说服力。
关于这个主题的另一个很棒的资源是 Jennifer Widom 的《撰写技术论文的技巧》。
写代码
你很多时间当然会被用来执行你的想法,这可能涉及到大量的编码。我不会对此过多赘述,因为它并非学术界独有,但我想提出几点。
发布你的代码(Release your code)。这是一个有点令人惊讶的事实,但你可以发表论文而不发布代码。你也会感到很多不发布代码的动机:这可能是很多工作(研究代码可能看起来像意大利面条,因为你迭代非常快,你必须清理很多东西),想到别人可能会根据你顶多算体面的编码能力来评判你可能会令人生畏,维护代码并回答别人关于它的问题(永远)是痛苦的,而且你可能还会担心人们会发现使你结果无效的错误。然而,正是出于其中一些原因,你应该承诺发布你的代码:它会因为害怕公开羞辱而迫使你养成更好的编码习惯(这最终会节省你的时间!),它会迫使你学习更好的工程实践,它会迫使你对代码更加彻底(例如,编写单元测试使错误的可能性大大降低),它会使其他人更有可能跟进你的工作(从而导致你的论文获得更多引用),当然,作为对所做工作的精确记录,它对每个人来说都更有用,以供后人参考。当你确实发布代码时,我建议利用 Docker 容器;这将减少人们因为无法安装所有依赖项(及其精确版本)而给你发邮件抱怨的头痛次数。
为未来的你着想(Think of the future you)。确保为你自己把所有代码都记录得非常好。我保证你几个月后会回到你的代码库(例如,为论文的最终版本做一些额外的实验),你会感觉完全迷失在其中。我已经养成了在我所有仓库中创建非常详尽的 readme.txt 文件的习惯(供我个人使用),作为给未来自己的笔记,说明代码如何工作,如何运行等等。
做报告
所以,你发表了一篇论文,而且是口头报告(oral)!现在你将有机会向大量听众做一个几分钟的报告——它应该是什么样子的?
报告的目标(The goal of a talk)。首先,有一个常见的误解,认为你报告的目标是告诉听众你在论文中做了什么。这是不正确的,只应是第二或第三级的设计标准。你报告的目标是 1) 让听众对你研究的问题感到非常兴奋(他们必须认识到它的价值,否则他们不会关心你的解决方案!) 2) 教给听众一些东西(理想情况下,同时让他们领略到你的见解/解决方案;不要害怕花时间在其他人的相关工作上),以及 3) 娱乐(否则他们会开始查看他们的 Facebook)。理想情况下,到报告结束时,你听众中的人会思考着类似“哇,我研究的领域错了”,“我必须读这篇论文”,以及“这个人对整个领域有着令人印象深刻的理解”的混合想法。
一些要点(A few do’s):有几个特性可以让报告更好。例如,要做:大量的图片。人们喜欢图片。视频和动画应该更谨慎地使用,因为它们会分散注意力。要做:让报告具有可操作性——谈论一些听众在你报告后可以做的事情。要做:如果可能的话,进行现场演示,这可以使你的报告更令人难忘。要做:阐述你的工作所属的更广泛的知识体系。要做:将其发展成一个故事(人们喜欢故事)。要做:引用,引用,再引用——大量引用!向你的同事致谢只需要很少的幻灯片空间。这让他们高兴,并且总是对你有利,因为它表明你对自己的贡献保持谦逊,并意识到它建立在许多先前工作和并行工作的基础之上。你甚至可以引用在同一会议上发表的相关工作,并简要地宣传一下。要做:练习报告!首先自己单独练习,然后向你的实验室/朋友练习。这几乎总能揭示出你的叙述和流程中非常有见地的缺陷。
不要:文字文字文字(Don’t: texttexttext)。不要用文字堆满你的幻灯片。应该很少或没有项目符号点——演讲者有时试图用这些作为拐杖来提醒自己应该讲什么,但幻灯片不是为你准备的,它们是为听众准备的。这些应该放在你的演讲者备注里。关于堆满幻灯片的话题,也要尽可能避免复杂的图表——你的听众有固定的信息接收带宽,我保证你自己非常熟悉且“简单”的图表对于第一次看到它的人来说并不那么简单或易于理解。
小心使用:结果表格(Careful with: result tables)。不要包含密集的结果表格来显示你的方法效果更好。你发表了论文,我相信你的结果还不错。我总是觉得这些部分很无聊且没有必要,除非数字显示了一些有趣的东西(除了你的方法效果更好之外),或者当然,除非有一个你非常自豪的巨大差距。如果你确实包含了结果或图表,要通过过渡效果逐步构建它们,不要一次性全部贴出来,然后在某张幻灯片上花 3 分钟。
陷阱:无聊/困惑之间的狭窄地带(Pitfall: the thin band between bored/confused)。设计让大部分听众学到东西的报告实际上相当棘手。一个常见的失败案例(作为听众)是看到一些报告,我在前半部分感到极其无聊,在后半部分完全困惑,到最后什么也没学到。这种情况可能发生在那些有一个非常笼统(过于笼统)的概述,后面跟着一个技术性(过于技术性)的第二部分的报告中。尝试识别你的报告何时有陷入这种情况的危险。
陷阱:时间不够用(Pitfall: running out of time)。许多演讲者在早期介绍部分(通常可能有些无聊)花费太多时间,然后疯狂地快速过完最后几张包含最有趣结果、分析或演示的幻灯片。不要做那样的人。
陷阱:公式化的报告(Pitfall: formulaic talks)。我可能是个特例,但我总是喜欢挑战传统的非公式化报告。例如,我鄙视提纲幻灯片。它让报告变得如此无聊,就像在说:“这部电影是关于一个魔戒的。在第一章,我们会看到一个霍比特人得到了魔戒。在第二章,我们会看到他前往魔多。在第三章,他会把戒指扔进末日火山并摧毁它。我将从第一章开始”——拜托!对于更长的报告,我会使用提纲幻灯片来帮助听众在走神时(超过 30 分钟他们不可避免地会走神几次)保持定位,但应该谨慎使用。
观察和学习(Observe and learn)。最终,提高做报告能力的最好方法(就像写论文一样)是有意识地注意优秀的(和不那么优秀的)演讲者做了什么,并在你的头脑中建立一个二元分类器。不要只是享受报告;分析它们,分解它们,从中学习。此外,密切关注听众及其反应。有时一个演讲者会放出一个包含许多数字的复杂表格,你会注意到一半的听众立刻低头看手机并打开 Facebook。建立一个关于导致这种情况发生的事件的内部分类器,并在你的报告中避免它们。
参加会议
关于会议的主题:
去(Go)。参加会议非常重要,尤其是你所在领域的 1-2 个顶级会议。如果你的导师缺乏资金并且不想支付你的差旅费用(例如,如果你没有论文),那么你应该愿意自己支付(通常差旅、住宿、注册和食物大约需要 2000 美元)。这很重要,因为你想成为学术社区的一部分,并有机会认识该领域更多的人,交流研究话题。科学可能给人一种少数杰出独行侠在隔离中工作的印象,但事实是,研究主要是一种高度社会化的活动——你站在许多人的肩膀上,你与其他人在并行地研究问题,而这些人也正是你写论文的对象。此外,不幸的是,每个领域都有一些知识不会被序列化到论文中,而是通过社区的共同理解传播;比如哪些是下一个重要的研究课题,哪些论文最有趣,论文的内幕消息是什么,它们是如何历史发展的,哪些方法有效(不仅仅是纸面上,实际上),等等。成为社区的一部分并直接接触到集体智慧——首先从中学习,并希望稍后能影响它——是非常有价值(且有趣!)的。
报告:按演讲者选择(Talks: choose by speaker)。我总结出的一个会议技巧是,如果你在选择参加哪些报告,看演讲者可能比看主题更好。有些人比其他人更擅长做报告(这是一种技能,你会随着时间发现这些人),根据我的经验,我发现即使主题与你的研究领域不完全相关,去听他们演讲也常常是值得的。
真正的活动在走廊里(The real action is in the hallways)。创新(尤其是在机器学习领域)的速度现在远快于会议周期,所以你在会议上看到的大多数相关论文实际上已经是旧闻了。因此,会议主要是一个社交活动。我鼓励你将走廊视为未出现在日程表上的主要活动之一,而不是仅仅参加报告。在海报展示区(poster session)闲逛,发现一些你可能错过的有趣论文和想法也很有价值。
据说博士有三个阶段。在第一阶段,你看一篇相关论文的参考文献部分,大部分论文你都没读过。在第二阶段,你认得所有的论文。在第三阶段,你和所有论文的第一作者都一起喝过啤酒。
结束语
我找不到那句引言了,但我听 YC 的 Sam Altman 说过,在创办初创公司方面没有捷径或作弊手段。你不能指望通过某种方式操纵系统或装点门面来获得长期的胜利。我认为这同样适用于学术界。最终,你是在努力做好的研究并推动领域前进,如果你试图操纵任何代理指标,从长远来看你不会成功。尤其如此,因为学术界实际上惊人地小且高度互联,所以任何你试图用来粉饰你学术履历的可疑行为(例如,大量自引,将同一想法稍作修改多次发表,一次又一次地提交同一篇被拒论文而不做任何修改,故意试图忽略某些基线等)最终都会找上你,你将无法成功。
所以归根结底,这很简单。做好工作,恰当地沟通它,人们会注意到,好事就会发生。祝你旅途愉快!
编辑:HN 讨论链接。