因为毕业论文接触到了现在所谓“高大上”的机器学习,也私下学了近大半年, Marchine Learning。从不懂到接触,从接触到逐渐了解,发现慢慢的喜欢钻研,也突然发现了自己钻研精神,呵呵,很多新的技术看似及其的牛逼,其实静下心来仔细琢磨琢磨,研究研究,发现站在巨人的肩膀上,自己也是有一些去攀登人类计算机科学这座高峰的能力的。
写文章还是改不了扯淡的毛病,总想写一些自己内心的东西,却总也写不出来,写出来的也都是扯淡的东西。唉,这也就是当初为什么一直都是母语老师的重点培养对象,哈哈。在此,也向当年所有的语文老师说一声“老师,您辛苦了!”
又在扯淡。。。
说到机器学习,在这个领域其实我也是没什么发言权的,菜鸟一个而已。只是最近看了一篇文章,觉得很有体会,拿来说说。尊重原创,尊重作者。这是一篇英文原版文章,名字叫做 “ Mistakes Programmers Make when Starting in Machine Learning ”。原文链接 (来自微信朋友圈)
文章大致讲述了在开始学习机器学习的过程中所常犯的几个错误。掌握机器学习技能没有最正确的方法,每个人的学习方法都有不同。为了帮助更快地熟练机器学习技能,文章中着重指出在学习中常见的五个错误:
1. 把机器学习看的基石
机器学习只是众多帮助解决复杂问题的技能之一,因为它是一个在萌芽中的领域,机器学习通常出现在学术期刊论文,和研究生的课本中。这使得大众认为它是高大上,坚无不摧,无所不能。思维需要转变,从高端技术到实用具体处理方法,从精细到“适可而止”。这对于学习其他复杂方法也一样。
2. 写机器学习代码
从写代码开始掌握机器学习使问题变得不必要的复杂,因为你至少需要解决两个问题:第一,怎么用代码实现技术,第二,怎么把这个技术应用于给定的问题。一次解决一个问题会比较容易,平衡机器学习,统计知识和算法库来掌握怎么把技术应用于给定问题。这使得你可以快速发现,实践,调试各种算法,然后选择一两个最合适的算法做精细研究,而不是用大量的时间在科研论文中研究模糊不清的算法。
3. 手动的解决问题
机器学习的应用包括界定问题,准备数据,呈现分析结果,调试算法,测试算法等,都可以自动完成。自动化是现代软件在编译,测试,部署方面的重大发展。用脚本语言来完成数据准备,算法调试,结果呈现,可以更高效,更快捷。记住并重新使用在软件工程中的技能。不能实现自动很多程度上是因为许多程序员都是从书本开始学习机器学习的技能,或者不注重应用的课程。事实上,把机器学习应用自动化对于程序员是个大的机会。
4. 对于普通问题重新发明解决方法
在你自己从零开始实现算法解决问题时,已经有成百上千的人已经解决了类似的问题,发掘他们的经验。 “不要重新发明轮子”。已经有丰富的实现算法的技能和代码了。虽然仍然有很多还停留在书本或论文中,但是你可以去挖掘它。用 google, google books, google scholar 去搜索算法和问题,参与机器学习的网上社区。
5. 忽略数学
你不需要坚实的数学理论来开始使用机器学习技能,但是数学是机器学习最重要的部分。因为它用最有效最清晰明了的方式阐释问题和系统的行为。忽略算法的数学基础会造成很多问题,比如对于技能了解有限,对算法理解不清。比如,很多算法核心都有逐渐更新的优化机制。知道优化机制的特性可以使你有效的调试算法,发掘问题。
综上所述
文章中提到的五个经验就是:
1. 不要机器学习当成基石
2. 不要写机器学习算法的代码
3. 不要手动调试算法,应用算法
4. “不要重新发明轮子”
5. 不要忽略数学。
看完这篇文章,刚开始自己没什么感觉,等再拿来读的时候却发现别有一番感受。
在学习的过程中,可以适当的改变一下方向,站在巨人的肩膀上嘛。也不妨将这样的学习方法和技巧用到其他方面。
写于 2015-11-14 19:21:28
@Galway, Ireland