科研那些事(万字长文,真诚分享)
科技
2024-10-17 14:31
山西
大数据文摘受权转载自AI科技评论
作者|韩晓光
我是香港中文大学(深圳)理工学院助理教授韩晓光,研究方向是计算机图形学和计算机视觉。我本科毕业后花了八年完成博士学业(两年硕士,两年 RA,四年博士)。2018年,我开始在港中深指导学生,2024年,实验室第一届博士生毕业。非常感谢这些学生在过去的时间陪着我一起学习、一起成长。这篇文章是过去几年我对科研的一些体会和感悟,其中很多在实验室的组会里或者和学生们的平时沟通中有表达过。值此毕业时机,想着把这篇文章作为礼物送给他们。(本篇文章写完后,除了自己的学生,我也发给了一些朋友,非常感谢他们的反馈和建议;反馈都很正面,尤其是有一些朋友提到要是读书时能看到,应该会有不少帮助;于是,我决定把这篇文章公开,希望更多的人可以看到,多少提供一些参考。)科研对应的英文单词是“research”,其中“re”是重复的意思,“search”是找的意思,因此科研就是在不停的找。以上是我学生时期在一场沈向洋院士的讲座中听到的,至今印象深刻。那么科研是要找什么呢?一般来说要找两个东西,一是问题,一是方法。找方法比较容易理解, 科研给大众的感觉就是在为了解决难题而寻找方法,例如寻找治疗癌症的方法。那么为什么科研还要找问题呢?要回答这个问题,我们首先要搞清楚什么是“问题”?根据多年科研体验,我觉得“问题”大抵只有两种:一种是学术界正在广泛研究的问题,例如当下视频生成的可控性问题等;另一种则是还没有被广泛研究、 处于萌芽状态的问题。这种情况下,一般需要通过需求牵引(例如扫地的需求带动了扫地机器人的研究)、逻辑推理(例如从如何做图像生成推广到如何做视频生成)、刨根问底(例如不断思考什么样的神经网络结构是最好的)等方式来找到问题。对于这类尚不明显的问题,当我们从复杂的情境中发掘出来后,还需进一步修饰和完善(即完整严谨地定义问题, 例如使用数学的语言描述问题的输入和输出)。如果把科研当成一种职业,以上是对这个职业的工作内容的一种解释。这些年的体会,我更想把科研理解成是一种精神,一种对待挑战时的心态。例如,我早年玩反恐精英的游戏会出现头晕的症状, 当时我的选择是放弃这个游戏。而我想应该还有另外一种心态是先研究一下为什么会头晕?是个人问题还是很多人都会头晕?如果是很多人都会头晕?那么再研究如何改进游戏以解决这个问题?所以,科研事实上无处不在。当然,从个人角度来说,如果凡事都去研究,多少有点钻牛角尖的意思了。我们可以选择去克服那些更吸引人的挑战。只要不断地迎接新的挑战,就会一直学习到新东西!这个问题或许是我做教职以来遇到的学生们问过最多的问题。刚开始当老师那会,我不知道如何答这个问题。因为,每次想自己的过去,我发现很少有过这种疑惑。读硕士、做研究助理、读博、到找教职,很长的一段时间以来,每次面临选择的时侯都是毫不犹豫的选择继续做研究,因为每次都有感兴趣的课题没有做完。多年科研经历之后,再尝试回答这个问题,我觉得还是很难。因为要想知道你是否适合科研,你除了需要了解科研,还需要了解自己。后者或许比前者更难。为了提供一些参考,我想分享一些做科研的过程跟常规学习过程的一些区别。这里说的常规学习指的是大学中的课程学习、完成作业、小组项目或是参加比赛等。一般来说,这些学习都会有确的目标以及答案,因此当你在过程中遇到不顺利时,你会很明确知道是自己的实现过程出现了问题,接下来就去定位问题即可。而科研过程中导致不顺利的因素则非常多,可能是你实现中出现了问题、可能是方案设计不好、可能打一开始的目标设定就是错的等等,此时定位问题则变得异常困难。而当你一直寻找不到问题时,便会产生自我怀疑,怀疑自己的能力、怀疑课题的合理性、怀疑自己选错了方向、怀疑自己当初就不该读博等等。此时,需要很强的信念和自我说服的能力才能继续前行。科研中大部分时间都是不顺利的,这是一个会不断自我怀疑,也需要不停自我说服的过程。从这个角度看,科研或许更加适合乐观的以及有强大信念的人。在大家看来,科研的过程需要很多的能力,需要能想点子、会写代码、能写论文、会做报告等等。但这并不意味着只有六边形战士才适合做科研,因为科研是一个合作行为,你可以擅长其中个别几种能力也可以做得很好。因此,对于刚本科毕业的学生有个常常会犯的误区:我成绩好,就理所应当要去继续读博,我成绩不太好,就不适合继续科研。一个最好的判断自己是否适合科研的方法就是去尝试一下, 可以本科期间就进入课题组实习、毕业后先读个硕士或读博前先做一段时间研究助理等。我觉得在你做选择时有两个标准可以作为参考:一是兴趣,如果你感兴趣那就去做;如果你不知道是否真的喜欢,那么只要你不排斥再看接下来这件事对你是否有挑战,如果有挑战那就不妨一试,因此有挑战你就一定能有收获。很多人提到科研都会自然想到发表论文,觉得科研的目的就是论文, 我早年也是如此认为。这也可能是由于论文常常会被作为评价指标, 而当很难判断论文的质量时,数量就成了最直观的指标。因此,也就出现了为了论文而论文的科研范式:先读一堆论文,然后总结论文的规律并形成模版,最后便是套用模板,把科研当成填空题来做。我觉得模版是一件极好的事,因为它给了一定的规范和引导。例如,读大量的论文后你会总结出在“Introduction” 部分你要明确自己要解决的问题时什么?为什么解决这个问题对于整个领域是重要的?以及你这个工作的贡献又是什么?尝试答这些问题确实会对你自己的科研有极大的帮助。事实上,我不喜欢的是把论文当成了科研的目标。我觉得科研的目标只有一个,那就是探索未知并形成知识!而当你形成知识后,你需要以一种规范的形式,即论文,呈现出来。因此,论文只是漫长科研过程的阶段总结以及中间产物。当然,论文还有一个非常重要的功能,就是发表你的观点,用于与社区与同行进行交流。我很喜欢把“论文”作为“paper”的翻译。即便是理工科的论文,也需要有论点,并配以论据作为支撑。对于理科,论据可能是公式推导,对于工科,论据则可能是实验验证。我记得刚开始科研时会非常喜欢读论文中方法的部分, 遇到好的文章,每每都会叹服于其中设计的精巧与理论的优雅;而当已经非常熟悉某个研究领域的方法后,我更喜欢读论文中实验和结果的部分,会不自觉的享受“找茬”的感觉,希望能从中找到问题,找到自己的研究方向;再到一定阶段后,我更喜欢读论文中“Introduction”和“Related work”部分,因为这里时常有作者关于他们对整个研究领域的态度和观点。如今,人工智能领域的文章爆炸式增长, 沉下心来写文章的学者越来越少, 也很少看到有精彩观点的论文了。如果把论文当成一种交流工具,那么就没有必要太拘泥于形式。我听说过很多学者在写作时非常注重词语的用法,甚至到纠标点符号的程度。当然,我非常尊敬这种匠人精神,他们或许是传承于老一辈学者,因为以前的论文代表着人类的文明,是需要收藏到图书馆的。不过针对当下电子时代, 我个人倒并不觉得仍有这个必要。就像两个带方言的人一样可以很好的沟通交流。同样作为交流,一篇论文只要能清楚的传达了观点,充分的论证了观点,也就足够了。在形成每篇论文的过程中,不论是问题的定义还是技术方案,作者往往都需要经过多种尝试迭代之后才能形成最终的形式。而我们看到的论文往往只会呈现最终的形式。对于众多科研工作者,尤其是刚开始做科研的学生来说,这些论文背后那些多次的失败尝试才是真正宝贵的财富。这也是我发起和组织“论文背后的故事” 系列讲座的初衷,目前的讲座形式是以访谈的形式让一些知名学者分享自己做论文过程中的体会和经历。事实上,我也一直在思考如何能把更多论文背后的尝试和故事以各种不同的形式呈现出来。2008 年暑假,我拿到了保研资格,也确定了当时浙江大学的刘利刚老师作为硕士导师(刘老师是我的科研启蒙导师,他后来去了中科大)。在刘老师的指导下,我开始入科研的大门。最初的一段时间,刘老师给我安排了两件事:一是写代码实现经典的图形学论文(例如Poisson Image Editing 等);二是读形状分割(Mesh Segmentation)方向的相关论文。每每想起当时的状态,印象中满是兴奋的感觉。谈及此,记忆中出现了两个时刻:有一次,大四的一天晚上,我在努力解决遇到的一个比较顽固的 bug。当宿舍其他人都睡了,我便也上了床,却始终睡不着。辗转了两个小时后,我突然想到了一个可能的问题,于是悄悄打开电脑,一下子就解决掉了,那股兴奋劲让我一个晚上没睡着;还有一次,与朋友们在外面逛街,那段时间脑子里满是形状分割的论文。突然看到一只大象的雕塑,便想着如何把鼻子分割出来。思考到这,发现之前看过的某篇论文中有一处可能理解错了,导致逻辑无法自洽,一时间思路被堵住。当时的自己还没有学会转移注意力,导致一直被问题所困,无心继续逛街。最后,在路边找了一家网吧,下载了那篇论文,研究了许久,最终想通了问题。现在想来,当时那种对知识的渴望,解决一个问题以及学习到一个知识点后的兴奋都是那么的纯粹。这种纯粹在我后面的读研和读博期间也都一直有所保持。2018年,我开始了自己的教职生涯,开始带着学生做科研,其中最重要的一个环节是选择做什么样的课题。一开始,我会根据自己看的论文或者听别人的分享,以好奇心去驱使去确定一些自己觉得有意义的研究问题。基于此,我带着学生们也逐渐开始有了一些不错的成果发表于计算机视觉领域的顶会(如 CVPR)上,并且还偶尔会有入选的 Oral Presentation,也有两次入选了Best Paper Finalist。当发现口头报告和最佳论文候选会受到更多的人关注时,我便开始研究这些论文的共性, 并尝试总结什么样的论文会被入选, 再根据这些规律来引导接下来选择什么样的课题。而凡事好像总有一个魔咒, 当你越是追求什么,越得不到什么。我也曾总结过做什么样的论文会火(即在社交媒体广受关注)、做什么样的论文会有高引用、做什么样的工作开源会有更多的 GitHub Star、做什么样的工作容易落地并带来产业界的经费支持。自此, 好奇心好像越来越不纯粹:当遇到一个有趣的问题时, 我会不自觉的问自己,做这个可以发最佳论文吗?可以受到多少人关注?有多大的落地可能性?对于学生来说,他们在做科研时也会有诸多顾虑。现在的人工智能领域, 中论文的随机性越来越大,很多论文也没有很高的质量。而我个人对于可以投稿的论文质量会有一定的要求,当学生的论文还没有达到要求时,我往往建议学生不要投稿。关于这一点,曾经很多刚开始读博的学生给过一致的反馈:老师,这个方向太卷了,我希望可以尽快有一个工作,先保证能毕业,我再去做有影响力的工作!虽然我不是很赞同和支持,但我非常能够理解这种焦虑。而带着这种焦虑,那种带着好奇心进行自由探索的纯粹也便消失了。那么如何才能回归纯粹呢?这个问题也一直困扰着我,确实很难。如果实在要给一点建议,我觉得我们要努力屏蔽掉周围的噪音:谁又发了几篇论文、谁的工作又带来了突破(被媒体报道)、谁又获奖了等等。然后把我们的精力聚焦到你现在正在解决的问题本身,去思考如果把问题解好。此外,给自己留出一点看论文的时间,去找一找最初那种学习新知识的状态。在做教职以来,我跟很多博士生有过交流,也包括不是自己的学生。而最常被他们问的问题可能就是:毕业后,我该如何选择,是去学术界还是工业界呢?而关于这个问题,我听过两种声音:有人觉得学术界发的论文都是废纸,做的研究大多没有价值,纯粹是在自嗨;有人认为在工业界所有任务都是在解决一些工程问题,毫无创新可言。过去的几年内,我虽然在学术界,但也跟很多工业界有一些合作,也有学生在创业。多多少少形成了自己的一些认知。我认为有三种不同的角色跟这个问题相关:科研工作者、创业者以及大厂的研发人员。当然在很多大厂,事实上也存在一些科研工作者。从目标来说,科研工作者是通过科研探索产生新知识;在大厂的研发人员是需要用知识来创造更多的钱;而创业者是探索如何把一些新的知识变成钱。从社会赋予的使命来说,我觉得学术界只需要考虑如何创造新知识,而不用去对这种知识是否有用以及是否能变成钱而负责。其实只要有好奇心,不停的产生问题,不停的去探索解答问题,就会产生知识。因此,在学术界,不能缺少好奇心以及自由探索的能力。心态上来说,也一定要有坐冷板凳的能力,也需要能有自嗨的能力。而工业界的使命,就是探索如何把知识转变成钱,在这个过程中也可能会产生新的知识。我觉得,从社会使命来说,工业界也需要把一些钱用于支撑学术界,用于创造更多的知识,这样便形成了一种正向循环。有了以上的理解后,对于一个博士生是选择学术界还是工业界。我个人觉得:如果想成为科研工作者,你需要有自嗨的能力,要有保持好奇心的能力。科研工作者有两种,一种在高校,一种在研究所或者公司的研究部门。而如果你想以高校的教职为目标,除了以上提到的, 你还需要有耐心,即培养学生的耐心。除了创造知识以外,高校教职还有个非常重要的使命是培养学生。然而每年都有新学生, 这就意味着,你可能要年复一年的做一些类似的工作。因此,没有一个不厌其烦的心态是很难胜任的;如果想进入工业界,你需要有执行能力。这种能力并不只是完成任务的能力,而是你接受甚至于乐意去做一些你不认同以及觉得没有意义的任务;我认为创业者需要更综合和更多的能力。其中一个很重要的能力是坚持的能力,你需要有足够强的韧性,在不断的濒临失败以及一线生机中“苟延残喘”。做科研的过程充满了不确定性,这种不确定性经常会让我产生突然后背发凉的状态:例如在某个项目执行过程中,突然产生的一个问题自己想不明白了,以致于可能会让一个已经执行了很久的项目突然失去了要继续做的意义。事实上,整个科研的过程就是一个不断问自己问题并且通过逻辑推理或者实验的方式回答自己问题的过程。在某个具体项目执行中,我们要学会问自己问题:例如,你为什么要做这个问题?你期望达到的目标是什么?你期望对社区产生什么样的贡献?解决这个问题有哪些可能的技术路径?可能的技术创新是什么?等等。对于如何问自己问题,我觉得有一个原则就是, 任何事情都问一下自己为什么?并且要以找茬的心态,不停的挑战(challenge)自己(我也会经常 challenge 学生)。只有在做的过程中对自己够狠,审稿人才会对你友好。除了要学会问自己问题,你还需要努力去回答自己的问题。你可以带着问题去做调研,去设计实验验证,也可以跟同行讨论,向导师或者前辈寻求帮助等等。对于问自己问题,在过去的科研经历中,我发现有两个非常容易被学生忽视的问题,而且也是非常难回答的问题。第一个是,当你想到了一个新问题,或者对于老问题的一种新思路后,你可能要尝试问一下自己:为什么这件事没人这么做过?是其他人真的没有想到过还是他们觉得没意义或者是尝试过但失败了。我在过去的经验中发现其实经常你认为新的东西,一调研会发现已经有很多相关的工作了,甚至于会有一些非常早期的工作早就做过了尝试。而当你没有找到相关工作时,也确实有可能已经被别人尝试过,此时这个问题就变的很难回答。不过尝试去思考一下“为什么能被你想出来,以及凭什么最终能被你做出来”这个问题背后的原因和逻辑,或许能让你更加确定做这件事情的意义。另一个经常被忽视的问题是,当已经确定了一个技术方案时,而且也被验证了这个技术方案确实能带来效果的提升时,很多学生就会认为这已经足够了,便开始考虑写文章了。而此时,我觉得我们还需要问自己一个问题:现在这个已经是最佳的技术方案了吗?就不存在其他可能更好的技术方案了吗?要回答好这个问题也不容易,因为你需要想到所有可能的技术方案。当然,在项目执行过程中,我们可能不需要把所有可能的技术方案都想出来。但是对这个问题的思考一定会让你对于如何解决问题理解的更加深刻,也能大概率促进你对技术方案进行进一步的改机。在实际的科研过程中,我们可能会问很多问题,但这些问题也并不需要事无巨细,否则也就钻了牛角尖了。事实上,我们只需要选择一些重要的问题,并尽我们最大的努力尝试找到这些问题的答案即可。在过去的经验中,我们发现每一篇论文完成的时候,其实还有非常多的问题我们是不知道答案的,但这并不影响这篇论文的中稿。而那些遗留的问题也正是后面展开其他工作的出发点。在过去与学生合作的过程中,我发现他们之中有两种不同的工作方式和思维模式:第一种,当要解决一个问题设计算法时,他们必须要先把所有技术细节都想清楚了再开始去写代码实现;另一种,则是不管三七二十一,直接动手写代码,遇到问题之后再解决。我姑且称第一种是数理思维,第二种是工程思维。事实上,两种方式都能解决问题。在做一个完整的项目时,这两种思维方式也会产生很大的不同:第一种会花非常多的时间去思考问题的定义,算法的设计,如何产生创新性等等。由于这种思考往往需要非常多的时间,如果迟迟不动手执行,会导致项目进度推动非常慢;第二种会不经过多思考,直接上手开始执行,遇到问题解决问题,再遇到问题再解决问题。这种方式虽然会让项目进展加快,但很多情况下会由于缺乏思考,而让工作本身很工程,缺乏创新性。我认为一个项目是需要思考与行动的平衡的:在早期,由于有非常多的不确定性,因此需要思考多一点,要各种发散,尝试各种不同的路径;而随着项目的推荐,要慢慢的收敛,行动或者执行越来越多,靠实验不断产生出一些结论;当快要到投稿截止日期时,全力执行就可以了,例如跑实验和写文章等,无需过多的思考了。然而,我发现极少数的学生可以做到这种平衡,善于思考的学生会忍不住发散,善于动手的学生很难有大局的思考。此时就需要合作了,在过去我自己的项目中,我往往负责思考的部分,而学生更多担任执行的部分。在现在这个时代,人工智能领域的文章大爆发。我跟很多学生交流过,发现大部分学生做论文的方式是纯粹的工程思维:先选一个课题,再找到这个课题最新的顶会的论文,找到代码,尝试去跑一下代码,然后开始找到算法的问题,再去尝试各种手段解决问题,当把效果提升到一定程度后就开始写文章。我个人非常不喜欢这种方式,因为这样产生的工作往往很难有科学价值。而让我更顾虑的是,如果学生按这种方式投了文章并且中了(事实上目前很多这种这种文章都能中),会让他觉得发文章很容易,便少了对于科研的敬畏。然而, 如果把这种方式仅当成对于低年级学生的工程能力的锻炼,也不乏是一种不错的方式。我也确实遇到过以这种方式锻炼出来的学生,他们确实工程能力很强,就感觉只要有合理的思路,他们都能实现出来。不过,他们也有一个很明显的问题,当他们在做项目时一遇到问题,就想着怎么去克服并且会恋战,而可能这个问题并不是整个项目中重要的问题。很多人对于自己的兴趣是什么或者适合做什么类型的工作都有多多少少的困惑。其实有一个标准就是看你在做某件事情时是否会产生成就感:比如,我不喜欢玩电子游戏,因为我每次很快就死了,玩游戏并不能给我带来成就感。科研也不例外,很多人喜欢做科研就是因为当他们解决了一个问题时能给他们带来极大的成就感。然而,科研中更多的却是失败,即便强如何恺明,他也曾经表示科研过程中95%的时间都是失败的,只有5%的时间是可以享受成就感的。如果我们定义问题被解决了以及论文中了是成功的话,那其实很多学生是长时间得不到成就感的,尤其是低年级学生。我自己的学生中,一篇论文屡投屡拒或者两三年内没有论文发表的情况大有人在,我自己学生时期也有一样的经历。这种长时间获得不了成就感的状态确实非常搞人心态,也确实有很多学生因为此放弃读博,因为此压力巨大,产生焦虑甚至开始抑郁。我曾经遇到过几个,也非常想帮助他们。不过这种心态问题需要每个人自己的调整。我觉得这里面的本质问题是对于每个人来说,你如何定义成功以及成就感。如果你认为论文中了才是成功,才能获得成就感,那势必会常年得不到正反馈。因此,我们需要把成就感分解。我们可以把项目分解成几个模块,或者几个问题,当解决掉一个问题后,就是一种成功,那可能几个月内你就能获得一次正反馈。如果一个 bug 被你解决了或者一篇论文被你看懂了,就算一次成功,那可能你每天都能感受到成就感。如果你不把论文本身当成你做科研的目标,而把学习当成目标,那么只要今天比昨天更博学了,你就会有成就感。当然,随着自己学习的东西越来越多,如果不做一些改变,那你感觉到的成就感也会逐渐变弱。此时就说明了你可能需要更大的更多的挑战了,你可以开始尝试做更难的问题,或者开始换一个不同的方向进行探索等等。以上的观点,我曾经跟不少学生都提过。也有学生反馈说:这很“鸡汤”!而我觉得其实我们还是需要鸡汤的,因为鸡汤确实能提供一些能量。大家都会说“带”学生,早期我对于带学生的理解是:导师有一些想法有一些想实现的科研目标,他需要带着一些学生跟他一起去完成。而在我教职的早期,确实是这么执行的,几乎所有学生做的项目都是我自己的想法,都是我想去探索的问题。对于他们来说,确实在过程中得到了锻炼,收获了经验。但现在想来,我把学生当成了工具,让他们去帮我实现我的梦想。期间,我也遇到过很多有自己想法的学生,他们有自己感兴趣的目标想实现。曾经也有过学生,我跟他沟通了很久,建议他沿着我的思路去执行,即便他答应了。但沟通完之后,他还是按照自己的想法去执行,这种情况确实让人生气。关于如何指导学生,我也问过很多人。曾经问过南洋理工大学的刘子纬老师(他是香港中文大学汤晓鸥老师的高足),他的导师是如何指导学生的。我得到了一个词“包容”。我也曾经问过 CVPR 2024最佳论文一作李正奇博士,他的导师(康奈尔大学的 Noah Snavely 教授)是如何指导学生的。我印象中很深刻的一件事情是,他的导师会有一些自己特别感兴趣想做的课题和想法,一直尝试在 sell 给自己的学生去做,但都没成功。基于以上的经历,让我开始重新思考了与学生的关系。作为科研工作者,我们需要带领团队的学生去做一些我自己认为的有意义的课题。而作为教育工作者,我们需要更多得去支持学生去成就他们自己。关于导师与学生的关系,我不是很喜欢“指导” 这个词,我更愿意以一种合作的方式与学生们互相成就、一起学习、共同成长。任何社区大了,而资源有限,便需要分配资源的规则,也便有了评价体系。学术界也不例外,而有了评价体系,科研便有了目的性。有目标引导本身是好事,但我们需要一个好的评价体系。当评价体系不完善时,目标引导可能会导致恶性竞争。这个时候,为了生存,很多学者便要逼迫自己开始做一些自己不愿意做的事。这件事情困扰了我很长一段时间。而不知道什么时刻,我无意间听到了一句话“文人还是需要一点风骨的”,这句话一下子让我释怀了很多。现在的学者在古代就是文人,我很认可“学者也需要一点风骨”,通俗来说就是“别把自己弄丢了”。总结:最后,我还是想把之前组会中分享过的两个东西再送给大家:一、做科研需要“眼高手快心大”,眼高需要我们多思考,把目标定高;手快需要我们勤动手,加强自己的执行力;心大需要我们对待短期的失败粗糙一点,别想太多。二、经常问问自己:“我对未知的事物还有浓厚的好奇心吗?” “当解决了一个问题,哪怕是很小的问题时,我还会兴奋吗?”当你发现你的好奇心和兴奋感开始减弱了,请努力保护好它们!
谷歌被俄罗斯罚款2,500,000,000,000,000,000,000,000,000,000,000,000美元