什么是机器学习?

写在前面:本文只面向完全不懂机器学习的小白,并不面向一些机器学习资深老专家(老司机)。若专(si)家(ji)们发现谬误之处欢迎基于批评与修正。

AlphaGo的胜利,无人驾驶的成功,模式识别的突破性进展,人工智能的的飞速发展一次又一次地挑动着我们的神经。作为人工智能的核心,机器学习也在人工智能的大步发展中备受瞩目,光辉无限。

  • 什么是机器学习(machine learning)?

机器学习,真可谓是当前计算机与信息科学的一个香饽饽,业内几乎无人不知、无人不晓。可是一些刚刚踏入信息领域的小白,别人一说起机器学习,他还有可能以为这是跟“机器人”相关的技术?实际上,虽然这里面有一些误解,但是机器学习跟机器人,是有一定关联的(比如机器人模仿生物步态时往往会使用马尔可夫决策过程,属于增强学习的内容),只是,机器学习,它的作用范围并不仅仅局限于机器人领域了。可以看看官方的标准定义:把经验E、任务T和性能度量P列在一张表的顶部,并且列出带有更少歧义的复杂问题。它可以作为一个设计工具来帮助我们清楚的思考收集什么样的数据(E),需要做出什么样的决策(T),以及如何评价结果(P)。(我个人其实不是很喜欢这些非常抽象化的词眼,但在学术上是非常必要的,否则你说一套,我说一套,大家都花时间吵架去了。)这里所说的“机器”,其实更多是指计算机。说起学习(learning),大部分人下意识地想到,学习是一种人类行为。更具体地,对于大学生们来说,学习,是他们大学四年里最重要的任务(没有之一,否则挂科就不好玩了)。那么,把“学习”放在“机器”后面,这样的词组就令人诧异了。的确是如此的,机器学习的一个重要目的,就是要让计算机具有一定的学习能力。至少通俗上可以这样理解。下面就更具体地切入这个话题。

  • 机器学习的前世今生

机器学习的“前身”,并不像现在那样,满眼都是数学公式,或者可以称它为“规则学习”。这是上个世纪50年代的事情,它更多的是生物学与神经心理学的东西。初中生物课本中有一个例子,相信大家都很熟悉:巴甫洛夫的条件反射实验:每次给狗喂食前都先响铃,时间一长,狗就会将铃声和食物联系起来。以后如果响铃但是不给食物,狗也会流口水。这就是很典型的规则学习。就跟你刚上小学时一样,一开始你不知道打铃是什么意思,但是老师会跟你说,打这个铃就是上课了,打那个铃就是下课了。一开始你可能还很不适应,上课铃响了,你仍然在外面玩耍甚至不记得要上课。但是久而久之,你会把“打铃”和“上课”联系起来,因为上课迟到是要罚站的!这个时候你就算是彻底学习到“打铃”这种规则的意义了。把这个过程延伸到计算机,就擦出了激烈的火花。如何使计算机具有类似的“行为”?这是机器学习先驱们思考的一个重要问题。他们认为,如果计算机具有一些生物行为,就可以认为这台计算机是智能的。感兴趣的读者可以去参考图灵机。
后来到了60年代,先驱们又提出了,让计算机可以具有人类学习概念和逻辑归纳的能力,这个时候大概可以称为“概念学习”。它比“规则学习”是更进一步的,或者说,更抽象了。规则学习可以说是面向所有生物的,但不是所有生物都具有概念抽象和逻辑归纳的能力,很多生物只会对一些具体的情况作出具体的反应,这是广义的学习,但是在概念上的抽象,它们就先天不足了。但人类却在这方面出类拔萃。比如说,你见到一个圆圆的、红彤彤的,上方凹陷的物体,你会毫不思索地称它为“苹果”(可能我对苹果的描述不准确,还是发个图吧 这里写图片描述)。其实在你小时候没见过这个东西之前,你跟其他生物一样,对这个东西是完全没有概念的。想一想,你现在为什么能把这种物体毫不犹豫地称作苹果?你是从什么时候开始认知到这个物体的?是不是可以追溯到你的童年回忆?有趣了吧!但是,其他动物,他们脑子里是没有“苹果”这个概念的,它们看到这个物体,可能第一反应就是:想去吃,或者什么的,总之就是一些具体的反应。但是你呢,你脑海里会浮现出“苹果”这个词语,这就相当于,你已经把这个物体用一个抽象的符号描述出来了,也就是你对这类物体作出了一个概念上的归纳。所以,你以后见到类似的物体,你都会称它为“苹果”。中国人如此,其他母语为英语的人就会称为“apple”,日本人会称为“りんご”。这些只是语言上的不同,在概念学习上来说,它们都是对一类具体事物的符号化抽象,其实语言就是不同群体的人类相互约定成俗的符号而已,并没有本质的区别。好吧,浅尝辄止,再深入就是哲学问题了。总之,60年代的进步就在于此。可是也是这个时候,整个人工智能领域都遇到了瓶颈,当时的计算机的内存和计算速度是跟不上人类这种学习过程的,这个问题即使放到现在仍然是一个很受重视的问题。从这里也给了我们一个启示:软件和硬件从来都不是相互独立的,而是相辅相成。软件上的需求会加快硬件的升级,硬件的升级才会进一步推动软件理论的发展。这就跟人有钱和没钱是一个道理,没钱的时候你就想着买房、买车、成为人生赢家、实现宏伟蓝图?洗洗睡吧。
现代机器学习的成型,得益于神经网络的出现和数理统计学的全面介入(也就是说,现在你可以看到一大堆数学公式了)。1980年,在美国的卡内基梅隆大学(CMU)召开了第一届机器学习国际研讨会,标志着机器学习研究已在全世界兴起。此后,机器归纳学习进入应用。经过一些挫折后,多层感知器(MLP)由伟博斯在1981年的神经网络反向传播(BP)算法中具体提出。当然BP仍然是今天神经网络架构的关键因素。此外,机器学习领域中一个最重要的突破,就是支持向量机(support vector machines, SVM )的出现,由瓦普尼克和科尔特斯在大量理论和实证的条件于1995年提出。从此,机器学习可以划分为两派:感知学习和统计学习。只是我个人的一些理解,实际上官方不一定是这样划的。其实神经网络里头也有一些统计特征的,支持向量机最初是基于感知机提出的,但它可以认为是统计学全面介入机器学习的一个标志。

  • 机器学习的“世界观”:数据和“经验主义者”

