0x00
公司里有个算法部门,人很少,但都是精英。机缘巧合,算法部门的大神推荐了我Cousera上面的机器学习课程,然后就开始了我的入门经历
0x01
先学的是吴恩达老师的课程(毕竟Cousera的创始人之一),这门课让我对机器学习有了一个基本的概念。
如果我们有很多房屋信息和他的房价,那我们是否可以找出规律,来预测其他房子的房价呢?这个问题交给一个人类去解决,那就是获取信息归纳总结的过程,而交给计算机,就是机器学习。
然后从这个问题出发,介绍了线性回归算法,通过画图让我学到了如何用梯度下降(gradient descent)一步一步逼近正确答案,来找到一个可以描述房价规律的函数。
再加上之后的逻辑回归和SVM等算法之后,让我内心形成一个概念:机器学习就是先找到问题的代价函数(cost function),然后通过各种方法来寻求他的最小值(或者极小值)。这不就是一个凸优化的问题嘛!感觉学会了这三拳两脚,就已经可以去预测彩票了。
最终我获得的技能是,可以通过一个数据集,来训练出一个可以有预测能力的系统。
0x02
算法部大神:“台湾国立大学林田轩老师的机器学习课程也很不错,可以看看。”然后这门课甚至改变了我的世界观。
课程首先真正抽象了整个机器学习的流程。之前我以为机器学习只是面对具体问题,套上合适的算法,就叫机器学习。其实呢,所有的机器学习算法都在做同样的事情,如下图:
机器学习的流程
也就是说,训练的过程,就是从一个假设集(hypothesis set)里面挑选出最合适的假设。
只会使用算法的我,一开始并没有假设集的概念,只是觉得最终的假设g是一步一步计算出来的。然而实际上我们在一开始决定g的形式的时候(比如线性,比如sign函数),就已经将他限定在一个集合之中,虽然看上去这个集合是无限大的。
然后课程的下一个问题竟然是,如何证明这一整个流程是可行的(如何证明我们可以从假设集中找到近似于f的g)!
我作为非科班程序员工作了一段时间之后,产生了这样的思维模式:解决问题的过程就是拿各种库和工具来直接调用,构建解决方案。为什么可以解决问题?这不是自然而然的嘛!这还需要证明?
那么问题来了,为什么会存在g近似于f?之后的课程就开始了一整个证明的过程,从二元分类问题出发,用霍夫丁不等式作为工具,一步一步推导出了结果。讲真,从头到尾听完之后,我觉得整个世界都是可以用数学来描述,这个世界是数学的。这门课程的这一部分证明过程改变了我对很多问题的看法,甚至想用数学模型来描述身边遇到的各种问题。
0x03
我并没有觉得林老师的课程就比吴老师的高级。虽然前者为我构建了理论上的蓝图,但是课程的内容其实和实际工程以及实际问题联系的不算太多。后者是深入浅出地介绍了如何应用机器学习算法,来解决实际问题。这两门课程是相互补完的,都学完了之后我才觉得我算是对机器学习有了一知半解。
他们都值得一学。
网友评论