研究生自救指南

AI算法与图像处理

共 7315字,需浏览 15分钟

 ·

2021-03-03 10:32

那些

科研的事儿

1.   把老师会议上的要求都记下来,特别是小要求,比如确认某个变量。让老师的的要求落地生根。

2.   老师在群里发的文献,要发个赞。或者说读了,收获很大。从现在点个双击开始养成这一习惯,你已经走在了成为老板亲儿子的路上。感谢

3.   能看懂老师的眼神,老师眼神好多说两句,眼神不妙就赶紧闭嘴。

4.   老师说这个方向需要再想想,等于这个方向凉了。老师说再考虑考虑,就是不用考虑了直接放弃。

5.   一个MIT学长跟我说的。学术问题上,老师要打你左脸,把右脸也给他打。学术问题之外,老师打你左脸,你也打他左脸。

6.   问问题之前做好预案,尽量问具体问题。

7.   能问选择题不问开放题,因为这样导师回答起来更快,导师更省心。比如不问导师下一步做什么,而是让导师给几个备选工作排序。这样会显得学生很会做研究。

8.   对于技术细节问题,尽量自己解决别问;能谷歌到的问题坚决不问;不体现你们贡献的问题基本都能谷歌到。

9.   把握好会议时间,重要的问题先讨论,争取二十分钟内解决问题。

10. 每周会议最重要的是确定下周要做什么,其他的话题的意义在于互相吹捧鼓励。

11. 要有耐心!不要着急想着发表。关键的实验需要多次重复,很多重要的实验结论都是在重复中发现的

12. 科研实验遇到失败非常正常,要控制好自己的情绪。切记不要甩锅!实验失败不是谁的错误,是科研非常正常的现象。

13. 某斯坦福教授说的,要相信,基本一切困难的根本来源都是做得还不够多。只要实验足够solid再加一点novelty总会被接受的。很多时候多做只是一种顺手的习惯,不会花费特别多精力,比如别人在点赞的时候,你还点了个喜欢。

14. 创新来源于批判,批判来源于对比。科研没有创新点的时候多考虑对比更多的相关方法,对每个变量深入挖掘,总会有的。

15. 多结识几个能一起讨论问题的懂行的好朋友,有时候旁观者清。遇到和导师有分歧时尤其是这样。如何结交这样的好朋友?可以从把这条回答分享给他做起,给一个适当的暗示,互帮互助,共同进步。

16. 重视产出与产能的平衡。什么是产出?论文成果,实验结果等。什么是产能?基础知识,文献积累,工具链,导师的信任等。只重视产出不重视产能就是杀鸡取卵,只重视产能不重视产出会影响工作效率以及成果转化率,平衡好二者的关系很重要。

17. 能用图片说话绝不用文字,人是视觉动物。好的图片图片意味着高效率,让人影响深刻。导师喜欢,审稿人更喜欢。

18. 没有人会纯粹因为学术问题而生气,生气都是因为面子。维护导师的面子,就是维护自己的面子。遇到分歧时尽量缩小分歧,不要上升问题。对于科研而讲,只要导师支持,齐心协力,论文总能发表的。

19. 方法以及实验有缺陷并不是错误,只要阐述明白,不掩盖,都是有价值的。

20. 真的有很多论文无法复现,这不一定是你的错。有影响力的文章一般是可以复现的,你要做的是follow这些文章。

21. 要把导师的评价具体化,比如有的导师喜欢说你有逻辑问题,不是真的你脑子不好使,可能是你某句话违背了科研的常理,或者偏离了最优路径。

22. 继续说说怎样有效沟通。要明白沟通的目的是让你走进别人的世界,而不是让别人走进你的世界。听懂导师的话比让导师听懂你的话更重要。沟通遇到困难时,别怪别人没理解你,多想想怎么理解别人。

23. 学会用导师常用的学术名词和方法论进行沟通,走出自己的舒适区。比如我之前的某导师喜欢说generalization不好,这套方法很ad hoc,那么我也会开始重视这一方面,这样他就很喜欢。

24. 先明白项目的评价指标再做事,这样能避免你花很大精力但是导师认为你没干事——这往往是矛盾的根源。

25. 很多研究生后来越来越心凉甚至抑郁跳楼,不是因为心没热过,而是因为被泼了冷水。先明白导师对你的态度,再进行适当的回馈。如果你在导师眼里是一坨屎,那你把他当人看已经是够意思了。如果导师知识很客套地对你说辛苦啦,你也跟他说辛苦啦感谢指导,就可以了。如果导师把你当香饽饽,说你是难得一见的好学生,你也要鼓励他,是个对自己很扶持的难得一见的好导师。

