1.2 机器学习的基本框架
考虑到我们希望用机器学习来代替人学习知识,因此,在研究机器学习以前,先回顾一下人类如何学习知识是有益的。对于人来说,要完成一个具体的学习任务,需要学习材料、学习方法以及学习效果评估方法。如学习英语,需要英语课本、英语磁带或者录音等学习材料,明确学习方法是背诵和练习,告知学习效果评估方法是英语评测考试。检测一个人英语学得好不好,就看其利用学习方法从学习材料得到的英语知识是否能通过评测考试。机器学习要完成一个学习任务,也需要解决这三方面的问题,并通过预定的测试。
对应于人类使用的学习材料,机器学习完成一个学习任务需要的学习材料,一般用描述对象的数据集合来表示,有时也用经验来表示。对应于人类完成学习任务的学习方法,机器学习完成一个学习任务需要的学习方法,一般用学习算法来表示。对应于人类完成一个学习任务的学习效果现场评估方法(如老师需要时时观察课堂气氛和学生的注意力情况),机器学习完成一个学习任务也需要对学习效果进行即时评估,一般用学习判据来表示。对于机器学习来说,用来描述数据对象的数据集合对最终学习任务的完成状况有重要影响,用来指导学习算法设计的学习判据有时也用来评估学习算法的效果,但一般机器学习算法性能的标准评估会不同于学习判据,正如人学习的学习效果即时评估方式与最终的评估方式一般也不同。对于机器学习来说,通常也会有特定的测试指标,如正确率,学习速度等。
可以用一个具体的机器学习任务来说明。给定一个手写体数字字符数据集合,希望机器能够通过这些给定的手写体数字字符,学到正确识别手写数字字符的知识。显然,学习材料是手写体数字字符数据集,学习算法是字符识别算法,学习判据可以是识别正确率,也可以是其他有助于提高识别正确率的指标。
数据集合、学习判据、学习算法对于任何学习任务都是需要讨论的对象。数据集合的不同表示,影响学习判据与学习算法的设计。学习判据与学习算法的设计密切相关,下面分别讨论。
1.2.1 数据集合与对象特性表示
对于一个学习任务来说,我们希望学到特定对象集合的特定知识。无论何种学习任务,学到的知识通常是与这个世界上的对象相关。通过学到的知识,可以对这个世界上的对象有更好的描述,甚至可以预测其具有某种性质、关系或者行为。为此,学习算法需要这些对象的特性信息,这些信息可以客观观测,即关于特定对象的特性信息集合,该集合一般称为对象特性表示,是学习任务作为学习材料的数据集合的组成部分。理论上,用来描述对象的数据集合的表示包括对象特性输入表示、对象特性输出表示。
显然,对象特性输入表示是我们能够得到的对象的观测描述,对象特性输出表示是我们学习得到的对象的特性描述。需要指出的是,对象的特性输入表示或者说对象的输入特征一定要与学习任务相关。根据丑小鸭定理(Ugly Duckling Theorem),不存在独立于问题而普遍适用的特征表示,特征的有效与否是问题依赖的。丑小鸭定理是由Satosi Watanabe于1969年提出的,其内容可表述为“如果选定的特征不合理,那么世界上所有事物之间的相似程度都一样,丑小鸭与白天鹅之间的区别和两只白天鹅之间的区别一样大”。该定理表明在没有给定任何假设的情况下,不存在普适的特征表示;相似性的度量是特征依赖的,是主观的、有偏置的,不存在客观的相似性度量标准。因此,对于任何机器学习任务来说,得到与学习任务匹配的特征表示是学习任务成功的首要条件。对于机器学习来说,一般假设对象特征已经给定,特别是对象特性输入表示。
对于对象特性输入表示,通常有三种表示方式。一种是向量表示,对于每个对象,可以相对独立地观察其特有的一些特征。这些特征组成该对象的一个描述,并代表该对象。第二种表示是网络表示,对于每个对象,由其与其他对象的关系来描述,简单说来,观察得到的是对象之间的彼此关系。第三种是混合表示,对于每个对象,其向量表示和网络表示同时存在。
不论对于人还是机器,能够提供学习或者训练的对象总是有限的。不妨假设有N个对象,对象集合为O={o1,o2,…,oN},其中ok表示第k个对象。其对应的对象特性输入表示用X={x1,x2,…,xN}来表示,其中xk表示对象ok的特性输入表示。当每个对象有向量表示时,xk可以表示为xk=[x1k,x2k,…,xpk]T。因此,对象特性输入表示X可以用矩阵[xτk]p×N来表示,其中p表示对象输入特征的维数,xτk表示ok的第τ个输入特征值,这些特征值可以是名词性属性值,也可以是连续性属性值。
如果对象特性输入表示X存在网络表示,即X可以用矩阵来表示,其中表示对象ok与对象ol的网络关系。如果是相似性关系,则对象特性输入表示X为相似性矩阵S(X)=[skl]N×N,其中skl表示对象ok与对象ol的相似性。通常,skl越大表明对象ok与对象ol的相似性越大。因此,对象ok可以由行向量[sk1,sk2,…,skN]表示。如果是相异性关系,则对象特性输入表示X为相异性矩阵D(X)=[Dkl]N×N,其中Dkl表示对象ok与对象o1的相异性。类似的,Dkl越大表明对象ok与对象ol的相异性越大。因此,对象ok可以由行向量[Dk1,Dk2,…,DkN]表示。如果是相邻关系,对象特性输入表示X为邻接性矩阵A(X)=[akl]N×N,其中akl表示对象ok与对象ol是否相邻,通常其取值为0或者1。
对应的对象特性输出表示用Y={y1,y2,…,yN}来表示,其中yk表示对象ok的特性输出表示。具体的表示形式由学习算法决定,通常是对象特性输出表示Y可以用矩阵[yτk]d×N来表示,其中d表示对象输出特征的维数,yτk表示ok的第τ个输出特征值,这些特征值通常是连续性属性值。
显然,除去对象特性输入、输出表示,数据集合还有其他部分,这些部分的表示与知识表示有关,通常依赖于知识表示。知识表示不同,学习算法的数据集合输入输出表示也会不同。一个容易想到的公开问题是,适合于机器学习的统一知识表示是否存在?如果存在,是何形式?现今的机器学习方法一般是针对具体的学习任务,设定具体的知识表示。因此,本章先不讨论学习算法的输入输出统一表示,这个问题留待第2章讨论。
1.2.2 学习判据
完成一个学习任务,需要一个判据作为选择学习到的知识好坏的评价标准。理论上,符合一个学习任务的具体化知识可以有很多。通常,如何从中选出最好的具体化知识表示是一个NP难问题。因此,需要限定符合一个特定学习任务的具体化知识范围,适当减小知识假设空间的大小,减少学习算法的搜索空间。为了从限定的假设空间选择最优的知识表示,需要根据不同的学习要求来设定学习判据对搜索空间各个元素的不同分值。判据设定的准则有很多,理论上与学习任务相关,本书将在以后的章节中进行讨论。需要指出的是,有时学习判据也被称为目标函数。在本书中,对于这两个术语不再特意区别。
1.2.3 学习算法
在学习判据给出了从知识表示空间搜索最优知识表示的打分函数之后,还需要设计好的优化方法,以便找出对应于打分函数达到最优的知识表示。此时,机器学习问题通常归结为一个最优化问题。选择最优化方法对有效完成学习任务很关键。目前,最优化理论在机器学习问题中已经变得越来越重要。典型的最优化算法有梯度下降算法、共轭梯度算法、伪牛顿算法、线性规划算法、演化算法、群体智能等。如何选择合适的优化技术,得到快速、准确的解是很多机器学习问题的难点所在。这就要求工程技术和数学理论相结合,以便很好地解决优化问题。一般建议初学者先采用已有的最优化算法,之后再设计专门的优化算法。
是否有不依赖于具体问题的最优学习算法呢?如果有的话,只需学一种算法就可以包打天下了。可惜的是,结论是否。著名的没有免费午餐定理已经明确指出:不存在对于所有学习问题都适用的学习算法。