哥大读博五年总结

2021-01-08 11:47:31 浏览数 (3)

写在前面

「 开始写这边总结的时候是三月,纽约成了疫情震中,看着新闻报道里的中央公园,中国城,第五大道,往事浮现,于是开始写这篇回顾。。陆陆续续一直没写完,转眼年底了,加州疫情更糟。。前几天看新闻说Cathedral教堂发生枪击案,震惊。。这教堂就在我当时住的学校公寓旁边,每天出门都可以看到。。遂又忆起每天上学的时光,于是决定把这篇总结写完,会分几个part放出来。快圣诞了,希望疫情早日控制住,一切安好 」

刚上大学时,听过不少学长学姐分享会;申请博士时,读了不少留学申请总结。都收获很大,让当时啥也不懂的我,了解了每场游戏(如何度过一个充实的本科;如何拿到心仪的PhD offer)的principles:有啥规则,有啥技巧,等等。

开始读博时候,我也去找类似的读博经历分享,令我收益良多的,如熊辉老师,田渊栋和李沐大牛的总结,林达华老师的blog;但可惜只有这寥寥几篇,读博又是一个复杂的事儿,当时的我并不能清晰地看见前面的路,遇到一些事亦因缺乏经验借鉴,走了弯路。于是当时便想着,等我毕业了,也得记下我学到的经历,希望能帮助到刚开始读博,像我当年一样迷茫的科研新人。也借此记录和感恩一路走来,所有帮助过我的人,best of luck。

因为篇幅限制,有的问题难以讲得完善全面,或跟您意见不合,全当看小说,寻个乐子罢了。

1. 万事开头难 (第一学期)

1.1 初到纽约

2014年夏天,在北京国际机场,我安慰我妈说,“没事,明年暑假我就回来啦”,万万没想到,一直忙忙碌碌,一去就是5年……可能是初次留学的兴奋,十几个小时的飞行,感觉很快就过了,到了JFK机场,坐上纽约特色的黄色的士。去学校路上,先是皇后区的平房,后来到了曼哈顿,深砖红色的高楼,跟想象中的国际大都市并不大一样,倒很有历史厚重感,日后想想也是,纽约也不能到处都如时代广场那般呀。

接着,办入住,搞卫生,小憩了一会儿,傍晚出去门口的超市买点吃的;第一次从112街,走到Broadway上,看着熙熙攘攘的外国人面孔,很傻的竟然笑了出来…那会儿自然是极开心的,就是一个毛头小子,充满了对未来生活期待的样子(哎,回不去的青春啊);当然了,怎么也没想到,接下来的一年,会如此艰难……

1.2 差距

开学后一系列事情,一下子让我清清楚楚地,看到自己跟师兄们比,各个方面有着很大的差距。且不说核心业务能力了,首当其冲自然是语言环境的变化。

一天路上,一小哥对着我说:How are you?我想,这不是新概念英语上的经典对话吗,难道我真要回传说中的I’m fine, thank you, and you?从那儿之后,我知道了,how are you就相当于,吃了么您呐,并不是真的问什么,而是打招呼,跟say hi差不多,一般回good good就可以了,甚至不回,直接也回对方how are you都行。

然后到了第一天来lab,正好Y来面博后,老板让他给个talk,Y希腊口音的英语,再加上讲的内容涉及一些专业术语,几十分钟我几乎完全没听懂他说什么;会后跟他一对一meet,更是尴尬的很…后来18年来FB实习,巧了Y是我mentor之一,第一天带我吃的午饭,我们交流完全无障碍了,他也不记得当年还见过我……我有个朋友总结,刚来时候,跟外国人的交流,是三分靠听,七分靠猜……现如今,即使是印度口音,只要不是说的特别差的,或者我特别不熟悉的东西,都能通畅交流了。感觉这没啥技巧,首先要敢说,然后多跟不同的人聊天练习,慢慢就好了,倒不必太过担心,徒增压力。但是如果英语不好的话,难以跟外国专家合作,融入核心科研圈子,对长远的发展耽误很大,尽量在1-2年内做好这个提升。

1.3 让老板知道你在干活

因为我是本科毕业直博,刚读博那会儿,思维里还是默认,导师是教育培养学生的角色,指导学生做出成绩;明白但没有深刻认识到,博士生与导师还有雇佣关系。第一个学期,我主要是跟着师兄们做,跟导师大概一个月meet一次,每周有weekly report。开学时,老板把我分给一个师兄带,参与他的项目A,是个很好的学习机会,但是发不了paper。

