这篇文章是Nemo老师发布在自己的专栏里的,自己转载过来以后自己多看看,个人认为对于有志于出国留学或者在国内读研的同学来说,在本科阶段积累一些科研经验是十分重要的,实际动手做会让你对学过的知识有新的认识,能提前体验研究生的生活。而我自己目前也是处在这懵懵懂懂的阶段,多看看,少走点弯路,O(∩_∩)O哈哈
又到了一年申请季,大学生们已经考完了GRE、托福开始向心仪的学校套磁。学生们最关心的问题是GPA高不高,英语考得好不好,以及心仪学校是否有回应。而作为一个老师,最关心的问题却是他/她的科研能力如何。我觉得这个过程麻烦的地方在于,一方面学生总觉得找不到合适的老师想要自己,而老师这方面,却总觉得找不到合适的学生来做科研。
所以我想,如果学生一开始就知道什么是科研,以及自己有没有可能会喜欢它,也许会省掉双方很多时间。 下面是我在国内一所大学做seminar的时候讲的一些内容,我想也许对这里希望进入科研以及准备申请PhD的同学们有所帮助。
一. 什么是科研
科研是一种基于已有知识探索未知世界的过程。例如,基于已有的人工智能技术(已知),我们是否能做一个自动炒菜的算法(未知),同时满足南方人和北方人的口味(不知道是否可能)。我们首先要学习已知知识,在这个基础上解决未知问题,然后根据一些可能的评判标准来说服读者我们确实解决了这个问题。
科研和我们很多熟知的过程有区别。
科研和生产产品的区别:生产产品完全是基于已有知识,它的目的并不在于探索未知,而在于产出某种具有实用价值的东西(比如根据菜谱炒一个菜)。而科研的输出往往并不那么具有实用价值(比如炒菜算法)。但这个科研输出是未来生产产品的必须(比如炒菜算法->自动生成菜谱->炒一个菜)。
很多同学,甚至是研究者在抱怨自己做的东西“没有用”,其实就是混淆了科研和生产的区别。“没有用” 只是表示不能直接做成产品,并不代表“没有价值”。
科研输出和产品之间的区别实际上造成了学术界和工业界的鸿沟。一个理论从提出到最终产生产品,中间有很长的路要走。目前很多高校致力于学术界和工业界的合作,以期弥补这个鸿沟,这是一个很好的趋势,但这并不代表我们每一个科研成果一定都会被或者能被工业界所利用。那些不能利用的,并不是没有价值的成果。一个人吃了7个馒头才饱,并不代表前面6个白吃了.
科研和学习的区别: 科研和学习最大的区别在于学习的过程是有正确答案的,而科研没有正确答案。
我想这是最让同学们崩溃的一点。因为在过去十几年的学习中,我们已经习惯做完了题目回头去翻答案来验证自己是否正确。但科研,确实是没有答案,你说它对,那么你必须想办法说服别人它是对的。如果你说别人错了,那么也必须想办法证明它是错的。
科研和学习的区别造成了很多平常成绩很好的同学直接进入科研的话,水平并不一定会很高。但这并不是很大的问题,我们需要调整心态,用新的方式来进入科研,把它拖到和自己一个水平,然后用丰富的经验打败它。
科研有意思的地方在于它能满足人的好奇心和成就感,但讨厌的地方在于我们会面临失败的风险。在我看来,科研是证明自己智商比别人强的最佳方式。
二. 科研的不同阶段
本科: 一般认为本科是学习知识的阶段。从理工科研究的角度来说,打好数学基础是重中之重。在这个阶段,同学们能够做的是用旧方法解决旧问题。就是说你解决的问题早就存在了,而且已经被人解决了,你所做的事情就是重复前人做过的事情,在这个过程中学习知识。也许有同学很不服气的说我明明能想出更好的方法。相信我,这个阶段你能想出的所有的方法都已经被人想过很多遍了。
一般人是在硕士阶段进入实验室开始接触研究。如果在本科阶段希望进入研究领域,一定要找一个你的老师作为你的导师。因为研究是一件很专业的事情,本科生自己是无法入门的。
硕士:硕士可以学习一些有用的工具了,例如graphic model, 马尔可夫链等等,用这些工具解决一些新提出的小问题。这个阶段,新问题和采用何种工具一般由导师提出来,硕士负责想具体解决方案。
博士:博士的主要任务是用新工具解决新提出的问题。这里新工具往往是博士生根据要解决的问题裁剪甚至重构已有的工具。提出的问题既可以是导师提出,也可以是自己提出。一般在这个阶段,学生已经有提出问题的能力了。而且也能想出一些别人没想到的方法了。
导师:导师的任务包括且不仅限于:指导学生研究方法论;给学生定大的方向;推荐给学生阅读的教材;推荐给学校需要阅读的paper;合作写文章,并且在合作过程中指导学生写文章;和学生讨论;给学生idea(这一点不强求);提供给学生各种学习的资源和机会等等。
举一个例子说明不同阶段的区别。目前DeepLearning很火,如果打算现在用Deep Learning来开发一个人脸年龄识别系统,我们应该如何实现?
本科阶段:用Google提供的框架,和某公司提供的年龄识别的API来做一个系统。很完美解决问题,还可以发朋友圈show一下。但这并不算真的科研,更像一个作业。这个过程只是训练如何使用Deep Learning的各种工具,如何train一个model,以及熟悉相关名词的。换句话说这个成果是没有办法发paper的。
硕士阶段:自己设计一个基于某算法A的年龄识别的Model,对算法A进行修改产生算法B,并且优化了参数,训练之后效果还行。这个成果可以发表在一般的会议或者杂志中。
博士阶段:设计一个算法C,和算法A相比,由于添加了新操作D,能够更准确识别年龄。这个成果可以发表在好一点的会议和杂志中。
大牛阶段:推翻了算法ABCD, 提出一个全新概念例如Dark Learning,不但能识别年龄,还能在黑暗中识别年龄。这个可以发表在顶级会议和杂志中。
大家可以根据自己的能力看看自己处于哪个阶段。马克思哲学说过要遵循物质发展的客观规律,这在研究中一样适用。这个世界上不存在一蹴而就的成功,任何大牛都是老老实实走过这几个阶段才获取最后的成果。区别仅仅在于有的人花的时间短,有的人花的时间长。如果你遇到了对的导师进入了一个对的组,也许这个时间就会短一点。
任何一个阶段,我都非常强调导师的重要性。科研是一件非常专业的事情,没有导师指导和同学之间的讨论,独立的个体是几乎没有办法科研入门的。记得在知乎上看过一个题目说业余足球队有没有可能赢过专业球队,所有人的答案都是不行,而且举了各种例子来证明不行。科研也是如此。我想,应该任何行业都是如此。
三. 科研成果的表现
科研成果主要的表现形式是文章(paper),专利(Patent)和项目(Grant)
我先说一下文章(paper)。
文章就是你做了某种研究,有所发现,而且这个发现比别人都好。那你要怎么让人知道呢?显然是写下来放在.....知乎上,还是BBS上?这里就牵涉到一个怎么写,和放在哪里的问题。这两个问题其实都隐含一个更深层次的问题:怎么判断你提出的发现的好不好。
首先你必须写的好,这个写的好意味着你必须要以学术界熟悉的方式去表现这篇文章,而不是以你自己喜欢的方式。前者可以让人更容易理解你的想法。如何以学术界熟悉的方式来写文章就说来话长,不是我这篇科普文章可以囊括的,需要老师的悉心指导。
然后就是发表在哪里。学术界的基本思路是文章写的越好,发表的地方就越好;反过来也成立,发表的地方越好,文章就越好。这些都是靠同行评价来实现的。
如果一篇文章写的非常清晰,并且通过同行评价发在了非常好的地方,比如顶级会议。那么我们一般认为你提出的发现是非常好的。
而对于研究者来说,最重要的就是文章。
知乎曾经有个挺有名的问题是如何对待科研组过于注重发文章这一行为。我的回答是
“这是学术界普遍现象,国外更甚。我经常开玩笑说学术界大家交换完名片就去查对方google citation。这是因为文章是所有科研活动中唯一严格接受并且通过了同行评议的成果。它类似于一个标尺,衡量着一个人,或者一个组科研所达到的高度。其他任何科研行为都做不到这一点。为了定量分析成就,唯有文章。”
对于做研究的本科、硕士、博士生来说,文章是衡量你研究质量的唯一标准。
专利(Patent)和文章有相似的地方,都是你有所发现后,然后向专利局申请说这个是我第一个发现的,其他人要用必须给钱我....... 这个过程往往和工业界相关。所以工业界更专注申请patent,而学术界更看重文章。对于在希望未来在学术界混的博士生来说,专利用处不如paper那么明显。
项目(Grant)往往指的是出钱的那一方(国家,公司,组织)想做一点探索性的事情,然后找合适的人把它做出来。那么怎么找合适的人呢?依旧是看paper,谁paper发的质量高,谁做出来的可能性就越大。所以项目代表的是评审人对科研人员的期望值:我相信你能做出来,所以我用钱来支持你。但你到底能不能做出来,还是未知数。所以从这个意义上来说,项目和funding更多代表期望值。
项目往往只有老师能申请,甚至还需要是教授级别的人才有机会申请到。申请到的funding可以支持学生发文章、开会、以及参加各种科研活动。所以在学生阶段,自己的导师有项目是一件很幸福的事情。
所以总的来说,在学生研究阶段,最重要的就是发表论文,No paper,no job.
最后借用我曾经回答某个问题时候说的一句话:我觉得这个世界上最高级别的显摆就是科学家用paper证明自己比其他科学家聪明。
四. 如何进入科研
其实我感觉这个section才是重点。在我看来,以计算机学科为例(其他学科例如医学我没接触过,应该和这个有区别),进入科研分成五个步骤:技能积累,专业积累,找到问题,找到解决方案以及充分讨论。这几个步骤完成以后,差不多就可以开始写文章了。
1. 技能积累
技能积累是一件老师非常清楚一定要做,但是同学们经常忽视的事情。还记得我上一篇提到的“工具箱”的事情把。技能积累就是完善你的工具箱,工具箱越齐全,解决问题的手段就越先进。在计算机领域,工具箱主要由各种数学、各种算法组成。一般我认为学习这些数学和相关内容大概需要至少一年的时间。这一年的时间需要花大量的时间看各种课本。看课本这一点和很多同学的认知是有区别的。
初入科研的同学总觉得只有看paper才是做科研的正途。这句话对于初学者是错误的。因为在没有任何数学积累的情况下看paper,只会收获一堆看不懂的公式,这样的进展是极慢的。只有当技能积累到达一定的水平以后,我才建议大家进入下一个步骤。
给大家说个笑话。我十几年前读master的时候,学会了一个Data Mining里的association rule,然后解决任何问题都用这个工具.......前后发了3、4篇文章......因为我只会这个啊。任何一个问题来了我先试试association rule行不行, 我去年发的一篇文章都还用上了association rule呢。后来学了个clustering,终于会点别的了。
2. 专业积累
专业积累应该大家相对熟悉了,简单来说就是看文章,看大量的高水平文章。担心看不懂? 没事,有了技能积累,文章写来写去绕不开几本经典课本,看个几遍就懂了。那么这个大量到底是多少?按照我读博士时候导师的说法,是300篇,读完以后idea有如泉涌。颇有点熟读唐诗三百首,不会作诗也会吟的意境。
对于大多数人来说,读300篇确实力不能及,那么按照我的经验,最低限度是100篇。这100篇文章需要搞清楚每篇提出的问题、解决方案、实验方案、结论。刚开始一周读一篇就很不错,然后争取三天读一篇,到最后可以做到每天读一篇。
然后,精选20篇文章来实现。这个实现的意思是你用自己的编程工具把这篇文章里的算法实现一遍。在这个过程里你会发现他们的弱点,甚至能提出自己的improve的方式。这才叫知行合一了。有同学问我把这100篇都实现一遍行不行? 当然行,只要你有时间,多多益善。
最后,做一个综述(Survey)。就是把你看过的这些文章综合起来总结一遍,经过横向和纵向的比较,梳理这个领域里已经解决的问题和尚未解决的问题。
做完这两步,大致6-12个月的时间花出去了。已经有同学着急了,觉得隔壁组的小明SCI都发3篇了,我这里还没有开始呢。没事,磨刀不误砍柴工,欲速而不达。
3. 找到一个问题
前面在写综述的过程中同学已经非常了解这个领域发展的近况了。那么到底啥问题没有解决好? 或者在implement 20篇文章的时候有什么新想法? 这些都可以成为提出的问题。一般来说,在这个阶段同学自己提出问题是相对困难的,需要导师的帮助了。导师更有经验,站的更高,看的更远,所以提出的问题更有前瞻性也更有意义。
当拿到一个好问题的时候,检验你工具箱的时间到了。
4. 在“工具箱”里找到解决方案
打开工具箱,很遗憾,由于隔壁组的小明前面数学没学好,大概只会用一个association rule。而你打开工具箱,满满当当全是工具,从贝叶斯分类到黎曼猜想,不用犹豫,从中挑一个吧。
5. 充分讨论
挑完工具不代表马上可以开始写文章了。有个很重要的步骤是把你的想法和你的合作者讨论,特别是和导师讨论。这是为了避免两个错误:方法重复或者出现理论错误。首先,你从工具箱里挑工具的时候很有可能别人也用过同样的工具。结果你用的还没有人家好。这个错误自己没发现,但是往往可以通过和人讨论发现的。另外,有时候自以为发明了一个绝世好idea,但其实有理论错误。类似于在森林里的探索,自以为发现一条曲径通幽的小路,结果走过去发现掉坑里了,待到找到梯子爬出来以后又忘记了先前掉坑里的惨痛教训,直到被审稿人教训一通才知道梯子也是瘸腿的。 而和人充分讨论往往可以避免这些情况。
完成这五个步骤,大概可以说,科研差不多已经站在起跑线啦,已经可以开始写文章了,再往后就看运气和努力程度了。
再用我曾经的一个回答结束这个系列帖子吧: ”青年千人年薪50w起步,加上安家费,科研启动金,妥妥一毕业就白手起家赚到一百万。努力吧 PhD!”
原贴地址,感谢Nemo老师:
网友评论