前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一份来自MIT科研的实习总结

一份来自MIT科研的实习总结

作者头像
小白学视觉
发布2020-03-03 09:56:17
5140
发布2020-03-03 09:56:17
举报

01

项目进展

来MIT之前我就知道导师不会提供具体的idea,而是要靠我自己去摸索。这固然是增加了我的困难,但是也让我感受到了如何探索一个靠谱的idea的过程。不过从后面我的摸索过程来看,作为本科生的第一个项目,最好还是有一个具体的idea会顺利很多。不过在我的争取下,还是从博士后那里拿到了一个不太明确的方向:在一个新的环境上做一个已有的task,看能不能发现一些新的问题。

一开始的一两个月,我都在尝试做新的环境并搭建baseline。搭建这个环境的时候遇到了比较大的困难,一个是做synthetic数据集的话不太真实,有时候过于简单,所以我们想了很多方法去让数据集变得复杂。另外baseline也过于简单,效果很容易就到了百分之百。做新的数据集这个决定本身并没有很强的动机。同时baseline也不是SOTA,有些naïve,实际上有更加close的baseline。另外,在实现我们的方法的时候,也没能取得重要突破。事实上,在实现数据集时离现有文献过于脱离,并且过于简单,这让方法的突破变成了很难完成的任务。

在项目中期的时候,mentor给了另外一个idea。事实上这个idea是有人进行过尝试的,并且task本身比我们要复杂,也更加适合这个idea。同时中间也犯了个错误就是本身方向上有比较大的问题,但是我花了很多时间在调参数。方向上的问题可以概括为数据的过简和方法的孤立,这两个问题互相交织。一方面数据过于简单以至于我们没能找到更好的方法进行比较,另一方面方法过于孤立,related work的survey不够也导致了数据过于简单的问题没有被发现。我的mentor当时argue应当在简单的问题上先把方法做work,这是对的,但是当时存在着更加复杂的问题以及更加深入的方法。我们应当优先follow现有的方法,并加以复现。同时在task上面我仍然比较困惑,尽管在方法上可以加以探索,在task的确定方面我们应当保持相当的稳定性。同时在汇报时我也应当忽略细节问题,而更加注重方法本身的问题。

在时间过去一半的时候我仍然什么都没有做出来,此时我注意到了一个新的benchmark。在新的benchmark上面,我花了大量的时间去做synthetic data,也就是demonstration,这一步现在看来是没有必要的,因为实际上大量的方法都是用RL去做demonstration的,或者直接录制human play,事实上这两种方法都更加general。但是当时我想的是这样不太容易work,就采用了非常费时但是会更加work的方法。现在看上去这是不正确的,因为不能体现我们contribution的地方最好是避开或者用最短的时间完成。

在项目后期的主要问题是我们的方法看上去比较复杂,也用到了一些新的高大上的研究成果,但是本身的模型并没有明确的baseline,复杂度没有得到很好的印证。事实上,我们很长时间都没找到合适的baseline去做,这实际上意味着我们没有抓住该领域大家都关注的问题,或者说没有抓住问题核心。还有另外一个问题,我们采用的是一个复杂方法的特例,并把它应用到了新的domain。而事实上这个特例已经在这个domain的相关文献中出现。坑爹的是这些文献本身没有产生很深远影响,所以我的mentor并没有意识到。事实上这些文献表明我们的技术路线本身存在着明显的局限性。同时这个domain,也就是RL本身水非常的深,由于我的mentor本身并不是做RL的,所以很难与RL的方法去较真。

在最后时刻,在大老板的指点下,我们找到了与过去方法的一些不同点,并完成了ICML的投稿。事实上这篇论文从idea,实现到论文也只花了一个月的时间,比较仓促,应该也很难中。但是这篇论文基本已经囊括了我们所发现的核心创新点。

02

能力培养

培养自身的学术能力,也是我这次科研实习的重要目标。在刚开始的时候,mentor常常批评我工程能力不行,这可能是我的主要弱点。因为本身项目需要的代码量比较大,通过实习我的代码能力获得了比较大的提升。一方面,我复现了很多开源baseline,通过对baseline的复现和理解,我逐渐掌握了一些必要的代码规范,比如RL的算法使用OpenAI的标准就是最优雅并且有效率的写法。另一方面,我对于调参数也有了心得,最关键是要把时间分配好,把主要的时间花在调节主要的参数,而大多数参数本身对结果影响不大,可以忽略。特别是mentor强调的参数一定要好好调,并且范围要广,一次要得出充分的结论。最后是要把任务规划好,能并行的要并行去做,需要训练的要安排到晚上睡觉的时候进行,尽可能节省时间。