11月,CVPR投稿的季节,另一个师兄找到我帮忙做项目B,这个项目准备投CVPR,做出来的话可以co-author。于是我那段时间都扑在做B上,终于实现了其中一个核心的模块。CVPR投稿完的那周,正好导师约meet,我想B的事情做完了,下面精力就都是做原本的A了,meet对我来说,主要目的是确定下接下来的plan呗。

正好搞CVPR之前,项目A的师兄让我reproduce一篇nips文章的方法,用到项目A的data上,于是,我准备的slides主要介绍那篇nips和怎么用到项目A上。结果meeting结束,导师很不高兴,觉得我这几周没有progress。记得那天导师办公室没开灯,冬天下午五点的纽约,天已经黑了,周围一片黑压压的,更显压抑。

我当时挺惊讶的,因为原还以为在导师印象中,是我参与了B的CVPR投稿,很impress呢。我后来仔细反思了下,虽然这几周我对B也算是呕心沥血,weekly report里也有提,但是,一来我只是coauthor,对于B工作整体而言算不上main contributor;二来导师很忙,不能assume对方完全了解并且记得你做过的一点一滴。同时,我也明白了这个meeting的目的既是讨论research ideas,但也是review progress,我首先得让导师明白,我这段时间有在好好干活。现在的我,不会只提项目A之后我想怎么做,会同时准备一页slide总结下我对B的贡献。

1.4 自己的感受没那么重要

我们系第一个学期末就要博士资格考试。这个考试,各个学校称呼不同,大概就是博士生通过这个考试,才证明有能力,qualify继续读博士。我们系给大家两次机会,第一学期末第一次考,没通过的第三学期末再考一次,要是还没考过,就只能卷铺盖走人了。而且这考试还真不是走过场,每次大概挂三分之一的人,所以真真切切见到周围有人因为qualify没过走人的。

我本科学的CS,博士因为fellowship是EE发的,所以在EE系。这可愁坏我了,因为考的是EE的基础topics,电路,DSP,网络啥的我大都一窍不通。于是第一个学期的课,我选了门DSP,准备好好从头学。这是硬课,再加上平常主要精力还得放在lab的项目上,第一学期压力巨大。记得有一天,晚上睡觉做了噩梦,梦到不知什么怪物,惊醒,醒来想到各种tasks各种due,顿时只想继续回到梦中,相比而言,还是怪物比较可爱……这时候,只好把自己的感受搁置一边,累、苦,想这些又有什么用呢,只能更加平添烦恼。该做什么就去做,告诉自己干就完了,结束后反而发现,过程其实也就那样,有时候我们只是过度看重了自己的感受,夸大了困难的程度,其实自己的感受没那么重要,只要身体本身还撑得住。

qualify考试在1月初。12中旬,忙完了期末考试,去Chinatown吃了顿好的,回家看了部电影,然后跟导师请好假,专心复习qualify。大概有三周的复习时间,除了DSP,其他的topics完全从零开始学。后来觉得,这考试的目的,不是考的知识本身,而考的是学习能力。复习的过程是很惨了,时值圣诞节假期,朋友圈各式各样在佛罗里达坐游轮的,迪士尼看烟花的,回国火锅小烧烤的;而那年的纽约还尤其的冷,家里的暖气开到最大,还是冷的不行,我只能早出晚归的去图书馆;路面冻得白花花的,公车开过扬起白沙,从家里112街到图书馆114街只有5分钟,但却那么漫长;每天几条裤子叠着穿,有天开始一度冷到零下负十几度,我刚出门一会儿就赶紧回来,在牛仔裤外面又套了件运动裤……所幸最后考试通过了,小秘告诉我竟然考了第三,震惊,真是功夫不负有心人讷……

1.5 上课没那么重要

第一学期,选DSP,纯为了考qualify exam修的,跟我日后的研究,基本不搭噶。我第一学期还修了机器学习,机器学习我之前没有系统学过,学完还是受益良多。但为了达到学分要求,我博士期间,被迫修了14门课,第四年还在上课……我的感觉是,AI是实践科学,上课没那么重要,很多时候甚至是浪费时间。我觉得值得选课去学的,可能就是机器学习,算法,就够了。搞CV方向的,与其上门CV,还不如自学网上教程,亲身参与几个项目,学的更快,对书上的知识有更深刻的理解。我觉得上课最大的作用,就是去了解这门学科,有哪些基本的概念和算法(所谓把unknown unknown变成known unknown),哪天你要用到他们了,需要把known unknown变成known known的时候,知道在Google里输入啥关键词去搜。