26. 很多导师是不喜欢很积极的学生的,特别是说话积极做事不积极的学生,或者push别人不push自己的学生。前面劝你上进的话的前提是对自己的行为在他人眼中是积极还是着急有个准确的判断。举个反面例子说明一下什么是说话积极做事不积极:一周列举了10条TODO,结果下周开会只做了半条,又列举了10条TODO。这样讨论的大部分内容都是废话,TODO永远比做了的事情多,导师当然会爆炸。再举个反面例子说明push别人不push自己:比如说师兄说给某个实验材料,但是多次催促下还是需要等,以此为借口导致项目停滞。注意,很多时候你已经遇到了鸽子,再催都是没用的。永远不要让项目建立在对别人的依赖前提上,不管是依赖别人的帮助、实验材料、还是实验结论。至少你可以边等边干活,做两手准备。

27. 如果自己实验室的文化是佛系,那自己也要佛系一些。很多实验室有大量的空档期,用来摸鱼画大饼等过年……这时候得抛去你的毕业压力,跟着实验室的节奏来。该放下时就放下,别老提着,这样自己难受别人也难受。

28. 如果导师把你当儿子,得要看是把你当儿子亲还是把你当儿子使唤。前者是可以接受的,后者应该果断拒绝。

29. 面对他人的批评意见,要积极接受,起码表面接受。毕竟一个期刊reviewer给10条意见最后有时间做3个就不错了。特别是对学长学姐或者组外好友等不直接参与项目的人,更是不必言听计从,只要给个正面的回馈就可以了。

30. 对于新手研究员,一个成熟的标志是不再claim一个科研课题做不了——这个claim很难被证实,只能显示出自己的无力。更重要的是自己能否在大的idea不变的前提下找个具体情形证明自己的idea。知道什么能做并做了比知道什么不能做更重要。

31. 学会控制试错的范畴,不要在错误的道路上越走越远。如果说当前的工作得到的效果明显与重要文献相差过远,那么得到的任何结论都可能是错误导致,是没有意义的。一般来讲,一开始都要复现一些经典工作,确保复现过程是熟能生巧的,对这些工作是完全了解的。做到这点往往已经成功了一半。

32. Don't confuse yourself。一个刚开始的项目往往会有很多问题,可能是因为自己菜所以增加了很多问题。问题分为两大类,第一类为能从理论上解决的基本概念问题,这部分要自己着重解决,不能放过;第二类为需要实验验证的问题,比如某个变量(特别是不太重要的变量)的影响有多大等,这部分要学会留在实验中验证,而不是靠问别人解决。

33. Don't confuse yourself。新手是很难抓住项目的核心问题的,特别是项目刚开始一盘散沙的时候。这时候不要怀疑这个怀疑那个,要根据导师的建议先把核心的工作做好,解决核心矛盾,其他矛盾会逐步解决的。

34. Don't confuse yourself。在科研中经常会遇到一些新的名词,新的概念,新的叫法,要抓住那个最本质的最基本的概念。比如我研究的人工智能经常有一些论文吹嘘的很厉害,为了显示他们非常novel,新手很容易把自己绕晕。这时候就要从编程实践的角度去考虑,往往只要几行代码就可以实现。

35. 做了解导师的学生,先从了解导师的文献开始做起。导师过去发表的论文,特别是高质量的论文,代表了导师最擅长的领域和技能。懂行的人也能从导师发表的论文中看出导师的喜好甚至导师的三观。试着去从导师的研究经历中发掘导师的失败经历——这往往代表了导师的痛点。避免戳到导师的痛处才能避免惹导师生气。

36. 很多和导师的矛盾都来源于和导师的信息差。比如导师在他之前的项目中经常用一些概念和一些结论,他默认你是知道的,但其实你不知道/不熟悉。先做到熟读导师之前的重点文献,必要时跟同门学长多交流一下,能有很大好处。同时也要注意积累一些工程中的用语(可能这些用语在文献中不常见,比较接地气)。

37. 要明确一个项目的责任归属。不要一作只做三作的事,也别三作做了一作的事

38. 看的文献够多就能发现很多的idea几十年前就有人做过,只是当时的某些条件不具备导致把idea做大。所以研究遇到瓶颈可以多想想哪些文献是可以用到当下的。

39. 这篇文章有作用的前提是师生两个人都希望维持良好的关系,对于两个人闹翻、老师一点都不想带学生、学生只想混毕业的情形,是不适用的。

40. 在深入研究前先把专业内相关的公开课上完,不然掉进坑里很久才发现这早就是外国某课中的一个内容,就很亏了。

