那就究竟什么是学习呢?诺贝尔经济学奖和图灵奖双料得主、卡耐基梅隆大学的赫伯特 · 西蒙 (Herbert Simon) 教授是这样定义的:“学习是系统通过经验提升性能的过程”。可以看到,学习是一个过程,并且这里有3个关键词,即经验、提升和性能。我们先要明确,学习的目标是提升某个具体性能,例如我们学习开车时,希望能提升自己的车技,这可以通过一些驾驶的测试来获得具体的指标分数。我们还要明确,学习是基于经验的,也就是基于我们经历过的事情,如我们在驾驶过程中遇到的情况以及当时的具体动作和结果,这其实就是数据。因此,如果用较为计算机的语言来描述,学习就是系统基于数据来提升既定指标分数的过程。
有了上述对于学习是怎样一个过程的理解,现在我们就比较好定义机器学习了。根据机器学习泰斗、卡耐基梅隆大学的汤姆 ·米切尔 (Tom Mitchell) 教授的定义,机器学习是一门研究算法的学科,这些算法能够通过非显式编程 (non-explicit programming) 的形式,利用经验数据来提升某个任务的性能指标。 一组学习任务可以由三元组〈任务,指标,数据〉来明确定义。
如果用较为数学的语言来描述机器学习,则对应一个优化问题。针对某一预测任务,其数 据集为D, 对于一个机器学习预测模型f, 预测任务的性能指标可以通过一个函数 T(D,f) 来表 示,那么机器学习的过程则是在一个给定的模型空间F 中,寻找可以最大化性能指标的预测 模型f:
这里的ML(D) 表示机器学习可以被看成是一个输入数据集、输出解决任务算法的算法。
这里说的非显式编程具有哪些特性呢?一般人工智能技术的实现,都是需要人先充分了解 任务和解决方法,并根据具体的解决思路,编写程序来完成该任务。例如地图的导航任务,系 统需要先将城市的路网建模成一个图结构,然后针对具体起点到终点的任务,寻找最短路径, 如使用A* 搜索算法。因此,显式编程需要开发者首先自己可以完成该智能任务,才能通过实 现对应的逻辑来使机器完成它,相当于要事先知道f, 然后直接实现它。这其实大大抬高了人 工智能技术的门槛,它需要有人能解决任务并通过程序来实现解决方法。而有的智能任务是很 难通过这样的方式来解决的,如人脸识别、语音识别这样的感知模式识别任务,其实我们自己 都不清楚人是如何精准识别平时碰到的每个人的脸的,也就更加无法编写程序来直接实现这个 逻辑;亦或是如深海无人艇航行、无人机飞行等人类自己无法完成的任务,自然也无法通过直 接编程来实现。
具体地,在上述优化范式中,我们在模型空间F 中寻找最优模型f* 的过程可以是一个持 续迭代的形式,即
而这个寻找最优模型f 的过程就是机器学习。机器学习的算法对应着从f 迭代到 的程序。
华盛顿大学的佩德罗 · 多明戈斯 (Pedro Domingos) 教授将机器学习比喻成“终极算法”。 因为有了机器学习技术,只需要拥有任务的数据,就可以得到解决任务的算法。这样,程序员 就可以“往后站一步”,从直接编写各类任务具体的算法程序,转为编写机器学习算法程序, 然后在不同任务中,基于任务自身的数据,学习出一个解决该任务的算法(即机器学习模型), 如图1-1所示。
机器学习入门书
动手学机器学习
本书包含4个部分。第一部分为机器学习基础,主要讲解机器学习的基本概念以及两个最 基础的机器学习算法,即KNN 和线性回归,并基于这两个算法讨论机器学习的基本思想和实 验原则。这一部分涵盖了机器学习最基础、最主要的原理和实践内容,完成此部分学习后就能 在大部分机器学习实践场景中上手解决问题。第二部分为参数化模型,主要讨论监督学习任务 的参数化模型,包括线性模型、双线性模型和神经网络。这类方法主要基于数据的损失函数对 模型参数求梯度,进而更新模型,在代码实现方面具有共通性。第三部分为非参数化模型,主 要关注监督学习的非参数化模型,包括支持向量机、树模型和梯度提升树等。把非参数化模型 单独作为一个部分来讨论,能更好地帮助读者从原理和代码方面体会参数化模型和非参数化模型之间的区别和优劣。第四部分为无监督模型,涉及聚类、 PCA 降维、概率图模型、 EM 算法 和自编码器,旨在从不同任务、不同技术的角度讨论无监督学习,让读者体会无监督学习和监 督学习之间的区别。本书的4个部分皆为机器学习的主干知识,希望系统掌握机器学习基本知 识的读者都应该学习这些内容。