发布时间:2023-06-04 18:00
营长的一位转型AI的朋友,最近对营长抱怨,“走过的最远的路,就是机器学习过程中的弯路”,然后开始各种blablabla,从论文的坑,到模型的坑,再到培训的坑...一路吐槽。
尤其是论文,他骂道:“最讨厌的就是那种,高高在上、假装清高、站着说话不腰疼、戳不到痛点的论文。比如那一堆只能在理论中刷存在感,实际落地中只能‘呵呵哒’的论文,根本就是浪费时间。”
的确,对于现在刚刚入行的机器学习新人来说,不怕吃苦,但最怕走弯路,最怕白白浪费时间。
那么,总结起来,都有怎样的弯路呢?来看几位点赞量颇高的知乎答主的总结:
那些年,他们在机器学习中走过的弯路...
在知乎答主张馨宇(就职于百度地图)看来,机器学习的弯路有以下四个:
最大的弯路就是自己xjb学xjb试,和加入一个真正能做出东西的团队或跟随真正的牛人一起学习相比,速度要慢十倍都不止。学是要学,但不要以为自己xjb学就够了,差得远呢。
第二大的弯路就是成天xjb看论文,以为这样就能打通任督二脉,从来不复现论文或者尝试自己做出一些东西,这都是〇。
第三大弯路浅尝辄止,有些东西不往死里怼屁都做不出来。
第四大弯路迷信复杂的东西和新技术,以为新东西怼上去肯定就效果爆棚。其实都是不存在的。
个人主页:https://www.zhihu.com/people/diegozhang/activities
还有一位知乎答主ycszen,在他看来,最大弯路,就是迷信论文,不去实验。
DL\ML其实是一门实践性的学科,只有通过实验才能把握到其中的细节与真谛。虽说也是在写程序,但是DL的程序基本上无法直观地debug,所以非得自己去复现一下,实践一下,用performance来说话,才知道有没有出错。
尤其是DL,研究发展到现在,论文和实际做的东西脱节已经是心照不宣的事了。正因为NN+GD的鲁棒性,你xjb搞好像也能搞上去,所以写论文很多纯粹在编故事(好论文除外)
所以,我们最好不要一味相信论文所说,尤其是各种解释(经典算法,优秀论文除外)。NN就是个黑盒,谁也别说谁。而我们能做的,更重要的是,去实践去复现,去去伪存真,去发现其中真正的本质所在。
专栏地址:https://www.zhihu.com/people/yu-chang-qian/columns
而知乎答主:YukiRain(CV/ML方向研究生在读)则认为,非科班出身,刚转型AI的程序员最大的弯路是:没学好数学。
而对于数学基础好,科班出生的AI程序员来说,则应注意以下几个问题:
1.一开始没人带的时候,看论文喜欢看最新的,很大程度上忽视了很多比较老比较基础的论文,嫌弃以前的方法performance不好什么的......感觉我身边一些人也走进过这个误区......
2.永远不要迷信某个特定的模型,不要因为random forest在某个任务上效果好,就以后遇到什么任务都上random forest;也不要觉得深度学习就是万能的,什么都可以套神经网络解决;不要看到比赛里面大家整天用xgboost就整人云亦云地复制。学各种算法的时候,书上一般会告诉你这个算法有balabala优点一堆,但是一般不会告诉你这个算法也有balabala一堆缺点,我花了蛮长时间在这个坑里,慢慢摸索各种不同模型的特性。
3. 不要迷信一些理论性很强的论文,我一开始的时候,经常看到一大堆公式就下意识会觉得这个模型可能效果不错。事实上很多论文的理论推导和它的代码毫无关联(参见已经彻底回归炼丹的WGAN GP),还有很多论文的推导需要很强的assumption支持(参见每年都会出现在顶会的一些给模型加riemannian geometry的论文),等等。
个人主页:https://www.zhihu.com/people/yukio-2/activities
那么面对这些弯路,又应该如何解决呢?
机器学习新人应该注意的5个问题
知乎用户a88i99(微信公众号:yiqixue_ai)对此提供了非常接地气的论述。他曾是写后台的码农,此后又做了两三年数据挖掘工作,最近一年多正在学深度学习、强化学习。以下为他对于如何少走弯路这个话题的经验分享,也许能对你有帮助。(一起学AI专栏地址:https://zhuanlan.zhihu.com/yiqixue-ai)
首先,这个圈子里有价值的工作无非就三块
1. 发明牛逼的模型、算法、理论
2. 底层系统搭建,如各种框架
3. 学懂1中大神的部分发明,再会使用2中大神搭建的框架,来解决实际业务中的问题,产生商业价值。大部分人属于这里吧!!!
对于1与2,我读过理论物理博士,虽由于某种原因中途退学,也还是能说两句。那就是走正统的教育路线,能出国的出国,毕业后能去好公司的去好公司。但这里只强调一点:你跟的人是真正做事情的人,做的业务是真正有价值的业务,否则也是浪费青春。
我想大部分都是转行过来的吧,你看机器学习/深度学习的关注人数快100万了,科班出身能占10%,我觉得都高估了。下面只针对这群人来简单说下,莫怕,你们才是主流人群,就像三四线的用户是快手/头条的主流用户一样。
1. 不要求快,没有捷径。自己首先有个心理预期,数学好的入门也得一年半载的,数学需要补基础的估计要1-2年。可以去上培训班,交点钱,但也就跟机器学习混个脸熟。想入门还得花时间慢慢磨,真的没捷径,真的没捷径,真的没捷径!
2. 模型不求多,精通几个常见的,把机器学习的套路摸透就可以了。比如LR,朴素贝叶斯,决策树,基于SVD相关的简单模型,如推荐系统等。
把机器学习的套路摸透什么意思呢?比如LR为什么用logloss,而不是平方损失?为什么logloss 是凸函数,而平方的不是?优化算法啥时候用一阶mini-batch sgd,啥时候用二阶方法,为什么?这还只是说了损失函数与优化算法,还有模型结构,模型的效果评估指标,如何利用欠拟合/过拟合来分析指导优化模型等等。
因为简单的模型容易理解,有时数学上的证明也是可行的。这样,以它们为例子更容易理解机器学习这套东西,建立自己的直觉,自己的直觉,自己的直觉,几何的或物理的。
3. 选择规模中等的公开数据集,实战。一般有两个目的,首先是验证或纠正你前面学习的理解,其次是尝试解决实际问题。实际应用中的流程大概是:
a) 根据业务选择合适的线下与线上评估指标。
线下的指标可以辅助快速迭代,因为线上测试流程较长。线下指标缺点是过于片面。所以,一般利用线下指标来迭代,找到觉得不错的特征与模型,再搬到线上去测。
b) 快速构建基线模型与线上测试系统。
c) 调试系统,迭代想法
对工程师来讲,理解业务与线上系统真的很重要!因为你既没能力发明牛逼的算法模型,也没本事写框架,你若只会乱调包,那你的价值在哪里呢?所以,不深刻理解业务而是去瞎换模型算法,真得不合适,效果分分钟打脸。
4. 结伴而行,尽量不要放弃。只是觉得没有个讨论具体技术问题的社区,知乎说的东西太泛了,不系统。大家也不爱答具体的技术问题。
5. 这条专门送给码农转行过来的。
机器学习这套系统与传统技术系统有个非常大的差别。搭建个web/app系统难度不大,且做的好与坏,短期内不好区分与评价。垃圾系统在用户量不大的时候也能表现得不错。只有在用户量变得较大时,才会掉链子而遭打脸。 机器学习的系统不是这样,它是分分钟打脸。也就是我们常说的,这个系统不确定性较大,驾驭它的门槛略高。
掌握了以上几个要点,那么新人应该如何系统地学习机器学习呢?
新人该如何系统地学习机器学习?
以下来自阿萨姆(普华永道,数据科学家)的回答,他从宏观的角度,按照职业规划、学习方法、实际应用三个方向,系统性地回答了“新人应如何学习机器学习”这个话题。
机器学习中有很多弯路,从宏观角度分享一些我的观察。回答分为三个部分:a) 职业规划。 b) 学习方法。c) 实际应用。
1. 一个好的老板/老师远胜于自学。机器学习还没有达到批量化流水生产的阶段,因此一个好的“老师傅”比自学效果好很多。不仅如此,老师傅们一般都有自己多年经验总结出来的经验,往往可以避免很多不必要弯路。但选择老师傅应该注意是不是“挂羊头卖狗肉”,尤其要提防跨专业但号称多年的经验的人,有很高的概率是在蹭热点。这在选择导师以及选择工作分组时要尤其注意,毕竟已经是全民ML,all in AI的时代了...
2. 如果是转行来机器学习,不要和科班的人比拼编程能力和数学,要取巧利用自己已经了解的领域知识做结合。换句话说,转行做机器学习的最大的优势是你曾经所熟悉的领域,如果能与机器学习有所结合,你比科班出身的机器学习工程师更有市场。
参看:未来 3~5 年内,哪个方向的机器学习人才最紧缺?
https://www.zhihu.com/question/63883507/answer/227019715
和 阿萨姆:转行人士如何在人工智能领域保持一定的竞争力?
https://www.zhihu.com/question/67036323/answer/248527279
3. 如果有机会读一个相关学位(统计、计算机、应用数学等),去读。现阶段的就业市场还面临有价无市的局面,一方面企业开出高薪吸引机器学习人才,一方面符合条件的人太少。一般来说,名校相关学位硕士以上学历是大企业的基本要求,更高端的岗位还需要顶会和PhD。磨刀不误砍柴工,如果有可能,读一个硕士项目能很大程度的扫清路障,防止简历卡在人事手里。
参看 阿萨姆:外行应届毕业生找数据分析工作多难?
https://www.zhihu.com/question/57618120/answer/155396514
4. 调整心理预期,放宽搜索域。国内的机器学习领域除了BAT这种大公司,厉害的中小型(创业)公司比如商汤科技以外,还有很多其他不错的公司。很多同学都抱着非牛逼公司不去,但没有考虑到僧多肉少的问题,这不成熟。计算机科学作为常年霸占毕业生人数排行榜的专业,有再多科技公司都很难容纳所有人,更何况现在是人人都想机器学习的时代。人生不是线性的,不是高考高分->名校->好工作->升职加薪->走上人生巅峰一定会发生。所以,你即使没有进入谷歌实习也不代表你这辈子就完蛋了。想开一些,眼界再放的远一些,人生没那么急。
5. 机器学习面试是有规律的,摸清楚面试内容有助于盲目准备。机器学习的面试和传统的软件工程师不同,不仅有基本的编程能力考查,还有对数学、模型、以及业务理解的考查。更多机器学习面试经验分享可以参考:面试官如何判断面试者的机器学习水平?
更多的讨论可以参考:
现在的大数据、AI 这么火,会不会像曾经的 Android 和 iOS 一样,五年后也回归平淡?https://www.zhihu.com/question/67120248/answer/281427231
和 阿萨姆:工科生一年时间转行 cs 是否有可能?
https://www.zhihu.com/question/66421918/answer/245974321
和 阿萨姆:机器学习门下,有哪些在工业界应用较多,前景较好的小方向?
https://www.zhihu.com/question/57072166/answer/280824223
1. 不要把深度学习作为入门第一课,建议从经典机器学习开始入手。虽然很多人都是冲着深度学习来的,但把深度学习作为机器学习第一课不是个好主意。
原因如下:
深度学习的黑箱性更加明显,很容易学得囫囵吞枣
深度学习的理论/模型架构/技巧还在一直变化当中,并未尘埃落定
深度学习实验对硬件要求高,不太适合自学或者使用个人电脑进行学习