查看原文
其他

我在哥大读博的五年,万字总结

Showthem 深度学习这件小事 2022-03-29

来自 | 知乎  作者 | Showthem
地址 | https://zhuanlan.zhihu.com/p/336801134
编辑 | 机器学习算法与自然语言处理公众号
本文仅作学术分享,若侵权,请联系后台删文处理

0. 写在前面

 开始写这边总结的时候是三月,纽约成了疫情震中,看着新闻报道里的中央公园,中国城,第五大道,往事浮现,于是开始写这篇回顾。。陆陆续续一直没写完,转眼年底了,加州疫情更糟。。前几天看新闻说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的选题,合不合适:

  • What are you trying to do? Articulate your objectives using absolutely no jargon.

  • How is it done today, and what are the limits of current practice?

  • Who cares? [Support other’s research? Shape research landscape? Power applications in industry?]

  • What's new in your approach and why do you think it will be successful?

  • If you're successful, what difference will it make? [e.g. Contributions in theory/modeling? Improve accuracy by 5% on dataset A, B, C…?]

  • 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.]

  • How much will it cost? [e.g. How many GPUs do your experiments require? How long is each training process? How about data storage?]

  • 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?]

  • What are the midterm and final "exams" to check for success?


—完—
为您推荐

一个算法工程师的日常是怎样的?

彻底搞懂机器学习中的正则化

13个算法工程师必须掌握的PyTorch Tricks吴恩达上新:生成对抗网络(GAN)专项课程从SGD到NadaMax,十种优化算法原理及实现

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存