2.4 机器学习
对于深度学习或者泛化一般机器学习而言,选择不同的算法对数据分析的过程和数据的需求有着极大的不同,而其中最重要的部分就是算法的选择。从本质上来说,机器学习和数据分析就是一个对数据处理、分析、归类的过程,是人类多科学智慧发展的成果和结晶,在进行过程运算的时候,充分应用人工智能、神经网络、递归处理、边缘抉择等交叉学科的现有成果,可以充分利用不同学科、不同理论的关键思想。
2.4.1 机器学习发展的历程
人类一直试图让机器具有智能,也就是人工智能(Artificial Intelligence)。20世纪60年代,人工智能的发展经历了“推理时期”,通过赋予机器逻辑推理能力使机器获得智能,当时的AI程序能够证明一些著名的数学定理,但由于机器缺乏知识,远不能实现真正的智能。因此,20世纪70年代,人工智能的发展进入“知识时期”,即将人类的知识总结出来教给机器,使机器获得智能。在这一时期,大量的专家系统问世,在很多领域取得大量成果,但由于人类知识量巨大,故出现“知识工程瓶颈”,机器学习的发展历程图如图2-13所示。
图2-13 机器学习的发展历程图
无论是“推理时期”还是“知识时期”,机器都是按照人类设定的规则和总结的知识运作的,永远无法超越其创造者,其次人力成本太高。于是,一些学者就想到,如果机器能够自我学习问题不就迎刃而解了。机器学习(Machine Learning)方法应运而生,人工智能进入“机器学习时期”。“机器学习时期”也分为三个阶段,20世纪80年代,连接主义较为流行,代表方法有感知机(Perceptron)和神经网络(Neural Network);20世纪90年代,统计学习方法开始占据舞台,代表方法有支持向量机(Support Vector Machine)等;进入21世纪,深度神经网络被提出,连接主义卷土重来。随着数据量和计算能力的不断提升,以深度学习(Deep Learning)为基础的诸多AI应用逐渐成熟。
所以,人工智能是追求目标,机器学习是实现手段,深度学习是一种方法。
2.4.2 机器学习的步骤
机器学习是一类算法的总称,这些算法企图从大量历史数据中挖掘出其中隐含的规律,并用于预测或者分类,更具体地说,机器学习可以看作是寻找一个函数,输入是样本数据,输出是期望的结果,只是这个函数过于复杂,以至于不太方便形式化表达。
通常学习一个好的函数,可以分为以下三步:
(1)选择一个合适的模型,这通常需要依据实际问题而定,针对不同的问题和任务需要选取恰当的模型,模型就是一组函数的集合。
(2)判断一个函数的好坏,这需要确定一个衡量标准,也就是我们通常说的损失函数(Loss Function),损失函数的确定也需要依据具体问题而定,如回归问题一般采用欧氏距离,分类问题一般采用交叉熵代价函数。
(3)找出最好的函数,如何从众多函数中最快的找出最好的那一个,这一步是最大的难点,做到又快又准往往不是一件容易的事情。常用的方法有梯度下降算法、最小二乘法等和其他一些技巧。
学习得到最好的函数后,需要在新样本上进行测试,只有在新样本上表现得好,才算是一个好的函数。
2.4.3 机器学习的分类
首先对于不同的学习目的和计算要求,机器学习在实际中按不同目的有着不同分类,其中包括基于学科的分类、基于学习模式的分类及基于应用领域的分类。
1.基于学科的分类
一般而言,机器学习在实际使用过程中主要应用和使用若干种学科的知识和内容,吸收兼并不同的思想和理念,从而使得机器学习最终的正确率提高。算法不同,学习过程和方式也不尽相同。机器学习在实际中所使用的学科方法主要分成以下几类:
·统计学:基于统计学的学习方法是收集、分析、统计数据的有效工具,描述数据的集中和离散情况,模型化数据资料。
·人工智能:是一种积极的学习方法,利用已有的现成的数据对问题进行计算,从而提高机器本身计算和解决问题的能力。
·信息论:信息的度量和熵的度量,对其中信息的设计和掌握。
·控制理论:理解对象相互之间的联系与通信,关注总体上的性质。
因此可以说,机器学习的过程就是不同的学科之间相互支撑、相互印证、共同作用的结果。机器学习的进步又直接扩展了相关学科中人工智能的研究,取得了丰硕的成果,并且使得机器学习在原有基础上产生了更大层次的飞跃。
2.基于学习模式的分类
学习模式是指机器学习在过程训练中所使用的策略模式。一个好的学习模式一般是由两部分构成的,即数据和模型。数据提供基本的信息内容,而模型是机器学习的核心,使得通过机器学习能够将数据中蕴含的内容以能够被理解的形式保存下来。
一般来说,机器学习中学习模式是根据数据中所包含的信息复杂度来分类的,基本可以分成以下几类:
·归纳学习:归纳学习是应用范围最广的一种机器学习方法,通过大量的实例数据和结果分析,使得机器能够归纳获得该数据的一种一般性模型,从而对更多的未知数据进行预测。
·解释学习:根据已有的数据对一般的模型进行解释,从而获得一个较为泛型的学习模型。
·反馈学习:通过学习已有的数据,根据不断地获取数据的反馈进行模型的更新,从而直接获取一个新的、可以对已有数据进行归纳总结的机器学习方法。
因此可以看到,机器学习在学习模式上的分类,实际上就是学习模型的分类。需要注意的是,在机器学习的运行过程中,模型往往跟数据的复杂度成正比——数据的复杂度越大,模型的复杂度就越大,计算就越复杂。
不同的数据所要求的模型也是千差万别的,因此机器学习中学习模式的分类实际上是基于不同的数据集而采用不同的应对策略,基于应对策略的不同而选择不同的模型,从而获得更好的分析结果。
3.基于应用领域的分类
机器学习的最终目的是解决现实中的各种问题。通过机器学习的不同应用领域,可以将其分成以下几类:
·专家系统:通过数据的学习,获得拥有某个方面大量的经验和认识的能力,从而使之能够利用相关的知识来解决和处理问题。
·数据挖掘:通过对既有知识和数据的学习,从而能够挖掘出隐藏在数据之中的行为模式和类型,从而获得对某一个特定类型的认识。
·图像识别:通过学习已有的数据,从而获得对不同的图像或同一类型图像中特定目标的识别和认识。
·人工智能:通过对已有模式的认识和学习,使得机器学习能够用于研究开发、模拟和扩展人的多重智能的方法、理论和技术。
·自然语言处理:实现人与对象之间通过某种易于辨识的语言进行有效通信的一种理论和方法。
除此之外,基于机器学习的应用领域还包括对问题的规划和求解、故障诊断分析、经验推理、计算机视觉等,机器学习的主要分类如图2-14所示。
图2-14 机器学习的主要分类
因此可以说,对于机器学习的各种分类,绝大部分都可以分成两类,即问题的模型建立和基于模型的问题求解。
问题的模型建立是指通过对数据和模式的输入,做出描述性分析,从而确定输入内容的形式;基于模型的问题求解是指对输入的数据在分析后找出相关的规律,并利用此规律获取提高解决问题的能力。
2.4.4 机器学习的基本算法
在前面已经提到,机器学习还是一门涉及多个领域的交叉学科,也是多个领域的新兴学科,因此,它在实践中会用到不同学科中经典的研究方法,即算法。
1.机器学习的算法流程
对于机器学习来说,一个机器学习的过程是一个完整的项目周期,其中包括采集数据、数据的特征提取与分类,以及之后采用算法去创建机器学习模型,从而获得预测数据。机器学习的算法流程如图2-15所示。
图2-15 机器学习的算法流程
在一个机器学习的完整算法流程中,整个机器学习程序会使用数据去创建一个能够对数据进行有效处理的学习“模型”。这个模型可以动态地对本身进行调整和反馈,从而较好地对未知数据进行分类和处理。
一个完整的机器学习项目主要包含以下内容。
·输入数据:通过自然采集的数据集,包含被标识和未被标识的部分,作为机器学习最基础部分。
·特征提取:通过多种方式对数据的特征值进行提取,一般而言,包含特征越多的数据,机器学习设计出的模型就越精确,处理难度也越大。因此恰当地寻找一个特征大小的平衡点是非常重要的。
·模型设计:模型设计是机器学习中最重要的部分,根据现有的条件,选择不同的分类,采用不同的指标和技术。模型的训练更多的是领先数据的收集和特征的提取,这点需要以上各部分的支持。
·预测数据:通过对已训练模式的认识和使用,使得学习机器能够用于研究开发、模拟和扩展人的多重智能的方法、理解和技术。
整个机器学习的流程是一个完整的项目生命周期,每一步都是以上一步为基础进行的。
2.基本算法的分类
根据输入的不同数据对数据的处理要求,机器学习会选择不同种类的算法对模型进行训练。算法训练的选择没有特定的模式,一般而言,只要考虑输入的数据形式和复杂度,以及使用者模型的使用经验,之后据此进行算法训练,从而获得更好的学习结果。
根据基本算法的训练模型,可将算法分成以下几类,如图2-16所示。
图2-16 机器学习的算法分类
·监督学习:在监督学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1”“2”“3”“4”等。在建立预测模型的时候,监督学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断调整预测模型,直到模型的预测结果达到一个预期的准确率。监督学习的常见应用场景如分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)。
·非监督学习:在非监督学习下,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习及聚类等。常见算法包括Apriori算法及K-Means算法。
·半监督学习:在半监督学习下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型需要学习数据的内在结构以便合理地组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测,如图论算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。
在企业数据应用的场景下,人们最常用的可能就是监督学习和非监督学习的模型。在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,目前半监督学习是一个很热门的话题。而强化学习更多的应用在机器人控制及其他需要进行系统控制的领域。
·强化学习:在强化学习下,输入数据作为对模型的反馈,不像监督学习模型那样,输入数据仅仅作为一个检查模型对错的方式。强化学习模型的输入数据直接反馈到模型,模型必须对此立刻做出调整。常见的应用场景包括动态系统及机器人控制等。常见算法包括Q-Learning及时间差学习(Temporal difference learning)。