分析实验结果也是重要能力,越到后面我的结果整理的越publishable,实验setting也更加solid。最主要是对于实验结果的分析要一开始就按照最严标准去处理。每个模块的准确率和是否有用都要搞清楚,该控制的标准要控制好。实际上神经网络的训练是有大量经验可循的,要按照现有文献的标准把training curve,failure case等都分析清楚。同时要结合可视化技术,把实验结果以及图片都打印出来,一般主要的错误都可以通过这种方法去避免。比如数据某个地方处理错了,导致输入时候有个特例没法处理之类的,可视化之后会明显地暴露问题,处理起来也比较好办。

我的mentor还强调一个能力是表达能力首先是对每个观点都结合可视化的结果和具体例子进行讨论,这样就比较容易让人明白。第二,要把逻辑处理清楚,不能假定听者有相当的背景知识,要把大前提,小前提,结论都交代清楚。同时在组会时如果技术或者实验平台发生了比较大的变动,就一定要强调清楚。不然导师会发生比较严重的误解。第三,一定要结合相关文献用准确的术语去阐述问题,而不是用自己的话去描述一个feeling。结合了相关文献之后,一般导师就会比较容易接受。第四,要把关键的问题通过对比的方式鲜明地描述出来,这样一看就知道与baseline的主要差别,比较容易讨论。第五,要区分主要问题和细节问题,对大老板而言最重要的是把主要问题交代清楚,比如核心算法,目标task是什么,和baseline的区别是什么。而对于某些参数选择,环境细节以及后处理等技术细节可以尽量不讲。

我在刚开始的时候还犯了一个错误,就是喜欢务虚,就是聊一些比较长远的goal以及一个比较大的story,这是非常不正确的。应当关注实际项目进展,而不是空谈一些宽泛的goal。实际上作为一个比较general好方向的话应该会有一大堆论文在做,我们能做的应该就是关键地方的一个小突破而已。

03

关系处理

如何跟mentor以及导师搞好关系也是一门大学问。最重要的当然是要言听计从,只要是mentor提出的可以执行的观点,无论大小,都要尽全力去完成。我遇到的比较主要的问题是遇到mentor的意见有问题时应当如何处理。无论大小问题,都应当从实际情况出发,用solid的实验去证明观点。同时在表达自身看法时也要注意分寸,在general的方向上要积极服从mentor的观点,切不可正面对抗。同时对于每个意见也应当尽可能去完善,结合相关论文去论证。同时在大方向上尽量让mentor去做决定,作为学生应当主要负责摆出事实和相关文献,而不是先入为主地下决定。特别是负面的评价更要慎之又慎,不可轻易对文献或者方向发表意见,不然容易有失偏颇。总而言之,在表达观点时应当尽全力去做到客观诚恳,而不是主观臆断。

在学术之外,能与实验室的同学搞好关系也至关重要。最重要的是要诚恳谦虚,在MIT的每个同学和mentor都非常的优秀,我应当从心底崇拜并且对他人观点表示赞许。实际上应当尽可能避免给他人指正错误,而应当尽量避免意见的针锋相对,抓住核心问题讨论。这样节省了mentor的时间,也维护了mentor的面子,容易受到好评。

通过实习,我也意识到了解实验室的潜规则是十分重要的。比如有些人觉得不舒服的时候并不会直接表露出来,就得要通过侧面去了解。只要做到积极诚恳,应当大部分人都会予以接纳。MIT的大家压力都很大,能够互相倾诉互相理解,就有了友谊的基础。

04

自我反思

总而言之,我虽然在本科的学校取得了优异的成绩,但是仍然不能完全胜任MIT的科研生活,主要原因有以下几个:

其一,我没能掌握良好的与人相处的技巧,特别是在压力比较大的环境下,我的心态还不够稳。

其二,课程里面都是有大纲的,类似于有监督的学习,但是对于科研这种搜索范围比较广的,类似于无监督的学习的领域,我就仍然比较缺乏经验。

最后,对于局势的评估也需要大量经验的积累,比如说何时应当学习,何时应当调参数,何时应当增加baseline,这些我都在MIT的实习过程中收获颇多。虽然过程很艰辛,但我也算是对科研上手了,相信未来一定能够做出成绩。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档