Hello Machine Learning

‘hello world’似乎像是技术的入场礼,不同的人总在开始的时候用尽一些办法,就是为了看到’hello XXX’这几个字母 闪现在屏幕的那一刹那。现在我也盗用这个仪式,开始聊聊我对于Machine Learning(ML)的理解。 我觉得学东西直观的感觉(intuition)和基于问题的学习很重要啊,尤其是抽象的东西,比如: ML -_-! 所以我会主要通过这样方式谈谈我理解。同样,一些拼写标点错误也请大家见谅,从小考试都是丢三落四,所以老师 都给我起了个外号”准优等”。文笔我也不会很严谨,毕竟哀家才是研究僧,说话不会像公知一样对大家负责。 该啰嗦的就啰嗦到这里了~

总有一些事情是你一看上去就决定要终身相伴的,这可能就是我一看到machine learning的感觉吧。 还记得一年半前,我还是一个ruby on rails程序员,也是个应届生,在一家创业公司做码农。所以对于一切都是充满好奇,却也是很傻很天真。 总爱问别人很幼稚的问题,例如: 你为啥学这个啊?你觉得我学啥对我有帮助啊?等等这些。。 直到我发现一本书,集体智慧编程(Programming Collective Intelligence),我觉得我的下一步应该是学这样子的知识! 看起来很有用,而且也很高大上的样子。而且,恰好当时公司一个技术大牛也开始研究这个领域。我就抱大腿似的 准备跟他一起搞。后来,经过一阵小小研究后,我们竟然真的做成了一些项目,那会真是兴奋地不行不行的。后面会具体介绍。

其实我相信对于初学者,每个人都会觉得’我擦,这东西太难了吧!怎么需要学那么多东西。而且,它需要说得过去的数学功底。’ 是的,这是事实,毋庸置疑,要不岂不是谁都可以研究它了么。但是说白了,机器学习算法(algorithm)或者模型(model)本质来说就是一个 映射(mapping)而已,你所要的不就是将你的输入(input)得到个输出(output)么,而且那些复杂的算法往往开始的起因都是很简单的, 很多复杂的地方往往都是后期人们缝缝补补、增增减减的结果。这点,吴军老师在数学之美早有论述,我也对此坚信不疑,对了,这是一本好书。 但是,我在强调一下,但是,一些基础的先验知识很重要。已机器学习(Tom Mitchell)为例,概念学习那张我至少看了4遍, 还是没懂它在讲啥,什么归纳偏置(inductive bias),假设空间,目标函数都不知道整这些概念干嘛使。 所以嘞,我的建议就是,弄了半天还不会的就搁一边,他会再出现的,到时候你肯定会如梦方醒的,因为慢慢积累这些概念以后, 会发现他们很多都是相通的,去弄懂某个孤立点的难度肯定比掌握点和点联系、区别困难很多。

最后我想说说我认为的学习机器学习的技巧吧。1 会读英文。不然,就只能看机器学习(Tom Mitchell)了吧。 可能也有别的选择,但我去年去清华蹭课他们用的就是这个教材,要是不靠老师讲解而是自学,蛮难的。 有些人很容易有个误会,就是会英文这门槛太高了,其实啊,专业词语就那么多,而且读英文的难度远远小于说和写, 开始慢慢来,之后就会很舒服了。2 直观理解。很多公式用一个图就解释的明明白白的。3 结合实践。看了不一定会明白, 明白了不一定理解,理解了不一定会做,做的话可以去(Kaggle.com)练练手。4 讲给别人。 我曾经问过我导师,我什么时候才能像你一样对于ML侃侃而谈,他笑着对我说:”等你可以把他讲给别人,让别人也理解,对于 他们的问题你可以解答。”这,就是为什么我开始写这个博客吧,而且,这是捷径。 5 基础知识,尽管数学面积很大,但至少梯度下降,贝叶斯这些必备知识要完全掌握。