转
一个博士(机器学习方向)的忠告
转载于:https://blog.csdn.net/dengheCSDN/article/details/81877437
原转载于知乎:https://www.zhihu.com/question/25157730
问题:读机器学习方向。
发现机器学习算法比较固定,算法应用于文本和图像处理。
毕业要求发表级别较高的期刊论文,算法都已经存在甚至被改进过,
怎么能写出自己的东西呢?没有idea,也就没有实验。
怎么能完成论文呢?
迷茫中。
求指导,谢谢。
谢邀,本来不想回答这个问题,因为作为一个并不成功,毕业捉急,论文扶不上墙的博士生,实在觉得太勉强了。不过这两天转念一想,即使是把自己的教训写出来,帮助哪怕一位同学少走一步弯路,也算是大功一件,所以抛砖引玉如下,有不妥之处请大家海涵。
题主似乎没有明确自己是博士生,以下假设为博士生。
1、首先,请以一个局外人的理智角度,对你的导师进行如下分类:
① 圈内大牛,高水平论文很多,目前自己仍在亲力亲为参与科研工作,请转2
② 简历里面有一些高水平论文,但是似乎并不能算是大牛,请转3
③ 其他情况,请转4
2、这一种情况是比较理想的,个人认为你的关于论文的疑惑,其实可以尽量多和你的导师交流。不说科研这么大的话题,单单就写论文来说,其实有很多的技巧和潜规则,与其自己去试错,不如从导师那里多取取经。
3、这种情况,自己需要多上心,导师可能因为忙于行政之类的原因不能对你进行直接的指导,那么自己一定不要放任自流。国内的现实情况,导师手下学生实在太多,绝大多数的事情没有可能帮你考虑。具体到机器学习的研究,可以先和导师讨论确定一个大致的方向,然后自己寻找一个具体的问题(如果导师一直不能帮你确认大致方向请转4)。在拟定研究问题的时候,这几个问题必须有肯定的回答:
① 你是否可以获取到最前沿论文中使用的实验源数据(参照最新会议论文,机器学习领域请参照ICML NIPS AAAI CVPR等)
② 对于这些实验源数据,你的计算资源是否能有效承载(例如,只有五年前配置的机器的话,深度学习方向的搞起来会倍加困难)
③ 对于研究问题本身,以及问题背后的抽象理念,你本人是否认同和喜爱(当你研究一类算法,如果自己都觉得不喜欢,出idea的速度会明显变慢)
④ 该研究问题,近3年的会议和近5年的期刊文章中,是否还有持续出现
上面这几个问题,是有效开展一个研究课题的必要(但并非充分)条件。可以看出,和已有的回答一样,要回答这些问题,要求你必须对这个小问题相关的研究有一个整体的把握,自己动手写一个survey是比较好的途径,参考文献超过100的时候大概算是入门。到那个时候,你自己就会有各种各样的想法等待实现,当然,这些想法里面大概有40%不靠谱,有40%是别人做过的,有10%你没能力做,会转化成你的论文的就是剩下的10%,不过这些都比较简单了。
4、【一流大学的同学,以及导师足够靠谱的同学,就不用向下看了,意义不大】
如果你发现落到了这样的情况,自己就一定要警惕了。这种情况对于博士生是极端不利的,稍有不慎就会让自己未来的几年极端痛苦(亲身经历)。那么,我有以下几点建议:
① 注意管理时间。即使你是一个努力和注意自我约束的人,你也一定要注意自己的日常科研时间是否被用在了与自己科研相关的事务上。几个简单的例子:
a)大量时间用于做导师的横向项目,横向项目与研究课题基本无关或工程性质过强。
b)在导师的要求下进行类似于数据采集/数据预处理相关的工作内容,并且没有用到任何具有前沿性的技术。
c)导师完全不管,自行寻找研究方向但不得其法。
② 多动手,少学习。这里所谓的“少学习”指的是,不要因为你要用到的工具包需要使用你从未接触过的Python语言,就抱着一本python编程指南啃三星期。这种“学习”基本上是浪费时间,关于matlab、python、Hadoop、OpenCV、nltk……这些耳熟能详工具的使用,请活用官方文档、百度以及google,按照你的需求,边做边学即可。
③ 多和导师诉苦。俗话说会哭的孩子有奶吃,不要觉得自己很厉害很清高就闷着头自己干,你的导师也许科研能力不行,但是你要认清现实:只有他可以帮得上你。即使只是给你换一台性能好的计算机或者大一点的桌子,对你的科研都是促进。
④ 多写论文。尤其是在读博的初期,不要因为担心论文水平不行就不敢动手写,正确的做法是,在完成了survey过程后,应该保持持续的论文写作,只要你超过10天没有写论文,就应该给自己亮红灯。原因如下:
a)论文是你毕业的筹码,没有筹码,你就什么都没有。
b)论文只要别太烂,写出来总是能发的,也许被退好多次,也许投低档次期刊,但都能发。
c)写论文是需要练习的,在写出好论文之前,一般需要写好多烂论文。
d)除非你天赋秉异或者英语极好,否则无论你的创新多么好,单就语言来说,你刚开始写的英文论文基本上在外国审稿人看来就是狗屁不通。
e)多被reject几次,就知道论文该怎么写了。
⑤ 关于题主说到的,感觉各种算法都被改进过了,不知道从何下手的问题。其实主要还是源自对研究问题和相关方法的不熟悉,并不需要特别担心坑已经被填完了的问题。你可以去瞄一眼这个论文:Manuel Fern andez-Delgado et.al. Do we Need Hundreds of Classi ers to Solve Real World Classi cation Problems? ,Journal of Machine Learning Research 15 (2014) 3133-3181。里面对比了用于分类的179种算法,这些算法也都是发了论文的,可以说其中大多数在实际上并没有非常好的应用价值。于是大家不要太紧张,任何一点点小的改进、想法在合理的包装下都可以是一篇优质的论文。对于题主来说,可以多考虑一些idea的combining,比如有人用方法1解决问题A,有人用方法2解决问题B,那么我用方法2的思路改进方法1从而更好地解决问题A,这就是能够出论文的点。
⑥ 工欲善其事必先利其器。从论文查阅和下载,文献管理,笔记管理,数据收集和整理,实验工具,论文写作流程等各个方面,多优化自己的工作流程,省下来的时间哪怕用来睡觉都是好的。重复上面说过的,请活用百度和google,当然如果你有靠谱的师兄师姐也可以。
⑦ 多学习。这和上面的②不冲突,这里说的学习,指的是和你科研能力息息相关的基础知识体系,而不是如何用python实现你的一个简单想法。无论是经典的课本(PRML, MLAPP, ESL等)还是经典的公开课(Ng的机器学习,林轩田的机器学习基石+技法),都是需要花时间去学习的。否则你会发现,你以为读懂了论文,其实你还是不懂,所以你也没法做出自己的研究。