一个机器学习博士生的忠告[转]

纯属转载,有参考价值,更要共勉! 
知乎原文

题主似乎没有明确自己是博士生,以下假设为博士生。

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的机器学习,林轩田的机器学习基石+技法),都是需要花时间去学习的。否则你会发现,你以为读懂了论文,其实你还是不
懂,所以你也没法做出自己的研究。

时间: 2024-10-12 20:45:38

一个机器学习博士生的忠告[转]的相关文章

如何快速部署一个机器学习在线预测系统

七牛的自定义数据处理平台提供高性能 GPU 计算机群及自动伸缩容器集群方便开发者对云存储中的大量图片/音视频/文档数据进行云端机器学习,包括图像分类.视频分析.语音识别以及自然语言处理等等.简单易用的自定义数据处理平台可以帮助开发者快速构建机器学习应用,实现在云端进行训练.分类和预测. 本文介绍如何使用七牛自定义数据处理平台快速部署一个机器学习在线预测系统.主要分为以下三个步骤: 第一步:构建机器学习应用容器镜像 第二步:在平台上注册及部署机器学习应用 第三步:使用机器学习系统在线预测 前期准备

斯坦福CS229机器学习课程笔记七:算法诊断、误差分析以及如何开始一个机器学习问题

这一节是Andrew对应用机器学习给出的建议,虽然没有数学公式,但却是十分重要的一课. Debugging Learning Algorithms 假设要做一个垃圾邮件分类的模型,已经从海量的词汇表中选出一个较小的词汇子集(100个单词)作为特征. 用梯度上升算法实现了贝叶斯逻辑回归,但测试集的错误率达到了20%,这显然太高了. 如何解决这个问题? 收集更多的训练样本 进一步减少特征数 增加特征数 改变特征(考虑邮件标题/正文) 将梯度上升多运行几个迭代 尝试牛顿方法 使用不同的λ 改用SVM

每日一个机器学习算法——机器学习实践

知道某个算法,和运用一个算法是两码事儿. 当你训练出数据后,发觉模型有太大误差,怎么办? 1)获取更多的数据.也许有用吧. 2)减少特征维度.你可以自己手动选择,也可以利用诸如PCA等数学方法. 3)获取更多的特征.当然这个方法很耗时,而且不一定有用. 4)添加多项式特征.你在抓救命稻草么? 5)构建属于你自己的,新的,更好的特征.有点儿冒险. 6)调整正则化参数lambuda. 以上方法的尝试有些碰运气,搞不好就是浪费大把时间. machine learning diagonostic. 机器

每日一个机器学习算法——k近邻分类

K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合. 一个不足之处是计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点.

每日一个机器学习算法——信息熵

1 定义 2 直观解释 信息熵用来衡量信息量的大小 若不确定性越大,则信息量越大,熵越大 若不确定性越小,则信息量越小,熵越小 比如A班对B班,胜率一个为x,另一个为1-x 则信息熵为 -(xlogx + (1-x)log(1-x)) 求导后容易证明x=1/2时取得最大,最大值为2 也就是说两者势均力敌时,不确定性最大,熵最大. 3 应用 数据挖掘中的决策树. 构建决策树的过程,就是减小信息熵,减小不确定性.从而完整构造决策树模型. 所以我们需要在每一次选择分支属性时,计算这样分类所带来的信息熵

一个资深房产经纪人的忠告

一个企业里的"精神灵魂"需要具备什么?答案就是特质. 所谓特质,其实就是骨子里面的东西.你的小宇宙有多强,决定了你会把事情做到何种程度.比如责任心.态度.对细节的关注.坚韧和坚持.逆境商.做事的魄力.价值观等等.这些东西里有些是先天的,但大部分却是后天可以培养出来的. 如果说我愿意用10年时间来磨练自己,可以受任何委屈.任何苦楚.任何不理解,摈弃钱的诱惑,积累冰山以下的东西,换我之后10年.20年的生活.然而很多人说我傻,但我相信傻人早晚会有傻福. 公司.同事和你的关系 谁都想去一个好

每日一个机器学习算法——正则化

在对数据进行拟合,学习模型的过程中,会出现以下情况: 1)high variance, overfitting.过拟合 2)high bias, underfiiting.欠拟合 过拟合出现的原因 1)太多的特征. 2)过少的训练数据. 如何解决? 1)减少特征数 2)模型选择算法(model selection algorithm) 3)正则化:保留特征参数,但尽可能减小其幅值为0. lambuda为正则化参数:看做是一个tradeoff.用于平衡以下两项 1)更好的适应模型 2)将特征的系数

每日一个机器学习算法——adaboost

在网上找到一篇好文,直接粘贴过来,加上一些补充和自己的理解,算作此文. My education in the fundamentals of machine learning has mainly come from Andrew Ng’s excellent Coursera course on the topic. One thing that wasn’t covered in that course, though, was the topic of “boosting” which

手写一个机器学习的入门算法-感知器算法

用4x+5y=2000作为分界线制造了100个点: 初始分界线为0,0: 经过1000轮纠正后,结果是: 22 x+31 y = 11876 对比结果4 x + 5 y = 2000 还是比较接近的.   刚开始更新w的那行代码搞错了,以为是用predict去纠正,其实应该用sample的真实值去纠正.   import random; def find_split(points): w=(0,0,0) for _ in range(1,2000): print 'w='+str(w); for