当然如果有时间,上些基础型的硬课,自然没啥;但对于博士生,时间本就紧张,就得做做平衡了,选些seminar的课比较好,一般主要就是读论文,做project。我后面陆陆续续带了很多低年级的学生,很多人学期伊始,觉得要多学些知识,选的都是硬课,学期过半,发现作业做不完,科研没时间,两头耽误,都是后悔不已…

2. 方向比努力重要

2.1 PhD选题

第一学期在课业,科研,qualify考试,适应国外环境,种种碾压之下,总算过去了……虽然痛苦,但只是工作量大,努力使劲就好了……第二个学期开始,2015年于我,关键词是迷茫,努力努力但怎么也使不上劲的那种……

第二学期开始,重心主要集中在research上了,跟导师的meeting也从一月一次变成了每周一次,有幸得导师亲自调教各种真正做科研的能力了。导师给我定了个新的项目,深度学习下的incremental learning。这其实是个很难的问题,现在5年后来看,都没有被很好的解决;亦没有一个标准的benchmark,也就是说,其实大家还没有定义好这个问题;记得导师那会儿说,if you can formulate this problem,这个问题就已经解决70% 了。

结果忙忙碌碌几个月,研究了很多文献,做了很多实验,还是没有太大的进展,就是感觉很迷茫了,不知道下一步该干嘛。幸运的是,到5月份,导师让我跟师兄一起参加一个叫THUMOS的比赛,这其实又是个新的项目了;开始我还觉得,已经忙不过来了,哪有时间再多一个项目,后来庆幸参与了这次比赛,开始了我做video这个方向的科研生涯。

那会儿video领域,大家主要做classification,而且是几秒的短视频;THUMOS是长视频,而且不光有action classification task,还要一个task是action detection,检测你所感兴趣片段的开始/结束时间。参加比赛时,我跟着师兄主要搞classification,边做边学,上手了处理视频的模型和框架,收获很大。比赛完后,我发现classification大家搞的火热,而detection,同样很重要的一个课题,却没有人研究过基于深度学习的方法,于是就有了我的第一篇CVPR文章,收到了很多follow-up。我自己也算是找到了自己的研究方向,不再迷茫。

我觉得这段经历,对新手很有参考价值,很多时候光努力不够,方向更重要。新手如何选博士几年的topic,有两个问题值得思考:

能不能快速上手?有几个简单的评判标准:

  • state-of-the-art的paper有没有开源的代码?目的是你能迅速复现baseline,熟悉整体pipeline(如怎样预处理,后处理),加深对实现和细节的理解
  • 有没有对这个topic有hands-on经验的师兄,或者community里面approachable的前辈?目的是,当你遇到实现上的细节问题,可以及时咨询和得到反馈
  • 这个topic有没有比赛,或者标准的benchmark?目的是,有大家已经定义好的数据,实验setup,评价标准;这样,你有可以直接比较的baseline,outperform baseline的时候也容易被人认可

能不能有大的impact?这里我指的是博士期间的大方向,由一系列单项的工作或者paper构成。

单篇paper通常有三种类型:

(1)First work:开创了一个topic,比如RCNN于object detection

(2)Last work:基本解决了一个topic,比如Faster-RCNN,YoLo于object detection

(3)Improve类型,介于First和Last之间的。

Last很难,Improve常见但影响力不够深远,对于新手而言,博士的早期工作,在有能力做出来和有impact之间的trade-off比较好的,估计是First了,不一定非要是第一篇,只要是某个topic里面开创性工作的那一批之一,都是不错的。这个早期工作之后,你会对这个问题哪里要改进,有很清楚的认识,因为improvement room大,也会有很多ideas。

同样,早期的时候怎么选这样一个topic呢:相关的比赛是这一两年新开的吗,相关的benchmark是这一两年出来的吗,上面的结果提升空间大吗(现在是20%还是已经80%了)?

2.2 单篇Paper选题