41. 上公开课的时候一定要做做练习,有条件的最好做做实验。实际上掌握一个东西刷题是最快的

42. 研究遇到困难本质上是研究的不够深入。读论文时一定要深入一些,多问问来龙去脉。可以忽略部分实验细节,但是对于概念性的问题一定要搞清楚。不要惧怕翻阅过去的经典文章,这是非常正常的。

43. 看不懂论文很有可能是因为实践能力还不够,如果实践能力够的话,本领域论文看个introduction就基本能猜到是怎么做的了。尽可能的把读论文和做实验结合起来,不要有非常长的文献阅读期。就算是做理论研究的,也要举具体例子,把理论具体化。做实验科学的,更得知行合一。

44. 继续讲讲如何深入阅读论文。初学者最好找个懂行的人讨论一下,特别是要对经典论文讨论清楚。可以在bilibili或者知乎看看搜索热门文章的综述,看看懂行的人是怎么概括的。很多论文会把几句话就能说清楚的事编成几千字的故事,学会概括提炼核心,不要被表面故事骗了。

45. 深入阅读离不开文献的对比。要把同类的文献拿出来做做对比,就能发现其实很多看上去很novel的文章实际上只是做了某个小的改动,取得了非凡的意义。

46. 如果本身做的小方向比较新,要记得多看看已经比较成熟的相关方向的文献。历史的发展总是相似的。

47. 一个领域的发展趋势是可以量化的,可以自己统计一下近几年的文献数量,如果一个领域今年文章比较多(如下图),说明待解决的问题比较多,可以优先考虑。做热点问题从概率上成功率比较高,新手先做热点领域是没有错的,扎根冷门最后成功的是少数,很多冷门技术最后就被时代淘汰了,比如手机翻盖技术。

48. 一个清华的老师说的,对我影响很大。Experiment for insights, not for numbers。 做实验的最重要目的是要启发后续的研究,而不是要获取一个数字。评估一个实验有没有价值的关键标准,也是它能否启发后续的实验。

49. 最容易的研究就是A+B,即把两个研究成果的结合起来产生新的研究成果,naive combination。为什么A+B是最容易的?因为A和B的好处都已经被证明过了,A+B多半也是有价值的。A+B本身并没有错误,关键是要把A+B搞得好一些。一方面低端A+B往往效果并不好,需要磨合一下变成A*B。另一方面一篇好文章写的好,完全可以避免让人看出来是A+B。A+B的升华是一项重要的研究方法

50. 学会使用表格帮助思考。记不记得大学物理实验的时候,基本上就是提前把原理写好表格打好,到了实验室做个数据写上去就可以了。这种实验是最高效的。科研有时候不知道想要的结论是什么,但是有合适表格也能确保实验是有方向有条理的。

51. 学会控制变量。从小学开始我们就学变量控制法,真的能用好是需要技术的。比方说,一篇科研论文可能有很多大论点,小论点,理清如何通过控制变量来先证明小论点,最后再证明核心论点。

52. 学会建立自己的工具链。研究生和本科区别有一个重大区别是:本科生一个项目可能期末几天肝完就拉倒了,而研究生一个项目往往要做好几个月甚至几年。所以做研究建立自己的工具链就非常重要了。建立起好的工具链能够缩短实验周期,取得更深入的研究成果

53. 学会查文献,从学会使用Google scholar做起。像泛计算机类的,查东西都得用Google,百度真的不行。PS:很多人不知道其实Google scholar是可以导出citation的。

54. 学会用例子说话,这篇回答里面很多地方我都举了例子,这样才能快速地表明观点。

55. 交流时一定要先把context(背景信息)准确无误地表达清楚。比如要交代清楚一个算法,首先要讲这个算法要解决什么问题,这个算法的输入输出是什么,这个算法的框架是什么。然后再讲算法的细节是什么(这部分可能导师已经没功夫听了,可能听了也记不住)。失败的交流方式是讲了几十分钟算法的细节(比如某个变量的改动,某个公式的推导,或者对某些数据的操作),而没有交代清楚必要的context(为什么要做这件事?已知信息是什么?要得到什么?)。

56. 讲一个公式前必须保证先把每个公式的变量什么含义都讲清楚。如果有PPT的话,这个要写到一页上,不要口头讲。除非是基本到不能基本的概念,一定要明确表达符号的含义。我认识的很多教授都非常强调这个细节。

57. 要掌握一些常见的偏见。很多向我咨询的新研究生无法明白为什么导师一开始就对自己不好。可能是因为你过去的成绩不够亮眼,或者是你是从双非考研985,或者是你英语成绩不够,或者是导师瞧不起你过去的研究方向。甚至有些国外的导师瞧不起中国学生。这些偏见都是很常见也很正常的,不要跟导师杠,要相信随着时间积累,你的实力会让老师觉得你是可用之人,自然就不会被偏见左右了。

