本科生理论知识切钻的太深。目前,国内博士生毕业相当困难,因为他们毕业时要写出创新性质的研究。或者老问题新思路,或者提出新问题。但是对于一个研究领域,比如机器学习,如果完全自己想出一个崭新的思路解决问题是非常困难的。因为在研究生资历范围内,能想出的idea或者解决某问题的方法,都已经被一下大牛在十几年或二十几年前想出来并且实践过了。与其自己花费时间想不如直接学习那些大牛的先进方法,然后适量优化。谈到优化,如果这些大牛的思路比较流行,或者开源。经过其他牛人的改进或者使用过之后,或许博士生连优化的空间都没有了。现在好多研究生能在别人的文章或代码上能做一些小小的优化,哪怕细枝末节的改进,都像淘到宝贝一样,写一片文章声明成就。博士生的理论水平尚且如此,本科生更不用说。
能看懂流程,达到能读懂代码的程度就赶紧动手掌握代码。本科生就业时,IT公司的面试题目大都是算法题目,或者某些架构模型粗略的知识。比如lda中的bayes模型,他们只会问怎么用,和如何优化,绝对不会问bayes起源,属性之类的,估计这些知识只有统计学专业的教授才能打的出来。本科生要做的就是了解和理解如何用,和如何更好的用这些理论,然后重点是实践部分。然而对于一些理论较强的专家,他们能在国际或者国内发表一些先进的文章,但是理论能讲的通,他们却不一定能自己实现出来。好多非计算机系的牛人写出改革性或先进的文章后,其他人读了会找他要代码。但是他们大都说代码丢了,或其他理由推脱。不是为了封装,而是自己写不出来,他们写文章只能让那些专业写代码的牛人帮助实现。对于这些文章,同时让这个教授自己和一个拿过奖的ACMer写,很有可能ACMer写的代码性能远远高于这个教授。总之,对于本科生来说,走理论的路太难,并且成功也只有很低的概率。与其自己靠拙劣的基础研究,不如开放思想去认知别人先进的思想和代码。
理论学习的程度。应该有两种程度,先到达应用程度,后到达理解原理的程度。第一个应该比较好达到,可以大概看看论文,然后直接读代码。根据代码在决定哪一块重看或细看。理解原理,这一点一定要把握好度,本科生要以代码为主,然后以后根据实际情况再看,螺旋式学习。
浙公网安备 33010602011771号