1.1 什么是机器学习

在开始我们的机器学习大冒险之前,应该先明白什么是机器学习。即使两年前,很多人听到“机器学习”这个词的第一反应恐怕也是一脸错愕,可能脑海中浮现的是一张泛着冷光的钢铁人脸,或者科幻电影里的某一个场景。但现在完全不同了,网络上铺天盖地地在谈机器学习,货架上摆满了相关的书籍,学者、名人轮番发表对相关话题的看法,连之前一些其他领域的公众号都开始提醒你“小心工作不要被机器抢了去”。只是大家都没有直面那个问题:什么是机器学习?

想回答这个问题,要从机器学习、人工智能和深度学习三者的关系说起。机器学习、人工智能和深度学习都是最近很火的词,有的人用截然不同的态度评价它们,好像三者并无联系,有的人却认为它们不过是新瓶装旧酒,都是商家宣传推广的噱头。

这些看法未免有些片面,机器学习、人工智能和深度学习的目标都是让算法模拟“智能”,但层次范围不同。用北京市的环线来形容三者的关系实在最形象不过了(见图1-1):人工智能(Artificial Intelligence)涵盖范围最广,三环以内都可以叫人工智能,它关注的问题和方法也最杂,包括知识推理、逻辑规划以及机器人等方面。机器学习(Machine Learning)住在二环,是人工智能的核心区域,也是当前发展最迅猛的一部分,子算法流派枝繁叶茂,但思想比较统一,本书就是对机器学习“查户口”。至于当下“网红”——深度学习(Deep Learning),其实原本是从机器学习的神经网络子算法分支发展出来的一系列成果,知识体系一脉相承,只不过近年大出风头,干脆重新起了个名字“单飞”了,以后有机会再详细介绍。

图1-1 人工智能、机器学习和深度学习三者是包含关系

既然同宗同源,基本原理自然也是大同小异。不过机器学习这几年实在太热,人们担心出现机器代替人类而带来失业风险、机器过于智能以致人类无法控制等问题,这在客观上确实给人们理解机器学习带来一定困难——我们面对的到底是一门新的技术,还是一类新的物种?

其实,虽然机器学习是在这几年才成为热议话题,但其背后的知识和技术体系绝不是这几年才横空出世。今天我们所使用的机器学习知识,都是经年累月的研究成果。很多在今天大放光彩的机器学习算法,甚至在20世纪50年代就已经被提出了,只不过近几年机器性能突飞猛进,这些算法有了强力硬件的支持,才得以像猛虎出柙一般取得瞩目的成绩。至于作为这些算法背后支撑的数学知识体系,那就更久远了。

那么机器学习到底是什么呢?没有什么特别的,形象地说,就是一个“苦命”的外包程序员。以前我们写程序时,先要知道输入什么数据、输出什么数据,然后设计功能函数,最后一行一行敲代码来实现。现在有了机器学习,我们写程序就简便多了,即把输入输出数据一股脑儿全扔过去,这位外包程序员二话不说就吭哧吭哧把后面的活全干了。我们给这个过程起了一个好听的名字——“机器学习”。