前面说的PhD选题是大方向上的,具体到每一篇paper,选择的principle和重点则不太一样。来Facebook后从马爷爷那知道了一个著名的Heilmeier问题系列,是指导老师们申项目的,我觉得稍微改改,便很适用于我们考虑,某一篇paper的选题,合不合适:

  1. What are you trying to do? Articulate your objectives using absolutely no jargon.
  2. How is it done today, and what are the limits of current practice?
  3. Who cares? [Support other’s research? Shape research landscape? Power applications in industry?]
  4. What's new in your approach and why do you think it will be successful?
  5. If you're successful, what difference will it make? [e.g. Contributions in theory/modeling? Improve accuracy by 5% on dataset A, B, C…?]
  6. What are the risks and the payoffs? [Further, how would you mitigate the risks? If your proposed method does not work, what could be alternative design? These can end up as discussions such as ablation studies in your paper.]
  7. How much will it cost? [e.g. How many GPUs do your experiments require? How long is each training process? How about data storage?]
  8. How long will it take? [How many hours are you going to work on this per week? When is the submission DDL? Can you make it?]
  9. What are the midterm and final "exams" to check for success?

3. 谈谈Presentation

Presentation分为作报告,还有就是写paper

3.1 谈谈做报告

14年,刚来哥大那会儿,每周五是我们组会,导师让我在组会上present RCNN,这是我第一次给导师作报告,而且是在全组面前报告,自然想要好好表现。我对object detection之前完全没了解过,于是paper读了一遍又一遍,文中用到的前人技术不懂,便找到前人的文章去学怎么回事。感觉自己学到好多,自我感动,觉得花了这么大工夫,一定到时候会让导师刮目相看。

结果就是啪啪打脸:导师极其严谨,当我解释了A,解释了B,问我已经有A了为啥还要B;我大脑一片空白,尝试着解释了半天,导师表示听不懂,这是可想而知的,因为其实我自己也并没有搞清楚为啥;当时自己读paper的思维模式其实只是,memorize怎么做怎么做,但没有去搞清楚要这么做背后的原理;另外当时slides准备的也不够好。总之结果是,这次报告搞砸了。还好事后,师兄们继续跟我讨论,让我对技术原理有了更深刻的认识;有的师兄更用亲身经历安慰我,说当年他刚来的时候,第一次汇报工作连slides都没做,干讲,导师自然也是没能听懂。

之后几年,从导师身上学到了很多presentation的技巧:

  • 如果可能的话,事先了解你的听众背景,是跟你做同一个topic的,还是同一个大领域但不同topic的,还是完全其他专业背景的。需要根据听众背景,定制和调整:比如,需不需要多介绍些背景?需不需要更深入技术细节?等等
  • 一页slide尽可能focus在一个点上,不要信息量过大,否则听众很容易lost
  • 尽可能多用图片表达,不要大段大段的列文字,A picture is worth a thousand words
  • 上面这两点,其实principle都是尽量让要讲的内容简单明了,因为很多时候我们在听talk,这样被动接受的时候,接受新知识的能力是比主动接受时候(比如看paper)低的。
  • 当听众问问题的时候,If you don’t know the answer, just say don’t know.
  • 如果是跟mentor日常讨论的slides,因为会讨论到很细节的东西,有些图PPT画起来,很花时间,而且通常这样细节的图还挺多,所以可以就ipad上面手画一画,截个图放到PPT里就好了;如果是正式一点的presentation,写slides跟写paper的principle有点像,不要太focus在细节上,更重要的是讲清楚motivation,为什么这样设计,细枝末节的不关键的内容,放在backup slides里面。

19年CVPR,Doctoral Consortium有幸mentor是斯坦福的一位大牛教授,她也提到了presentation的重要性,说她们lab有个开玩笑的说法,一份slides交给她去改,no pixel left……为了分享如何能让报告听起来有兴趣,她画了下面这张图,让听众情感(亦是兴趣高低,注意力程度)随着时间的变化,有三个高潮:首先,介绍你的问题,通常这时候大家都会引发兴趣;但听着听着大家注意力就不集中了,这时候就到了图中第一个低谷,这时候需要指出来这个问题有哪些challenge,大家的兴趣就又被激发了;等大家兴趣来了,精力集中的时候,介绍你的一部分工作work 1;等介绍完第一个工作,大家又疲劳了,这时候指出来,即使有这个work 1,问题还不能被解决,因为有remaining challenge;接着大家又被调动了兴致,可以开始介绍work 2。

3.2 谈谈写paper

