我常帮助菜鸟们学习机器学习。
但是我看到,他们在思维模式上和行动上,经常犯同样的错误。
本文我要指出他们经常栽跟头的5个地方。
希望你能够意识到自己已经毫无悬念地掉进了以下的某个坑里,然后果断采取行动,回到正路上。
不要从理论开始
传统的方法教机器学习是自下而上的——
step1: 努力学习数学。
step2 : 努力学习机器学习理论。
step3 : 努力从头开始实现算法。
stepX ???(等等等等,自行脑补。。。)
终于,开始使用机器学习 (你的目标在此!)
这条路漫长,艰难。
然而,这是为想要摘金夺银的学术界大神们设计的。
陷阱
如果你有以下想法或者说法,你已不幸落井——
我得先完成这门线性代数的课才行。
我得回学校先读个博士学位。
我得先啃完这本教科书。
出路
耗费4年在数学或者深奥的算法上,能将你带到目标么?
更大的可能是然并卵。你停步不前。或者知难而退。反正离你的目标不会越来越近。
出路是——立正,稍息,向后转!
如果机器学习的价值在于准确的预测,那么要学的就是如何将问题模式化并做出准确的预测。就从这开始。
然后把这件事儿弄好,好得不要不要的!
在你需要的时候,去阅读、截取、武装理论知识,但仅限于为你的目标服务,仅限于这样做会使你传递出更大价值。
不要去学所有的机器学习
机器学习浩瀚无边啊。
它是计算机的自动学习过程,与人工智能多有交集。
从机器人的深奥学习理论算起,这个领域真的很大。
大得你无法一一收入囊中。
如果你有下面的想法,你已不幸落井——
我得学会某个网页上提到的所有新技术。
我得学会计算机视觉,自然语言处理,语音处理,等。
首先。我得学会所有的所有。
找个小旮旯,集中于此。
进一步缩小范围。
机器学习最有价值的部分是预测性建模。从数据创建模型进行预测。
从这里开始。
接下来,集中在某种与你最相关,或者你最感兴趣的模型。
然后死缠烂打。
也许你选择了某种技术,比如深度学习。也许你选择了某种问题,比如推荐系统。
也许你还没拿定主意,那么就选一个先。学好它。或者基本精通。
然后,转战到另一个领域。
不要在算法上虚度光阴
机器学习确实关乎算法。
好多好多好多算法。
每个算法都是一个复杂的系统
是一个学习的小宇宙,有它自己的生态系统。
在算法的世界里你会迷路。所有人都会。
那些人叫做学术界。
陷阱
如果你有下面的说法,那么你已不幸落井——
我得弄明白它怎么工作的,在我使用它之前。
我得深入理解超参数先。
我调参的时候得解释清楚因果关系。
出路
算法不是结果。它们是得到结果的方法。
实际上,机器学习算法只是一堆商品。换掉它们。试用几十个。拿一些出来调调参数。接着换。一个更好的结果会让你对算法更有感觉,但是要知道什么时候止步。系统化这个过程。设计调参实验,让它们自动执行和分析。
机器学习无外乎算法的正确应用。但是应用机器学习不只是在算法里虚度光阴。集中火力在每个项目要得到的结果,即一系列的预测,或者一个可以得到这些预测的模型。
不要从头开始实现一切
从头开始实现算法,你可以学到很多。
有时候你甚至需要去实现一项技术
因为没有合适的,或者找不到现成的实现方案。
但是,一般来说,你不必如此,你也不该如此。
你的实现可能糟透了。抱歉——
它可能有小错误。
它可能很慢。
它可能太占内存。
它可能处理不好边界情形。
它甚至可能压根儿就错了。
陷阱
如果有以下情形,不幸你已落井——
你在写代码导入CSV文件(到底怎么回事!)
你在写代码做一个标准的算法,比如线性回归
你在写代码做交叉验证或者超参数调节。
出路
停下来!
使用一个通用的,已知是正确的,成千上万的程序猿都在用的库来处理边界情形。
使用一个高度优化的库,哪怕最后一个循环,最后一个字节都已经挤干净,最小限度占用内存。
使用图形化的用户界面,避免不必要的编程。
每次你想要用的时候都实现所有一切,对机器学习菜鸟而言,是一个非常慢的方法。
如果你想学习实现,那么,诚实一点,把它和学习利用应用机器学习来传递价值区分开来。
不要总是换工具
有很多非常伟大的机器学习工具。
实际上,伟大的工具,连同数据和高性能硬件,
是机器学习得以复兴的原因。
但是,当你遇到接踵而至的新工具时
你就掉进流连忘返的坑里了。
陷阱
如果你有如下情形,不幸你已落井——
使用你听说过的新工具。
发现你每周或每月都在学习新的工具或者语言。
学一个库,见新思迁,半途而废。
出路
学习和使用新工具。
但是要有策略。
把新工具整合到解决问题的系统过程里。
如果你选好一个主打平台并坚守不移,你会高效得多。至少坚持到你能擅长或者精通一个。
推荐3个平台:
Weka Workbench
Python Ecosystem
R platform
你的领域内还会有其它的平台和专业工具,坚持到底是爱好者与专业人士的区别。
总结
本文你见识了我所见识到的机器学习菜鸟常犯的5大错误。重要的事再说一遍,它们是:
1. 不要从理论开始
2. 不要去学机器学习的所有东西
3. 不要在算法里虚度光阴
4. 不要从头实现一切
5. 不要总是换工具。
End.