那些年,他们在机器学习中走过的弯路...



营长的一位转型AI的朋友,最近对营长抱怨,“走过的最远的路,就是机器学习过程中的弯路”,然后开始各种blablabla,从论文的坑,到模型的坑,再到培训的坑...一路吐槽。


尤其是论文,他骂道:“最讨厌的就是那种,高高在上、假装清高、站着说话不腰疼、戳不到痛点的论文。比如那一堆只能在理论中刷存在感,实际落地中只能‘呵呵哒’的论文,根本就是浪费时间。”


的确,对于现在刚刚入行的机器学习新人来说,不怕吃苦,但最怕走弯路,最怕白白浪费时间。


那么,总结起来,都有怎样的弯路呢?来看几位点赞量颇高的知乎答主的总结:



那些年,他们在机器学习中走过的弯路...


在知乎答主张馨宇(就职于百度地图)看来,机器学习的弯路有以下四个:


最大的弯路就是自己xjb学xjb试,和加入一个真正能做出东西的团队或跟随真正的牛人一起学习相比,速度要慢十倍都不止。学是要学,但不要以为自己xjb学就够了,差得远呢。


第二大的弯路就是成天xjb看论文,以为这样就能打通任督二脉,从来不复现论文或者尝试自己做出一些东西,这都是〇。


第三大弯路浅尝辄止,有些东西不往死里怼屁都做不出来。


第四大弯路迷信复杂的东西和新技术,以为新东西怼上去肯定就效果爆棚。其实都是不存在的。


还有一位知乎答主ycszen,在他看来,最大弯路,就是迷信论文,不去实验。


DL\ML其实是一门实践性的学科,只有通过实验才能把握到其中的细节与真谛。虽说也是在写程序,但是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的论文),等等。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


展开阅读全文

学习中走过的一些弯路

09-29

开始学习C++的时候没有接触到《the C++ programming language》,以至于在一堆烂书的误导下把精力浪费在了看起来无穷无尽的语法上面。还有一些C++“老”书,之所以加引号,是因为它们的出版日期并不早,可却跟八百年前写出来的一样,于是出现这样一种怪现象:每个C++初学者都在那里不亦乐乎地发明着自己的list,stack……rnrn碰到《inside C++ object model》这本书太早,以至于在连虚函数都没有真正用过一次的情况下,就研究起了C++的对象模型是如何支持多态行为的,当时觉得自己很高深,现在想起来觉得很可悲。rnrn看《Essential COM》太早,一个连virtual之于面向对象的重要性都没有认识到的人是很容易相信Don Box这种微软御用作家关于“COM是更好的C++”的丰胸广告的。后来明白了,COM根本不是什么更好的C++,COM压根就跟C++没有一点关系…… 为了成全COM,你必须阉割C++。rnrn接触mfc过早,在C++和windows编程双双没有掌握好的情况下,就又一头扎进了mfc庞大而混乱的泥沼。当时虚荣心作怪,把掌握mfc看作一种智力上的挑战。现在总算明白了,这根本不是什么智力上的挑战,这是对人忍耐力的挑战。mfc总算学明白了,但觉得太不值了。除了维护老的mfc工程没办法之外,我现在是见了mfc就捂着鼻子躲着走。 论坛

学技术以来走过弯路

04-28

反面教材, 仅供参考rnrn1. 死抠语法rn 虽然我们计算机系是不用参加等级考试的,我依然买了C语言二级辅导书陶冶情操,rn 后来发现不但没有意义,还被毒害的很深,记住了一些错误的东西,花了很多时间纠正错误,rn 到现在还有一些遗留问题没纠正过来。二级考试方面的当作反面教材可能更加合适。rnrn2. 学习MFCrn 虽然没有学到多好,毕竟也浪费了不少时间,这玩意儿在学校里被吹的多牛逼多牛逼,rn 仿佛不懂这个就不懂编程一样,很多老掉牙的书,或者老掉牙的同志最近写的书,rn 都把这个当作宝贝,不厌其烦的叙述着MFC如何问世,如何先进,如何强大。rn 这话要放在2000年之前的时候,一点都不为过,可惜.net羽翼越来越丰满,rn 很多原本MFC的饭碗被.net抢走了,更低的成本,更少的开发时间,多划算。rn 等出来找工作的时候才发现,啃MFC是靠不住的,不但职位少,待遇还少。rnrn3. 钻研Turbocrn 至今仍珍藏着杨德斌编写的turboc实用大全,记得花了很多时间研究tc库函数的使用,rn 更悲剧的是,还特别花时间实践了tc图形库的使用,当时还很有成就感的样子,rn 后来仍然被实践证明,纯属浪费时间。rnrn4. 学习Delphirn 也是听外界吹嘘的很厉害,结果就不说了,学这玩意儿比MFC还悲剧。rnrn5. 玩系统.rn 精简系统,优化系统,捣鼓注册表,改BIOS画面,... 折腾了一大框,没得到什么好处。rnrn6. 学习其它各种语言rn java, VB, C#, perl, python, ... 最后记住的,只有工作时用的上的那几种。rnrn没怎么花时间的就不列举了rnrn很多人应该在走我走过的老路吧,弯路总是会一代代的走下去的 论坛

没有更多推荐了,返回首页