1.1 引言
什么是机器学习?从广义上来说,机器学习(Machine Learning)是计算机程序随着经验积累自动提高性能或系统自我改进的过程。以一个更形式化的定义来说,对于某类任务T和性能标准P,如果一个计算机程序在T上以P衡量性能,随着经验E而自我完善,就称这个计算机程序从经验E中学习。例如,对于手写识别学习的问题,任务T是识别和分类图像中的手写文字,性能标准P是分类的正确率,训练经验E是已知分类的手写文字数据库。这就是说,为了很好地定义一个计算机学习问题,学习问题的标准描述包括了3个基本的特征,即任务的种类、衡量任务提高的标准及经验的来源。简而言之,学习就是通过经验提高性能的某类程序。
机器学习正是致力于研究如何通过计算的手段及利用经验来改善系统自身性能的一门学科。为了在计算机上解决问题,通常需要一定的算法。这些对于特定任务设计的算法需要一定的输入,依据特定的指令序列对输入进行变换,得到输出。例如,我们可以设计一种排序算法,输入一个数字集合,输出这个数字集合的一个有序列表。然而,对于现实中的很多任务,我们并没有确定的算法,例如为每天收取的邮件进行分类,区分其是垃圾邮件还是正常邮件。尽管我们知道输入是邮件文档,输出为是否是垃圾邮件,然而并不知道应该按照怎样的规则将这种输入变换成输出。
事实正是如此,机器学习所面临的绝大多数问题都是这种没有确定算法的学习问题。对于这一类学习任务,我们希望计算机自动地为学习任务提取相应的算法。换言之,在排序的例子中,我们不需要学习如何将数字集合进行排序,因为已经有了排序的算法。然而在垃圾邮件的例子中,我们确实没有既定的算法,这需要计算机从过去的经验中进行学习,自动地提取出能够分类邮件的学习算法。
在计算机系统中,经验通常以数据的形式存在。为了能够自动地从经验中提取出学习算法,需要获得过去大量的邮件实例来作为数据。接下来要做的事情就是从实例数据中学习出垃圾邮件的模型,以此作为判断的依据。因此,机器学习所研究的主要内容,是如何在计算机上从数据中产生模型的算法,即学习算法。有了学习算法,我们可将经验以数据的形式提供给计算机,计算机就能基于这些数据产生相应的模型。继而在面对新的情况时,学习到的模型能够提供相应的判断,比如计算机能够正确分类一封新邮件是否是垃圾邮件。从这个意义上来说,机器学习是研究学习算法的学问,机器学习的过程是从大量数据中自动地寻找有用模型的过程。