在机器学习的眼里,没有什么事物是不能用数据来描述的。以往我们没有那么多的数据时,我们往往需要“人工地”去挖掘事物内部的模式。比如说,我有两张图片,一张内容是青苹果,另一张内容是香蕉,你怎么让计算机去识别他们?这个时候我们就要手动挖掘两者之间的特征信息了,最明显不过就是:青苹果是绿的,香蕉是黄的。根据图像成像理论,彩色图像都是分为RGB(红绿蓝)三个通道来表征的,只要比较两张图片的RGB各个通道的像素值,不就能区分苹果和香蕉了?好像是解决了这个问题。但是,万一苹果发黄了呢,香蕉是没熟的还是绿的呢?没事,我还可以比较纹理,它们的形状总该不一样了吧?好的,以上所有分析思维都是基于图像处理理论的。那么现在,我有一大堆苹果和香蕉的图片,少说也有成千上万。样本里苹果有红的,有绿的,有黄的,甚至有变异成香蕉形状的;同样地,香蕉有黄的,有绿的,甚至也有变异成圆状的。这个时候,你要对每一张图片都进行图像处理然后识别?也许可行,耗时不说,问题是你怎么分辨出各种不同颜色形状的香蕉或苹果?我觉得这个问题足够你发一篇论文了。这个时候,必须使出机器学习这把利器了。前文已经说过,在机器学习眼里,没有什么事物是不能用数据来描述的。对于机器学习来说,无论是苹果或者香蕉,或者是你能想到的所有水果的图片,它们都是一些数据。而机器学习要做的,就是根据这些已有的数据,自动地从这些数据中挖掘出一个模式,这个提取模式的过程,术语上可以称之为“训练”。训练的结果是得到一个数学模型,有了数学模型,所有事情就好办了。数学模型其实就是一个函数表达式,给定输入就会有特定的输出。在这个例子,就是输入一张图片,模型会输出“苹果”或者“香蕉”。这个过程术语上可以称为“预测”或者“决策”,这要看你的应用场景更侧重于什么了。这也是你用人眼看图片的过程是一样的,你看到一张图片,你的大脑就会经过一系列的复杂计算,最后你的脑海里会生成“苹果”或者“香蕉”这些符号。至于大脑的决策过程,这个也能发一篇长篇大论了。简单来说,其实你也是经历了一个“训练过程”,小时候你的爸爸妈妈会教你,这个是苹果,那个是香蕉,认图识字的书没少看吧!经过长时间给你灌输这两个东西,你的脑海里就生成了对苹果和香蕉的概念,也就是相当于生成了一个数学模型,此后大脑只要根据这个“数学模型”,就可以判断你看到的是苹果还是香蕉了。其实你可以发现,这样的决策过程,是依赖于你以往对一类事物的认知经验的,如果你以前不曾接触过这类事物,你的大脑并不知道如何决策,机器学习也是如此。就跟英国人第一次登上澳大利亚发现了袋鼠一样,他们以往没见过这种动物,然后土著随便一说,他们就把这种动物称为“kangaroo”。此后才会有了他们看到袋鼠就会想到“kangaroo”决策过程。从这个方面说,机器学习是一个“经验主义者”,既然有经验就肯定有决策失误的可能。而机器学习需要解决的问题就是“经验风险最小化”,这就是学习理论的内容了,意思很明显,就是要使我的决策失误程度最小。别看这个问题好像很简单,其实又足以可以让你写一篇论文了,感兴趣可以深入学习。

  • 放眼未来的机器学习

当前机器学习大放光芒的两个发展方向,无疑是深度学习和增强学习。由于AlphaGo的胜利,近年两者交融的趋势非常明显。深度学习则是感知学习的延伸,广泛应用于计算机视觉、语言识别、自然语言处理,增强学习则是基于马尔可夫决策过程的一些随机过程理论,更多应用于智能机器人、自动控制、自动决策等。
如今,机器学习的应用已遍及人工智能的各个分支,但也许我们不曾想到的事机器学习乃至人工智能的起源,是对人本身的意识、自我、心灵等哲学问题的探索。而在发展的过程中,更是融合了统计学、神经科学、信息论、控制论、计算复杂性理论等学科的知识。

  • 关于学习建议

如果有兴趣往机器学习深入发展的话,一些数学基础是必不可少的哦!比如,矩阵论(本科阶段学好线性代数就行了)、概率论、多元统计分析、算法设计基础等;当你已经在机器学习这个大坑走得很深时,可学习:凸优化理论、随机过程论、信息论、数值分析与计算数学甚至运筹学。学习的时候遇到困难不要怕,毕竟更大的困难在后头……无意打击你,要是这么好搞的话,世界上就没什么东西是值钱的了。总之一定要注重理论基础,结合实践训练,自己尝试写一些算法,你会获得成就感的!

你可能感兴趣的:(机器学习)