本章为整个系列的引言部分。将包含以下内容:
1.机器学习的动机
2.机器学习的应用场景
3.机器学习的定义
但是,这就是我们学习的真正目的吗?我们在学校里以为最没有用处的课程,却成了工作中最有用的工具;我们不得不在年老以后回去一遍又一遍的回想曾经排斥的课程内容。这是学生的之错还是教育之殇?
"老实说,数学工具对于工科生和对于理科生来说,意义是完全不同的。工科生只要理解了,会用,会查,就足够了。但是很多高校却将这些重要的数学课程教给数学系的老师去教。这样就出现一个问题,数学老师讲得天花乱坠,又是推理又是证明,但是学生心里就只有一句话:学这货到底干嘛用的?
缺少了目标的教育是彻底的失败。
在开始学习一门数学工具的时候,学生完全不知道这个工具的作用,现实涵义。而教材上有只有晦涩难懂,定语就二十几个字的概念以及看了就眼晕的公式。能学出兴趣来就怪了!
好在我很幸运,遇到了大连海事大学的吴楠老师。他的课全程来看是两条线索,一条从上而下,一条从下而上。先将本门课程的意义,然后指出这门课程中会遇到哪样的问题,让学生知道自己学习的某种知识在现实中扮演的角色。然后再从基础讲起,梳理知识树,直到延伸到另一条线索中提出的问题,完美的衔接在一起!"
鸡汤到此,没喝够的同学们请回去再喝一遍。
我为什么长篇大论讲解一个看似与机器学习关系不是很大的故事?我只是不想再让看到这篇博客的同学们再走同样曲折的道路。一个理论,如果你不能明确它的研究动机和应用场景,那么它不过是一个枯燥而没有用处的知识。所以,对于那些有印象但不清楚为什么要使用机器学习算法、以及何时才合适使用机器学习算法的看官们,请务必仔细阅读这一部分的内容,虽然我没有说三遍,但,这的确很重要!!在错误的场合使用机器学习,不但对解决问题毫无帮助,还会使我们变成哲学家--把简单的问题搞复杂。(博主自己也是小菜鸟,理解如果有误还望不吝指出)。
在过去的几十年,已经有很多计算机程序帮助人们解决了大量的实际问题。然而,人们注意到实际的情况中存在这样一类问题:我们无法针对问题本身,将程序逻辑直接编写出来。
例如,我们希望有一个程序可以识别手写的字母或者数字,这是很难用直接的逻辑实现的。因为手写的字体千变万化,我们费劲千辛万苦编写逻辑和程序,告诉机器“茴”字有三万种写法,回头就来了一个不按套路出牌的狂草玩家--他带来了茴字的第三万零一种写法,然后,程序员:我有一句***不知当讲不当讲...
总结下来,对于这类输入数据千变万化、无法用固定逻辑来适配的问题,机器学习无疑是最好的解决方案。在机器学习算法中,我们不是针对问题本身去编程,而是教给机器一个自己从样本中学习规律的方法(就是传说中的训练-training),学习完成之后,无论接下来待处理的数据多么复杂,算法都会根据自己学习的知识推断最佳结果。所以对机器学习来说,样本是很重要的输入。
补充一点关于应用场景的讨论:对于一些逻辑不复杂的算法,机器学习不一定能强行使用。曾经和导师在非正式场合讨论过,机器学习在通信领域的网络交换技术上是否可以使用,导师给的结论就是因为网络流量数据还没有复杂到需要用机器学习来处理的地步,所以暂时还没有太多这类研究。这就好比,我们需要用机器学习实现排序算法吗啊?显然不需要,因为排序问题中的规则很固定,设计专门的算法解决即可。
前面两章把机器学习一通描述,实际上它一点也不神秘。个人理解,它只不过是一些数学算法在编程中的应用和优化而已。
MachineLearning:Fieldsofstudythatgivescomputerstheabilitytolearningwithoutbeingexplictlyprogrammed.--ArthurSamuel(1959)
上面这段引用是机器学习一个非正式但非常直观的定义:在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域。
MachineLearning:Well-posedLearningProblem:AcomputerprogramissaidtolearnfromexperienceEwithrespecttosometaskTandsomeperformancemeasureP,ifitsperformanceonT,asmeasuredbyP,improveswithexperienceE.--TomMitchell(1998)
接下来是正式的--一个合理的学习问题应这样定义:对于一个计算机程序来说,给它一个任务T和一个性能测试方法P,如果在经验E的影响下,P对T的测量结果得到了改进,那么就说该程序从E中学习。