关于研究的一些感悟
以下文字是我应邀为微软亚洲研究院“树洞计划”关于研究方面的问题提供回答的完整版。 研究院公众号的版本有所删节。 文中有关同事的一些轶事是基于我的记忆描写的,如有偏差请见谅。
提问:
-
在做研究时,对问题的思考总是浮在表面上,每次需要更深入的思考时,总无法触及问题的核心。如何才能让自己的思维不仅停留在问题表面?
-
科研小白找 idea 真的好难,对领域并不那么熟悉,也不太知道想到了之后能不能 work,要反复想反复验证,一个 idea 一个 idea 地换,好累呀….
-
找不到科研方向怎么办?
-
在科研生活中,面对末知,找不到前进的方向时,如何制止自己的慌乱、思想抛锚与死磕(钻牛角尖),以让自己冷静理性?
回答:
这些都是非常好的问题,非常值得探讨。我深切理解同学们在做研究时所面临的迷茫和焦虑。作为一位”过来人”,我对这些问题可以说是感同身受。 即使到现在,我还在不断思考和探索如何将研究做得更深,如何把握未来趋势。我认为,这些问题没有绝对正确且统一的答案。 不过,作为一名长期在系统领域工作的研究员,我确实积累了一些个人心得。借此机会,我想将这些经验分享出来,希望对大家有所启发。
正视困难,接受挑战
严肃的研究是非常具有挑战性的。我还记得微软亚洲研究院前院长沈向洋有一次在闲谈中讨论过做研究的困难。 他大致的观点是:取得扎实的研究成果是一件很困难的事情,而且这并不会因为你以前做出过好结果,下一次就会变得容易。 听到这些话以后,我反而没有那么焦虑了。原来一流的研究员也觉得研究很困难啊! 在自己的研究项目中,我也体会到:在面对一流的研究问题时,人人平等,问题本身并不会因为你是谁变得更容易。 有鉴于此,面对困难,我的建议是首先要坦然面对,接受做研究就是很困难这一现实。在科研过程中”面对未知,找不到前进方向“是常态,而找到突破点实际上是罕见的。 接受这一现实,在研究过程中我们的心态就会更加平和,避免浮躁。
积极思考,厚积薄发
在进行研究时,我们经常会遇到对新领域不熟悉,难以找到合适题目,或者老师给了题目也无法深入开展下去等问题。 到现在我和我的同事还有实习生们也会时常陷入这样的困境。但在实际工作中,我发现一些思维技巧可以帮助我们更容易地脱困而出。
我经常运用的一种思考方法是追根溯源,多问为什么。当面临问题时,要问自己为什么会遇上这个问题?当想到某个方法时,可以问自己为什么会考虑这个方法? 对某个方案,要问自己为什么它与众不同?为什么它可能行得通,又为什么可能行不通?持续追问,直至问题的答案可以归约为领域中某个公认的设计原则 (比如系统设计中的separation of concern,modularization, layering,minimization等原则),或者问题或答案可以被形式化,并用准确的数学语言加以描述。 通常到这个阶段,我们对这个问题得理解就比较深刻了。
另一个思维技巧就是将问题抽象化(Abstraction)。我们要思考这个想法是否可以用更抽象的方式描述?它是不是代表着一类更普遍、更通用的问题? 例如,在研究深度学习集群调度和深度学习编译器的时候,我和同事们常问自己,是否可以采用更通用的技术,而不仅仅局限于深度学习这一特定场景来解决问题。 最终,这种思考方式反而让我们找到了一些不得不用的专门的技术方案。
还有一个方法就是从多个角度思考同一个问题。比如想证明一个问题的时,多问自己是否可以证伪这个问题(反证法)。 在考虑编译技术时,是否可以从作业调度的角度来解决。这些例子都是我在研究过程中实际遇到的情况。
在思考过程中,我们常常会遇到瓶颈。这时,与其他同事交流往往会有帮助。在工作中,我发现在一个开放、放松的环境中和同事交流,有时仅仅向同事讲述自己正在进行的工作就能激发新灵感。 在交流过程中,关注对方的“非语言”反馈十分重要。由于同事间的关系,有些同事可能不会直言对某项工作的看法。但他们的肢体语言和表情通常会“说实话”。 此时,我们应多探究为何他们会有这样的反应。是因为没有听懂,不感兴趣,还是不喜欢、不赞成?这些信号对提高工作质量至关重要。
最后,当思考陷入瓶颈时,可以考虑暂时放下问题,转换思维。在工作中,我和我的同事通常会同时考虑几个问题。一个问题解决不了就去思考其他问题。 我个人在某些问题上花了几年都没有进展,但有时在一个契机出现时突然就有了眉目。例如,自2018年起,我们就发现深度学习算子编译起来非常耗时,通常需要几个小时甚至更长时间。 那时我们在想能否重用某些编译结果,以节省编译时间?我们尝试了多种方法都没有进展,但这个想法在跨模型编译时反而显现出效果。 2020年,我们开发出的Retiarii(OSDI’20)系统采用了这一想法。两年后,我们在快速高效地编译深度学习算子上也取得了突破,做出了Roller(OSDI’22)这一系统。
综上所述,保持积极的思考态度并灵活运用各种思维技巧对学术研究很有帮助。 通过追根溯源、问题抽象化、从多个角度审视问题、与同事进行有效交流以及在遇到瓶颈时转换思维等方法,我们可以让自己更深入地思考,真正沉淀下来,最终取得突破,实现厚积薄发。
我相信,幸运之神会眷顾那些准备好的头脑。
保持激情,勇担失败
在研究过程中,我们时常会遇到挫折和失败,这种时刻很容易让我们陷入患得患失的情绪。然而,持续的负面情绪不仅对身心健康有害,还会削弱我们的研究热情和创造力。因此,如何应对这种情绪至关重要。
在面对挑战时,我个人的体会是在研究过程中要保持好奇心,专注于深入理解事物的本质,而非只关注简单的成败。实际上,在研究过程中,弄清楚某个现象背后的原因比仅展示结果更为重要。因此,当遭遇失败时,我们应该努力理解失败的原因。随着对问题的理解逐渐加深,我们就能够洞察到别人无法感知的见解(insight)。这种深刻的洞察力往往会引领我们发现新大陆,实现重要的突破。
此外,保持研究的激情是让我们长期坚持、实现厚积薄发的重要原生动力。在这方面,现任微软亚洲研究院院长周礼栋博士就是个很好的例子。 2019年春天,周博士突然告诉我们最近火热的区块链技术让他对分布式共识技术有了些新想法并刚完成论文初稿。我听了很诧异,最近那么忙,他哪来的时间写论文? 他回答说是趁着过春节时写的。周博士是分布式共识领域的专家,他的博士论文就是关于分布式共识的。如果不是对这一研究课题持久的兴趣,又是什么能让一位已经很有成就的研究员在假期工作呢? 在周博士和他的合作伙伴们的持续努力下,该成果最终获得了2020年度系统领域顶级会议OSDI的Jay Lepreau最佳论文奖。如何找到并保持研究热情是一个非常个人化的问题,每个研究员可能都有自己独特的答案。 我们可以尝试从自己热爱的领域、感兴趣的问题出发,寻找激发研究热情的源泉,从而在研究道路上走得更远。
预测未来,引领潮流
当然,仅靠激情是难以长久坚持的。归根结底,科研成果所带来的成就感才是我们继续前行的根本原因。对于新入行的同学,发表论文于顶级学术会议上是一种成就感。随着时间的推移,仅仅发表论文可能无法带来足够的成就感。研究员希望自己的成果能够产生广泛的影响,甚至改变某个领域对某个问题的看法。做出扎实、有影响力的研究工作是每个研究员孜孜不倦追求的目标。
在这方面,我非常认同微软亚洲研究院“老一辈”研究员,微软杰出科学家郭百宁博士的观点。他一直鼓励我们勇敢地预测未来,努力成为引领潮流的研究员。他引导我们思考:未来5年,甚至10年内,你所从事的领域将会发展到什么程度?为了实现这样的发展,最重要的技术障碍是什么?你当前的研究是否在扫除这些障碍?妥善地回答这些问题有助于我们开展有影响力的工作。他还特别强调不要害怕预测错误。因为正如前文所述, “勇担失败”,对失败原因的深刻刨析通常会带来突破的契机。相反,若只是跟随别人的步伐,则很难做出开创性的工作。
在勇敢地预测未来这方面,郭博士团队的高级研究员胡瀚是一个出色的榜样。在闲谈中,胡瀚告诉我,他相信“注意力”机制(Attention)在计算机视觉领域将发挥基础性的作用。基于这一预测,他和他的同事及实习生进行了长达数年的高强度研究。在当今研究节奏极快、项目通常需在数月甚至数周内见效的计算机视觉领域,这无疑是一个勇敢的举动。正是这种对未来的预测,让胡瀚和他的同事做出了广受关注的Swin Transformer这样一个项目。该成果不仅在学术界获得认可,斩获计算机视觉研究的最高荣誉马尔奖,而且在工业界,视觉领域的各个子任务常常将Swin Transformer作为标配之一。
以上这些零散观点和经验仅仅是我个人的体会,难免有疏漏和谬误之处。但我希望它们能够对同学们产生一些帮助。要强调的是,每个研究员都有自己独特的经历和心得。探索科研之路,关键在于不断学习、实践和反思,逐渐形成自己的研究方法和思维模式。在科研生涯中,培养自己的创新能力、批判性思维和解决问题的技巧是一个长期、渐进的过程。与此同时,大家要逐渐学会与团队合作、与同行交流。在科研过程中,需要不断调整自己的心态,学会承受失败,保持研究热情和好奇心。科研是一条充满挑战的道路,但正是这种挑战才使得科学研究如此吸引人。在不断努力、尝试和取得进展的过程中,我感受到科研真正的乐趣在于探索未知、发现新大陆。对一个有挑战性的问题长期坚持,最终获得答案,这比简单的世俗认可更能带来满足感。我相信这也是广大科研工作者能够耐住寂寞,长期奋战在各自科研领域的根本原因。