58. 新人找个靠谱的学长学姐带很重要。什么叫靠谱?首先,跟导师没有深仇大恨,不整天把负能量传递给你。其次,看的上你,你做得好做得不好都肯耐心给你讲,不起情绪。然后,本身能力也过硬,最好发过论文。最好是能平常一起打球什么的,不要显得一直是你找他帮忙。这几条重要性依次递减,不能都满足就挑前面的。

59. 导师学长的能力是次要的,态度更重要。科研是个拼工作量的苦力活,能同舟共济比什么都重要。当然,真正能力强的人更能看到别人的闪光点,可能也更好相处。

60. 占用公共资源时要小心,不可以占用过多资源。比如实验仪器、计算机等资源,最好经过导师调配再用,使用时也要注意看看其他学长、同门师兄的态度,避免挤占他人资源。

61. 先把关系理顺再办事。我在美国呆过的两个实验室都有这样的习俗,在每次小组开会之前,先聊聊最近各方面如何。小组会这点尤其适用。

62. 不一定所有的实验结果都要一下子汇报完。结果好的时候可以适当留一些,避免下周遇到了困难,没结果可以汇报。这个trick有很多时候都很有用,可以平滑项目的研究过程。

63. 自身的学术观点要尽量建立在实验的基础上。新手很容易犯的错是看了一大堆文献,没深入理解就下结论了。本科学到的学科基础基本都是经过大量验证的结论,但文献中有很多空话大话。其次,很多时候一个领域的研究是跟风似的,D文献依赖C文献结论,C依赖B,B引用了A的结论。说不定A的结论是错的,或者是有局限的,导致BCD都有问题。这时候实验验证就很关键了。另外很多领域真正有意义的文章可能是千里挑一,新手可能看了几十篇无意义的灌水文章,有时候还不如不看

64. 一个百试不爽的实验技巧:如果想要验证的某个想法在普遍情况下是成立的,先找某些特殊情况,或者加某些特殊条件加以验证。往往大的想法可以用这个技巧拆解成很多小实验来逐步证明,不容易掉进坑里。

65. 培养critical thinking很重要,有很多美国厉害的教授都重视这个。怎么培养?可以从正反面思考开始做起。在面对一篇文章的结论时,要经常考虑他在什么情况下不成立。这样往往能激发出新的研究点。还有一个可以联系critical thinking的办法:从正反面论述一个观点,自己尝试多写一写,看能不能把正反面观点及他们的支撑理由都说清楚。这个是非常难的写作,我们从小的教育都是让我们写一边倒的论文,要能把两方甚至多方的观点客观说清楚,值得整个研究生去刻意训练。有的导师会刻意提供正反观点让学生分别去研究,这不是导师的“错误”,反而是一个很好critical thinking的锻炼。实践出真知,只有把正反观点都验证一下,才能知道哪个更靠谱。如果说只沿着一条路走,很容易掉进坑里。

66. 有卓越的工程能力,这个可能是导师最看重的。比如有很强的记忆能力。以前在学竞赛的时候做光学实验,我们花很长时间精调都没观察到预期的现象,但是工程师来了,只是随手一摆,不经过精细调整,实验结果就出来了。工程师经过多年的训练,已经熟练记忆了每个光学器件的相对位置和角度,大脑的直觉胜过了仪器的精调。这是做科研需要着重培养的。

67. 对使用的每个工具都要非常非常熟练,精益求精。比如编程时经常需要用到各种库,可能其他专业需要用到各种软件。我认识的一些工程师对每个库的来龙去脉,底层实现都非常清晰,这样遇到困难时才能很快确定问题。刨根究底是一项非常重要的工程技术。我高中的数学老师是特级教师,他特别重视基本公式的基本推导,只有这些基本功扎实了,遇到复杂问题才能快速解构。

68. 尽早完成任务,不做DDL选手。我见过很多导师都讨厌那种论文DDL之前半天发给自己看论文的学生:这样老师根本没时间给学生改论文。尤其是不能等DDL之前让老师催自己,这样很不好。

69. 言必信行必果,作出的承诺就要达成,不做鸽子。如果说自己吃不准能不能做,就别拍胸脯担保。

70. 永远都分清楚什么是事实,什么是观点。不要对科研课题有很多负面的评价,多想解决问题的办法(下一步做什么),少提观点(过去做了什么失败的尝试)。

本文转载于知乎,原文请点击“阅读原文”。

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报