转自公众号算法与数学之美
营长的一位转型AI的朋友,最近对营长抱怨,“走过的最远的路,就是机器学习过程中的弯路”,然后开始各种blablabla,从论文的坑,到模型的坑,再到培训的坑...一路吐槽。
尤其是论文,他骂道:“最讨厌的就是那种,高高在上、假装清高、站着说话不腰疼、戳不到痛点的论文。比如那一堆只能在理论中刷存在感,实际落地中只能‘呵呵哒’的论文,根本就是浪费时间。”
的确,对于现在刚刚入行的机器学习新人来说,不怕吃苦,但最怕走弯路,最怕白白浪费时间。
那么,总结起来,都有怎样的弯路呢?来看几位点赞量颇高的知乎答主的总结:
那些年,他们在机器学习中走过的弯路...
在知乎答主张馨宇(就职于百度地图)看来,机器学习的弯路有以下四个:
最大的弯路就是自己xjb学xjb试,和加入一个真正能做出东西的团队或跟随真正的牛人一起学习相比,速度要慢十倍都不止。学是要学,但不要以为自己xjb学就够了,差得远呢。
第二大的弯路就是成天xjb看论文,以为这样就能打通任督二脉,从来不复现论文或者尝试自己做出一些东西,这都是〇。
第三大弯路浅尝辄止,有些东西不往死里怼屁都做不出来。
第四大弯路迷信复杂的东西和新技术,以为新东西怼上去肯定就效果爆棚。其实都是不存在的。
还有一位知乎答主ycszen,在他看来,最大弯路,就是迷信论文,不去实验。
DLML其实是一门实践性的学科,只有通过实验才能把握到其中的细节与真谛。虽说也是在写程序,但是DL的程序基本上无法直观地debug,所以非得自己去复现一下,实践一下,用performance来说话,才知道有没有出错。
尤其是DL,研究发展到现在,论文和实际做的东西脱节已经是心照不宣的事了。正因为NN+GD的鲁棒性,你xjb搞好像也能搞上去,所以写论文很多纯粹在编故事(好论文除外)
所以,我们最好不要一味相信论文所说,尤其是各种解释(经典算法,优秀论文除外)。NN就是个黑盒,谁也别说谁。而我们能做的,更重要的是,去实践去复现,去去伪存真,去发现其中真正的本质所在。
而知乎答主:YukiRain(CV/ML方向研究生在读)则认为,非科班出身,刚转型AI的程序员最大的弯路是:没学好数学。
而对于数学基础好,科班出生的AI程序员来说,则应注意以下几个问题:
1.一开始没人带的时候,看论文喜欢看最新的,很大程度上忽视了很多比较老比较基础的论文,嫌弃以前的方法performance不好什么的......感觉我身边一些人也走进过这个误区......
2.永远不要迷信某个特定的模型,不要因为random forest在某个任务上效果好,就以后遇到什么任务都上random forest;也不要觉得深度学习就是万能的,什么都可以套神经网络解决;不要看到比赛里面大家整天用xgboost就整人云亦云地复制。学各种算法的时候,书上一般会告诉你这个算法有balabala优点一堆,但是一般不会告诉你这个算法也有balabala一堆缺点,我花了蛮长时间在这个坑里,慢慢摸索各种不同模型的特性。
3. 不要迷信一些理论性很强的论文,我一开始的时候,经常看到一大堆公式就下意识会觉得这个模型可能效果不错。事实上很多论文的理论推导和它的代码毫无关联(参见已经彻底回归炼丹的WGAN GP),还有很多论文的推导需要很强的assumption支持(参见每年都会出现在顶会的一些给模型加riemannian geometry的论文),等等。
那么面对这些弯路,又应该如何解决呢?
那就是走正统的教育路线,你follow的人一定是真正做事情的人。机器学习还没有达到批量化流水生产的阶段,因此一个好的“老师傅”比自学效果好很多。不仅如此,老师傅们一般都有自己多年经验总结出来的经验,往往可以避免很多不必要弯路。目前机器学习的资料有很多,动辄就有几个G的材料可以下载或者观看。而很多朋友都有“收集癖”,一下子购买十几本书的人我也常常能够看到。而机器学习的发展和变化速度很快,在入门期间,建议“小而精”的选择资料。这不仅可以节约重复学习的时间,也可以读有品位的材料。