• [转载]科研的难与易


    下面内容摘自2019年第8期的《中国计算机学会通讯》,五位2018年CCF优博奖获得者的科研经历与心得体会。

    蒋炎岩的分享

    面对难题

    网络上大家常说“读博是个很讲运气的事”,碰上好的导师、好的方向,博士就读得顺风顺水,否则连毕业都是遥远的奢望。我读博期间遇到的第一个难题就与此相关 :我遇到了一位好的导师,但不巧没有立即遇到适合自己的研究方向。本科时我是参加过国际大学生程序设计竞赛全球总决赛 (ICPC World Finals) 的“职业选手”,也对系统软件颇感兴趣。经过一番考虑(主要是认识到自己数学训练上的不足)之后选择了计算机软件方向。因为之前有一定的算法竞赛背景,所以在导师的帮助下选择了一个和普适计算相关的研究问题。

    然而我在第一个研究问题上很久都没有显著的 进展。我心中还有一个挥之不去的疑问 :我做的这个东西到底有没有用?我想很多博士生都会面临这 种困扰,觉得自己在做一些注定要被淘汰的东西, 提不起兴趣,仿佛是对自己能力不足的愤慨。颇为 流行的调侃是“博士入学的目标是改变世界,但读 了几年后,就想赶紧逃离了”。幸运的是我虽然出 师不利,但我遇到了好的导师,趁着我“改变世界” 的决心还没凉透,在导师吕建教授和张成志教授的 帮助下我找到了新的研究方向,也就是在第一部分 中提到的并发程序观测相关的问题。

    在情绪略有消极的同时,我做了一个(后来看 来十分重要的)选择 :虽然我的研究问题进展缓慢, 但我对计算机科学的憧憬和热情依然没有降低,所 以在那个时候我涉猎了很多“无关”的教科书、论 文和公开课,也听了很多学术报告。我们系里各个 研究方向的老师或许都有印象,听报告次数最多的那个“外行人”可能就是我了。那个时候我还培养 了阅读杂志的习惯,例如阅读每一期 Communications of the ACM (CACM),到现在已经有 10 年了, 虽然有不少文章并不能完全读懂,但也读到了很多 令我惊叹的好文章,也帮助我建立了“其他领域的 人在用什么方法解决什么问题”的世界观。我向年 轻的博士生们推荐 CACM 和《中国计算机学会通讯》(CCCF),其中的文章能带给科研新手很多启发。坚持总是有点困难的,不过之后的回报也的确出人意 料。我因为好奇蒂姆·拉夫加登(Tim Roughgarden) 这样的算法领域的专家如何教入门级的算法课(我 是江苏省青少年信息学奥林匹克竞赛委员会的成员, 每年有给中学生讲课的任务)而去听了他在Coursera 上的公开课,因而了解到克罗斯比(Crosby) 和瓦拉赫(Wallach) 早在 2003 年发表的算法复杂性攻击的工作 [12]。恰恰是这个机缘巧合,启发我们做了正则表达式复杂性攻击的工作,并且很意外地获得了ACM SIGSOFT 的杰出论文奖。这段经历让我相信上天总是眷顾那些持续付出的人。

    接受挑战

    集齐了好的导师和好的研究方向,读个顺风顺 水的博士依然是不太可能的。博士研究生面临的典型问题我基本上都遇到过。第一个挑战就是阅读文 献。看论文有些类似机器学习中的训练过程 :在看到研究问题以后,先试图给出自己的分析和方案, 然后再看作者的做法,如果有自己没能想到的奇思 妙想,再通过“反向传播”纠正自己思路的盲区。我的导师告诉我,必须阅读100篇甚至更多的论文,才能对一个研究领域有一些基础的感觉。我谨记这个教诲,不敢怠慢。令人惊奇的是,后来看论文的速度越来越快了。鉴于选择了一个跨领域的研究问题,坚持不懈使我看到了很多精彩的工作和不同的研究风格——有时候体系结构和程序设计语言研究者看问题的角度很不一样,但在一些细微的地方又不谋而合。

    第二个挑战来自做研究的过程。理解了相关的研究工作之后,我好不容易有了一个很棒的想法,后来却发现已经被麦克·邦德(Mike Bond) 在OOPSLA’13(ACM 面向对象编程、系统、语言和应用会议)上发表了。一方面感到很受挫,但另一方面自己也挺开心的 :能和当前最好的研究工作想到一块去,说明也许还能再坚持一下。于是我想通了 :我们诞生的想法,99% 都是别人已经想到或者没有用的(比如实际上实验效果并不好);但如果能想出 100 个,成功的概率就会很大。所以每当我有新想法时就会记下来,隔段时间再回顾一下,有些可能被否定,有些则可能有新的进展。

    想通了这一点,我觉得这才是真正摆正了“读 博士”的心态,剩下的就容易多了:只需时间的积累。即便好的想法出现是小概率事件,但只要大量重复, 终归还是会有的。所幸我领悟这两点没有花太多时 间,加上导师给了我非常宽松的研究氛围,支持我 在各种奇思妙想上试错,才顺利完成了博士期间的 研究工作。

    回归初心

    在读博期间我申请了国家留学基金委的访问项目,但因为不知为何的拖延症,联系导师的事项拖到了临近申请截止日期。再一次在导师的大力帮助下,我在很短的时间内联系到了俄亥俄州立大学的秦锋老师,并且成功完成了申请。在联系之初,我对秦锋老师的研究背景了解甚少,只知道和我们的工作有一些交集,对这段访问经历也抱有很大的忐忑。有时候不得不说读博需要一些运气。随后我很惊讶地发现我读过秦锋老师的研究组在OSDI’14(计算机系统领域顶级会议)上发表的一篇有关崩溃一致性的论文, 非常喜欢。所以这一方面是运气,另一方面是之前 阅读论文的积累派上了用场(这是一篇和我研究方 向“完全无关”的论文)。

    于是在访问期间我欣然选择了崩溃一致性相关的研究问题。我们做了一个很有趣的小工具 :用ptrace 拦截系统调用,用虚拟设备收集块设备的日志,然后用一些算法上的小技巧来自动检测应用程序中的崩溃一致性缺陷。对于有足够技术储备的我来说都是轻车熟路,在半年的访问期间就完成了选 题、代码、实验,找到了包括Coreutils、Gzip 等重要软件里的缺陷,论文发表在了 FSE’16(ACM 软件工程基础国际研讨会)上。这些小技巧和我之前 的研究关系甚少,也就是在研究起步受阻的时候, 做的那些“无用功”派上了用场。最近我收到了Perl 社区的感谢,在最新的稳定版里修复了我们报告的缺陷。回顾自己求学的经历,技术方面的积累 都是互联网和开源软件培养的,自己一直在索取, 如今能做出一些微小的回报,欣喜甚至胜过获得博 士学位。

    在秦锋老师的指导下,我阅读了很多计算机系 统领域的经典论文,有些甚至追溯到 20 年前,若不是他言传身教,自己很难了解研究的历史脉络, 其中不乏影响数十年的奠基性论文。秦锋老师还教导我们两件事 :“离开你的舒适区 (Get out of your comfort zone)”和“不要轻易放弃 (Don’t give up easy)”。这两句话我发自内心地赞同。每次在我的研究似乎山穷水复疑无路时,却又总是能绝处逢生, 当然也可能是因为自知天资有限,并敢去尝试那些 最难的问题吧。之后我也一直鼓励我的学生,遇到 困难的时候给自己一点时间,以自己的经验总能扛 过去。因此出去走一走,和不同的人聊一聊,对博 士生来说或许是非常重要的。

    这一小段经历对我往后的研究方向产生了很大 的影响。我不再像刚找到研究方向时只想着“解决点什么问题”,“改变世界”的初心似乎又回来了。在此之后我走上了更实用的研究路线,关注如何从 理解需求出发切实地提高软件的质量。我们实现的 自动化工具在Linux 内核和GCC 等基础性软件上找到了很多前所未知的缺陷。我把现在的研究风格总结成“For fun and profits”,首先为了程序员的那种自我满足,其次是创造一些对社会有用的实际价值。当二者达成一致时,往往能做出不错的研究工作。

    感悟

    做研究、读博士到底是难还是容易呢?我想二者皆有。计算机科学里很多时候让我们面临多个选择之间的取舍(trade-off)。挑战困难的问题令人头疼, 但即便挑战看似失败,它却依然帮助你成长,给你 丰厚的回报——回头看之前觉得困难的问题时,反 而觉得容易了。世界就是这么奇妙,我们离理解它 还差得远。

    走上计算机科学的道路多多少少算是“命中注 定”。自幼儿园起就相识的挚友彭泱 (Richard Peng) 和我一起从懵懂开始学习编程,让我总惦记大洋彼 岸那个解题神速的身影 ;大学时代 ICPC 竞赛的队友李昂和李坤帮我树立了对计算机科学的信心和热 情 ;读博期间我的导师吕建、马晓星、许畅教授给了我悉心的指导和无私的支持,才有了我今天的成 绩。想要感谢的人难以一一列举,有他们的陪伴才 让我始终对计算机科学心存热爱和感激。今天,我 站上讲台传授一个软件研究者对计算机系统的理 解,也从我的启蒙老师,已离我们远去的江苏省青 少年信息学奥林匹克竞赛委员会的李立新教授手中 接过接力棒,守护孩子们热爱计算机科学的初心。初心很简单——从来没有一个学科能像计算机科学 那样如此快速地让世界变得那么美好,难道不该去 珍惜和守护吗?

    易鑫 的分享

    在科研中,对我而言最重要的特质是什么?我 会说有两条 :敢为天下先的勇气和百折不挠的毅力。俗话说“兴趣是最好的老师”,自己乐于探索是一个好的科研题目的必要条件之一。然而,仅有兴趣 还远远不够。虽然空中盲打是我实现科幻梦的第一 个具体目标,但当我屡次失利,举步维艰时,也曾 怀疑过自己的选择是否正确。我始终记得支撑我的是导师史元春教授的一句话 :“一名研究者的价值,不是体现在发了多少钻空子的文章,而是在于做了 多少别人做不到的事情”。我想,这不仅是一名资 深研究者对于科研工作的感悟,更是一位大师对于 人生哲学的思考。在当今这个学科飞速发展、机遇 与挑战并存的时代,我们可以很容易地发表受审稿 人青睐,但是影响力和实际价值十分一般的文章; 也可以瞄准那些有更大意义,但是难度更高,探索 时更加有风险的难题。我想,对于每个硕士和博士 而言,这都是一个考验内心的选择。正如我们在这 个充满诱惑的社会中,站在国家和学术的前沿时, 是安然求稳还是笃定前行,每个人心中应该都有自 己的答案。我博士毕业,选择了继续从事博士后研 究进而谋求教职时,也有人问我,你为什么要舍弃 百万的年薪,做着看起来这么辛苦的事情?我的回 答是,因为这样对我而言,更能体现自己的价值。

    如果把博士生涯比作驾车,那么掌握好正确的 方向和加足马力对于到达远方都是必不可少的。除 了选择正确的科研和发展方向之外,同样重要的是 坚定贯彻、不惧任何艰难的毅力。有的人会在科研 卡壳后选择退出,也有的人会想尽办法攻克难关。我想,我属于后者。做科研犹如在黑暗中摸索前行,前人的工作如点点萤火,只能为我们指引前方 的那一步路,仍然需要我们自己不畏前方未知的艰 难,奋力前行,才能守得云开见月明,成就属于自 己的学术之路。在不断摸索,攻克难题的过程中, 多种知识的融会贯通和深入的交流思考是必不可少 的。若我没有借鉴到解剖学和盲打指法的知识,想 必我到现在也无法将空中盲打的效果提升到现在的 水平。若我没有在无数次和导师、同学的讨论中相 互激发、提升思想,我也很难有办法完善地分析所 有细节。有勇无谋乃莽夫,只有兼具了毅力和方法, 才能在人类知识的边界上开辟属于自己新的土地。

    回顾博士期间的生活,是一段充满欢笑和泪水的日子。人们说读博士是痛苦的,会让你的身体和精神都受到这个世界上最残酷的折磨。我赞同这个观点,如果没有经受过最艰难的挑战,那么一定是没有触及到最深刻的内核。但从另一个角度看,博士是我们能心无旁骛地锻炼和磨砺自我的时光。能不受纷繁琐事的困扰,全心全意地花费几年的时光, 甚至吃饭和睡觉时都在思考解决方案的如痴如醉的 状态,只为做好那一两件事的感觉,实在是没有比 读博士更适合的机会了。我想,每一位成功取得博 士学位的同学,都有自己充满欢笑和泪水的故事。其中有失意的磨砺,有光鲜的舞台,有同行的伙伴, 有勉励的师长。这是一段不长的日子,只足够在专 业的领域做些许挖掘 ;这也是一段不短的日子,足以培养持续未来几十年的匠人之心。

    郑臻哲 的分享

    我本科毕业于西安电子科技大学软件工程专业,当时执着于用数学和代码解决实际问题 :既能对问题有严谨的数学建模与刻画,也能用代码将算法实现用于实际部署,还能将一些新奇的想法转化为产品。这种在理论与实践中来回切换和衔接的过程让我着迷。在本科期间,我参加了大学生程序设计竞赛、Topcoder 和Codeforece 等比赛。这些经历给了我计算机科学的启蒙,培养了我对代码以及算法的热爱。

    在大三下学期,我加入了实验室从事科研工作, 希望对算法设计有更深入的理解,也希望能够了解 什么是科研。我当时做的第一个问题是关于无线传 感器网络中的数据采集。我将其建模为网络流模型, 并改进弗洛伊德算法对其进行求解。这次的科研经 历让我感受到了学习思维的转变 :以前的学习与竞赛需要解决的问题通常都是给定的,只要提出解决 方案就可以,而科研中很重要的一个环节是提出问 题,新颖、重要的科学问题往往比解决方案本身更 重要。那些里程碑式的科研结论往往都是开某个领 域之先河。这种思维的转变让我感觉更有挑战性也 更有自主性。渐渐地,我觉得科研是一件非常有趣 的事情,我能从中不断地汲取新知识、研究新问题, 拓宽自身与人类知识的边界,这种成就感让人愉悦 与快乐,这或许就是科研的乐趣所在吧。

    本科的学习(主要是编程与科研)让我由衷地喜欢上计算机这门学科。找到自己喜欢的事情并为之努力一生是最幸福的事情。

    科研第一课:勤奋

    就像所有的大四学生在选择面前都会迷茫一样,在大四那年,我也不清楚自己是想继续从事科研工作,还是更喜欢用代码来实现有趣的产品。我只是觉得做研究挺酷的,也很享受找问题、解决问题并表述问题的整个科研流程。因此,我决定用读研究生这段时间来明确自己是否真的对科研感兴趣,是否愿意付出毕生的时间去从事这项事业。

    我非常荣幸能够到上海交通大学继续自己的学习生涯,并遇到了人生的导师、科研上的恩师吴帆教授与陈贵海教授。依稀记得第一学年,陈老师每次都参与组会讨论,最后都会给予我们高屋建瓴以及深入浅出的指导。陈老师时常叮嘱我们要勤勉刻苦,年轻人做科研需要夜以继日的努力,通常要熬满 50 个通宵才能取得一些科研进展。陈老师也是以身作则,办公室常年备着一床被子,他经常工作到深夜,发邮件和我们讨论问题。吴老师的认真刻苦也深深地感染了我们,每次回寝室前我们都会习惯性地看一眼吴老师的办公室,凌晨办公室的灯通常都是亮着的。周末节假日只要不出差也都会和我们讨论学术问题,现在周一到周五早上也依然是安排和学生讨论。

    两位导师的言传身教让我体会到了科研最朴实的第一课 :书山有路勤为径,学海无涯苦作舟。仍然记得 2014 年为投一篇论文,有一个月基本上是睡在实验室,多次看到过凌晨 4 点钟的交大校园, 鸟语花香,实在是青春最美好的记忆。就连在春节 过年回家的飞机上也在修改论文。努力最后也有了 回报,论文被顺利接收了。在求学的过程中,我认 识了众多优秀的同学,总是感叹于他们超群的智商, 自己也只能用勤能补拙来勉励自己,这样才能跟上 优秀小伙伴的步伐。

    科研第二课:扎实的基本功

    在勤奋的基础上,还需要掌握扎实的理论基本 功。我在两位导师的指导下受到了很好的科研训练。陈老师的斧头钉子理论让我印象深刻,也时刻提醒 我要掌握好基本数学工具,这样才能以不变应万变。陈老师将数学理论工具比作斧头,需要解决的现实 问题比喻成钉子。钉子会随着时代的变化而有不同 的表现形式,而斧头是大浪淘沙之后留下来的人类 知识的结晶。

    我读博士期间,通信网络与移动互联网是热门 课题,当下人工智能与机器学习则受到了更多的关 注。作为科研人员,不能随波逐流一味追求热点, 更应该挖掘业界背后本质的科学问题,用严谨的数 学工具予以分析与研究。陈老师时刻叮嘱我要掌握 好几把斧头,这样才能在做研究时游刃有余,灵活 自如。“既然还在少林,就要天天练拳,既然还在 美国,就要珍惜时间继续练功夫。”这是我在美国 做博士后期间陈老师对我的嘱咐。我不忘陈老师教 诲,在美国旁听了多门数学课程,也啃完了多本数学著作,甘坐冷板凳,修炼内功。我美国的博士后 导师R.Srikant 教授也曾和我说过,他很幸运自己熟练掌握了优化、概率与控制这三门基本数学工具, 大部分的问题最后都能用这些数学工具解决。比如 通信网络领域需要运用到优化与随机过程的理论知 识 ;人工智能与机器学习有大量的问题需要非凸优化、统计与控制系统的数学技巧。R.Srikant 教授以前是通信网络的资深学者,最近也在机器学习领域 做出了一系列有影响力的工作。或许对于他来说这 些具体问题背后本质上都是相通的数学问题。

    从陈老师和 R. Srikant 教授身上,我学会了理论研究的第二门课 :根深而枝叶茂,行久而名誉远。我相信在美国访问交流三年时间的理论积累,将会 是我学术生涯最宝贵的财富,让我能走得更高更远。

    科研第三课:提出好问题

    吴帆老师经常强调要做有影响力的工作。一个领域的开山之作很多时候都是解决了前人未曾考虑的问题。有时候提出问题往往比解决问题更重要。R.Srikant 教授让我对此有了更深刻的认知。记得第一次见到 Srikant 教授的时候,他就勉励我要研究基础问题。当时我还不清楚什么样的问题能够被称为是深远而且有意义的。Srikant 教授和我分享了他的理解。他提到有三类问题可以称作是基础的 :一类是领域里公认的数学问题,比如孪生素数猜想; 第二类是用巧妙的数学技巧优雅地解决了还未考虑过的理论问题 ;第三类是用理论或工程方法解决了实际系统中存在的问题。在科研过程中,我渐渐体会到这类问题的特点,并学会了寻找这一类问题的方法。

    Srikant 教授思考问题的方式也带给我一个很深的感触。他总是从最简单的数学模型开始考虑,思考问题背后的本质理论,用巧妙的数学技巧来证明一些有趣甚至反直觉的结论,对问题的分析与证明也更多地讲究数学背后的直觉。这让我感受到数学的简洁与美。这种研究风格让我学会了科研的第三门课 :好的问题是成功的一半,人的精力有限,更应该把时间放在寻找和解决重要且有影响力的问题上,并化繁为简,洞察问题背后的数学本质。

    科研第四课:授人以渔和团队建设

    一个好的导师和科研人员不仅能够自己做好学 问,还能为学生传道授业解惑,带领团队做出更大 成就的研究。一个良好的团队需要有合作与分工。陈老师为我们研究组争取到了充足的经费和实验室 设施,让我们能够心无旁骛地做好基础理论研究, 无须过多涉及工程任务 ;吴老师手把手地带领我们做好研究,攻克难题。为了锻炼我的领导能力,吴 老师还让我带领本科生做科研,为以后当老师指导 学生积累经验。为了提高我的国际视野,陈老师和 吴老师全力支持并资助我出国访学交流。我很荣幸 自己能够遇到Srikant 这样的大师,他对科研有独到的眼光和感觉,对教书育人更是孜孜不倦。两个小时的课,他可以不看课件、只靠一支粉笔讲下来, 这种将整个数学体系都了然于胸的能力让我震撼。这些让我明白了科研中的第四门课 :科研与教书考验的是一个人的综合能力与团队协调能力。不仅要 授人以鱼,更要授人以渔 ;不仅要实现小我的价值体现,更要成就团队的长远可持续发展。

  • 相关阅读:
    微信小程序scroll-view不动的处理
    AndoridSQLite数据库开发基础教程(4)
    Andorid SQLite数据库开发基础教程(3)
    Andorid SQLite数据库开发基础教程(2)
    Visual Studio 2019更新到16.2.3
    密码的复杂化#个人隐私保护系列#
    Nessus更新到8.6.0
    Visual Studio 2019更新到16.2.2
    Maltego更新到4.2.6
    Visual Studio 2019更新到16.2.1
  • 原文地址:https://www.cnblogs.com/gaopursuit/p/13322642.html
Copyright © 2020-2023  润新知