在2.2里面讲了对某一篇paper,如何选题和做规划。那真的到了写paper的时候,我自己有几点如何让文章写的更好的体会:

  • 先给一个Talk。写paper最难的是构思storyline,而最好的完成这一步的方法就是先对你的工作做一个slides,给周围的人present一遍。这个过程中,你会梳理好自己的思路,画好文中的figure,准备好实验结果的table,周围的人还可以给你提意见,帮助你完善,等这个talk给完了,后面写paper就会顺畅自然了。其实我现在,如果准备投一个paper,当做了一段时间后,就会按照最终presentation的思路,准备slides,用在每周给老板们report时。开头先快速review一下做的task和提出的方法,remind一下context,然后重点focus在那周做的新东西上,所以每周汇报的slides可能80%都是跟上一周一样的,然后新的方法和实验结果的那几页slides是新的,有比较多的细节。
  • 用Google doc做语法检查。刚写好的paper有typo和语法错误是很难避免的,但常常会被reviewer揪着不放。大家写paper如今大都在overleaf上,但overleaf的查错还是不够好,建议可以写完paper后,贴到Google doc里面。几年前开始,估计是由于deep learning对Google NLP的改进很大,感觉Google自动改的质量已经非常高了。
  • Rationale很重要。不光是要讲清楚你怎么做的,更要justify你问什么这么做;不光要讲你的结果比baseline好,更要解释为什么好;读者看到的不应是一个“使用手册”。有时候我们写paper,花了很多篇幅写了很多实现细节,但是更重要的是,解释“为什么”,这个背后的逻辑和insights。
  • 大部分paper都是提出一个新的方法,这类方法型paper似乎都可以套下面这个框架。
  • Introduction:可以分为以下几个部分:
  • Problem definition
  • Previous methods and their limits
  • 简单描述你是提出了什么技术来overcome上面的limits
  • 一个图,非常high-level的解释前人工作的limits和你的工作怎么解决了这些limits,最好让人30秒内完全看懂
  • 最后一段如今大都是,In summary, this paper makes three contributions:
  • First work to解决什么limits
  • 提出了什么novel的技术
  • outperform了state-of-the-art多少
  • Related Work:一般三五个subsection,分别review下相关的topics,同样不光讲previous work做了啥,更要讲自己的方法跟前人工作有啥不同
  • Method
  • 这是文章的主体,按照你觉得最容易让别人看懂的方式来讲
  • 可以第一个subsection是overview,formulate一下你的problem给出notation,配一个整体framework的图,图里面的字体不能太大或者太小看不清,要有些细节,让人光看图就能明白你的方法是怎么回事,但不要过于复杂,让人在不超过2分钟的时间看完这张图
  • 然后几个subsection具体介绍你的方法或者模型;如果testing跟training不太一样,最后一个subsection介绍inference时候的不同,通常是一些post-processing操作
  • Experiment
  • Datasets
  • Implementation details such as pre-processing process, training recipe
  • Evaluation metrics
  • Comparisons with state-of-the-art
  • Detailed analysis
  • Alternative design choice exploration
  • Ablation studies
  • Visualization example
  • Conclusion (and Future Work)
  • Abstract:是全文的精简版,建议在paper写完第一稿差不多成型了,有定下来的成熟的storyline了,再去写abstract;大概就是用一两句话分别概括paper里面每个section,然后串起来

另外paper提交时候,可以交supplementary materials,虽然reviewer并不被要求强制看这个,但其实给我们机会,去include更多文章技术细节、实验结果的好地方;在后面rebuttal阶段,通常篇幅有限制,但如果你已经在supp里面未雨绸缪,可以省很多空间,refer reviewer去看你supp里面的内容就好了。

说到rebuttal,我还是比较幸运的,从导师那学到很多。导师已经是功成名就,业界泰斗那种,起初我以为他这个级别会对我们是放养;但我在哥大投自己第一篇一作paper的时候,导师可以说是手把手带我入门了。还记得16年CVPR review出来后,导师找我讨论rebuttal,我那会儿对写rebuttal并没有什么经验,也不知道可以用R1代表review 1等等。那天meeting开始已经晚上7点了,估计导师还没吃饭,我两就挨着坐在他办公室里,对着他的电脑,讨论reviewer提的一个一个问题。因为很多时候其实reviewer表达问题并不准确,他教我分析每个问题背后reviewer真正关注的点是什么。边讨论,导师边直接敲下我们讨论的notes,meeting完后,我看这notes基本上就可以算是个rebuttal的初稿了,比我meet前准备的draft强多了……

0 人点赞