研究生期间如何成为科研大佬?
作者 | 叶小飞@北美奔驰研究员
整理 | NewBeeNLP
由于不清楚小伙伴们的研究方向,以下分享只针对ML/DL/CV/NLP方向。
先泼个冷水,如果你本科积累不多,也不是天赋异禀,硕士成为真正的科研大佬是不太可能的,成为“灌水大佬”倒是有可能。因为在我看来,只有真正做出能对学术界与工业界有很大启发的研究作品的人才能被称作大佬(比如搭积木提高一两个百分点就别拿出来吹了吧。。。),而没有很多积累与好的指导是很难做到的。
我在北美研究生一年零三个月期间零基础入门计算机视觉,发了两篇还可以的应用向ML论文,毕业后还在湾区找到了待遇不错的算法岗位。按照我下面这套操作来,可以让你三年硕士期间 进可发质量不错的文章,为读博铺好道路,退可毕业后进入工业界拿到不错的offer。
第一阶段:确定大致研究方向
进实验室之后第一步一定是先大概了解师兄师姐们都在做什么,同时和老师聊一下他大概希望你做的课题方向。也许这个方向并不是你最后的方向,但是会让你大概有个sense。
只有你知道了实验室做什么,你自己可能做什么之后,才能针对性地夯实基础知识。比如你们实验室一直做联邦学习,那么你去恶补太多CV方向的知识用处就不大,毕竟CV在这里只是一个应用场景,并非主体。同样,如果你要做Visual Question Answering, 那么除了CV,你还要弥补NLP方向的知识。
第二阶段:基础知识恶补
如果你对自己将要研究的领域所知不多,我很不建议一开始就啃论文,在你没有基础的情况下去读各种最新的论文就像啃天书,事倍功半。
举我自己的亲身例子,我在CV领域读的第一篇论文是supervised descent method for face alignment. 当时我也不懂SIFT,也不懂PCA, 也不懂gradient descent, 花了很久也没搞明白,后来把相关课程恶补一下之后,结合着代码很轻松就懂了。
所以在最初的三个月强烈建议多上些网课,针对性地弥补基础的理论与相关的编程知识。这个阶段不需要花太多精力深挖理论,大概知道怎么回事即可,所以找的网课尽量以应用为主,先找到些感觉和自信再说。
对于刚入坑CV的小伙伴,我一般强烈推荐“三件套”网课:Coursera Andrew的深度学习系列课程,Udacity 的intro to CV(在这里你能学到图像处理最基本的知识)以及MIT老爷子著名的线性代数。
第三阶段 大量阅读文献/代码+帮师兄师姐打杂
这一阶段我个人认为是成为“潜力大佬”最重要的环节。只有你文献读的足够多,才能判断出自己的方向是不是个坑,自己的idea是不是别人都做过,并最终提出一个改进前人工作的idea。这一阶段注意事项如下:
读文献是有技巧和优先级的,不要一脑袋就扎进去瞎读。具体优先级如下: 近一到两年你大致研究方向的文献综述。这种综述一般会帮你把各种流派以及最先进的方法整理出来,读完后你会有一个大概的big picture 近五年内该方向的经典著作(高引用,具有启发性的)。这类文章一般也有很多博客讲解,原文读不懂可以看别人的博客。 带开源代码,近两年的顶会sota. 无开源代码,近两年的顶会sota. 对于质量较高的文章,强烈建议对着源码一起阅读。有些你看不懂的公式,读完代码就能大彻大悟。同时,学会把公式转化为代码也是一项核心能力。 列个表,纪录你读的论文的名称、核心要点,你所看到的它存在的缺陷或未来可延伸的点。 你在阅读过程中很可能会想到一些新的方向、idea,或者发现原来要做的方向是个坑,这个时候要多和导师沟通。导师都很忙,沟通前要做好准备。比如你觉得原来的方向不好做,一定要给出你读了哪些论文之后得出了这样一个结论,为什么是这样的一个结论,而不是说“我感觉这方向不行”。 在你阅读文献的同时,主动接触你优秀的师兄师姐们,提出帮他们打下手。这个并不是为了蹭个四五作或者讨好同门,而是在这个时候你还没有经历过一次完整的科研,通过这种站在巨人肩膀的方式,你可以快速了解到做一次完整的科研是什么样的经历,同时开始下手写一些实际的代码,最后还能蹭个作者,只要负荷不是太大,何乐而不为? 除了你主攻方向的论文,相似领域也可以阅读。比如你是要做超分辨,那么图像去噪有很多论文可能也会对你有所启发。
第四阶段 开始实验你的idea
你从近乎零基础进行到这一步时,大概已有半年多一点了,这时候的你有了一定理论基础,完成了一些课程代码,并且阅读了大量文献和开源代码,和导师进行了几次讨论,这时候还留在你筐子里ideas很有可能是可行的,现在就需要把你的idea实现了。如果你还是无从下手,不知道该怎么实现自己的idea, 可以参考我这个回答的三四步(一二步你已经在第三阶段度过了)。
对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?1203 赞同 · 51 评论回答[1]
当然,在这个阶段你也不必孤军奋战,可以寻找同组的小伙伴一起合作,你负责核心部分,他负责一些零散的部分,到时候挂他二作。同理,你也可以多找同组或组外的小伙伴主动寻求合作,作为辅助贡献一些,这是能快速拿到二三作的捷径。
第五阶段 论文撰写
当你的idea基本证实有效之后,就可以动手写论文了。都21世纪了,建议不要用word来写论文,强推线上多人合作版“LATEX”——Overleaf。一开始刚写论文的时候有几个误区特别容易陷入:
不列大纲,上来就开干。我发现很多认识的大佬都会把每一章节甚至每一段大概要写什么,论点是什么会先列上,这样写起来事半功倍。 第一遍初稿就极度追求完美,写的每一句话都斟酌很久,精心选词。第一遍如果过于注重语法与修饰,很容易写到崩溃,写了一周都没把前两章写完。一般来说,第一遍只要能把自己要写的大概内容表达清楚即可,甚至有些句子是由单蹦的词语组成也没事,后面一遍遍修改。 作图草率,稀里哗啦随便画。现在很多reviewer极度缺乏耐心,你图做的不好看基本就被判死刑了。 自己孤军奋战,不会借助外力。正如前面选题、读文献、实现idea一样,写论文也要学会借助外力。起了草稿之后,多多“骚扰”师兄师姐提意见,让他们帮忙修改(当然你要挂人家名字),然后差不太多了再找老师修改。
另外推荐一个答主对关于如何写好英文论文的分享,我从这篇回答里学到了颇多。
如何开始写英文论文?1 万赞同 · 164 评论回答[2]
第六阶段 乘胜追击
当你进行到这一阶段时,你已经投出去一篇一作,运气好的话还蹭到了同门的一到两篇论文。接下来就是如法炮制,你可以接着上一个idea做更深的挖掘,或者更高维度的挖掘(比如从图像超分辨到视频超分辨)或者换一个有些类似但又不一样的方向,接着开始下一篇创作。然后依旧要多和组里甚至组外的人合作,研究生期间一作能有两篇就很不错了,要想数量更多只有去给别人打下手,寻求场外合作。
在这一阶段,我还大力推荐在继续攻克下一篇论文的同时,系统地提升下自己的数学+计算机理论知识。之前上网课对理论理解不够透彻,读论文则是容易只有碎片化知识,借这个机会对一些基础的数学理论和计算机理论好好系统学一下(比如概率论,凸优化,数据结构,算法概论),对你以后申请博士(很多老师看重你的理论基础)或者找工作(不懂数据结构你怎么刷题?)都有很大的好处。
写在最后
如果一切顺利,你的运气还不错,按我这几个阶段做下来后,在第三年开始不久,你已经投了/中了两篇质量不错的一作论文(读了大量文献+与导师同门经常沟通后的科研产物质量一定不会差了),N篇二三作,其实成果已经蛮不错了,这个时候最重要的是想好未来的选择。
是继续深造读博士呢还是到工业界去工作?
如果打定主意要读博,那么接下来的最后一些时间你就要把精力放在申请、connect上。如果你想去工作,那就要多刷题刷面经,凭借你硕士期间的这些产物,拿到面试机会不成问题。
最后的最后说一点自己的个人价值观,我认为科研带来的最大收益就是它本身带来的纯粹的乐趣,千万不要为了灌水而科研,很难走远、走得开心。
本文参考资料
对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?1203 赞同 · 51 评论回答: https://www.zhihu.com/question/348376942/answer/1923857788
[2]如何开始写英文论文?1 万赞同 · 164 评论回答: https://www.zhihu.com/question/23684933/answer/125467391
- END -