1.6.1 机器学习算法的类型
根据处理方法、输入和输出的数据类型以及要解决的任务或问题的类型,机器学习算法可以大致分为如下五类。
1.6.1.1 有监督学习
有监督学习(supervised learning)算法[23][25-26]对一组数据建立一个数学模型,该数据既包含输入,又包含期望的输出。该数据称为训练数据,由一组训练实例组成。每个训练实例都有一个或多个输入和所需的输出,也称为监督信号。在数学模型中,每个训练实例用数组或向量表示,有时也称为特征向量,训练数据用矩阵表示。通过对目标函数的迭代优化,有监督学习算法可学习到一个用来预测与新输入相关联的输出的函数,最优的函数将做到使算法能正确地确定不属于训练数据的输入的输出。对于能够随着时间的推移提高其输出或预测准确性的算法,我们称其已经学会了执行该任务。
有监督学习算法的类型包括分类和回归等。分类算法用于输出被限制在一组有限取值的情况,回归算法用于输出可能在一个范围内有无限取值的情况。举个例子,对于一个过滤邮件的分类算法,输入是一封收到的邮件,输出是邮件归档的文件夹名称。
相似性学习是有监督机器学习的另一个领域,与回归和分类密切相关,但目标是使用相似性函数从例子中学习,该函数衡量的是两个对象的相似度或相关性。相似性学习在排名、推荐系统、视觉身份追踪、人脸验证和语音识别等方面都有应用。
使用最广泛的有监督学习算法包括支持向量机、线性回归、logistic回归(逻辑回归)、朴素贝叶斯、线性判别分析、决策树、K近邻算法、神经网络(多层感知器)、相似性学习等。
如果特征向量包括许多不同种类的特征(离散、离散有序、计数、连续值),则有些算法比其他算法更容易应用。采用距离函数的方法对此特别敏感。决策树的一个优点是很容易处理这类异质数据。
如果每个特征对输出都有独立的贡献,那么基于线性函数(如线性回归、逻辑回归、支持向量机、朴素贝叶斯)和距离函数(如最近邻方法、带有高斯核的支持向量机)的算法一般表现良好。然而,如果特征之间存在复杂的相互作用,那么决策树和神经网络等算法的效果更好,因为它们是专门为发现这些相互作用而设计的。线性方法也可以应用,但必须手动指定这些交互作用。
1.6.1.2 无监督学习
无监督学习(unsupervised learning)算法[27]采用一组只包含输入的数据,并在数据中找到结构,如数据点的分组或聚类。因此,算法需要从尚未标记或分类的测试数据中学习。无监督学习算法不是对反馈做出反应,而是识别数据中的共性,并根据每个新数据中是否存在这种共性做出反应。无监督学习的一个核心应用是在统计学中的密度估计领域,如寻找概率密度函数。无监督学习也应用于其他涉及总结和解释数据特征的领域。下面介绍几种常用的无监督学习方法。
主成分分析(Principal Components Analysis,PCA)是一种统计分析、简化数据集的方法。它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(principal component)。具体地,可将主成分看作一个线性方程,其包含一系列线性系数来指示投影方向。PCA对原始数据的正则化或预处理敏感(相对缩放)。
主成分分析由卡尔·皮尔逊于1901年发明,用于分析数据及建立数理模型,在原理上与主轴定理相似。之后在1930年左右由哈罗德·霍特林独立发展并命名。依据应用领域的不同,在信号处理中也叫作离散K-L转换[discrete Karhunen-Loève Transform(KLT)]。其方法主要是通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)与权值(即特征值)。PCA提供了一种降低数据维度的有效办法,如果分析者在原数据中除掉最小的特征值所对应的成分,那么所得的低维度数据必定是最优化的。主成分分析在分析复杂数据时尤为有用。
聚类分析是将一组观测值分配成子集(称为聚类),使同一聚类内的观测值按照一个或多个预先指定的标准相似,而从不同聚类中抽取的观测值则不相似。不同的聚类技术对数据的结构做出了不同的假设,通常由一些相似度量来定义,并通过内部紧凑性(或同一聚类成员之间的相似性)和分离度(聚类之间的差异)来评估。其他方法还包括基于估计密度和图的连通性。常见的聚类方法包括层次聚类、K均值、混合模型、DBSCAN和OPTICS算法等。
关联规则学习是一种基于规则的机器学习方法,用于发现数据之间的有趣关系。它的目的是利用一些有趣的测量来识别和发现其中的强规则。基于强规则的概念,Rakesh Agrawal、Tomasz Imieliński和Arun Swami引入了关联规则,用于发现超市销售点POS系统记录的大规模交易数据中产品之间的规律性。最经典的关联规则案例是购物车分析。关联规则如今还被应用于许多领域,包括Web使用挖掘、入侵检测、连续生产和生物信息学。与序列挖掘相比,关联规则学习通常不考虑交易内或跨交易的物品顺序。研究者已经提出了许多生成关联规则的算法,例如Apriori、Eclat和FP-Growth等。
序列模式挖掘是数据挖掘中的一个主题,通常也采用无监督学习方式,关注的是在数据实例之间寻找统计学上相关的模式。其中的值是以序列的方式传递的,通常假定值是离散的,因此时间序列挖掘与之密切相关,但通常被认为是另一种不同的机器学习任务。一般来说,序列挖掘问题可以分为基于字符串处理算法的字符串挖掘和基于关联规则学习的项集挖掘。局部过程模型将序列模式挖掘扩展到更复杂的模式,除了序列排序构造外,还可以包括(排他性)选择、循环和并发构造等。
无监督学习方法还包括一些学习潜变量模型的方法,如期望最大化(EM)算法、独立成分分析、非负矩阵因子化、奇异值分解等方法。期望最大化算法(expectation-maximization algorithm)在概率模型中寻找参数最大似然估计或者最大后验估计,其中概率模型依赖于无法观测的隐变量。它采用两个步骤交替进行计算:第一步是计算期望(E),利用对隐变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),利用E步中求得的最大似然值来计算参数的值;M步中求得的参数估计值被用于下一个E步计算中,这个过程不断交替进行。
1.6.1.3 半监督学习
半监督学习(semi-supervised learning)[24]介于无监督学习(没有任何标记的训练数据)和有监督学习(有完全标记的训练数据)之间,有些训练实例是缺少标签的。然而很多机器学习研究者发现,无标签的数据与少量有标签的数据配合使用,可以使学习精度得到相当大的提高。在现实世界中,高质量的有标记训练数据需求往往被证明是一个组织或行业内应用机器学习模型的重大障碍。这种瓶颈效应表现在:
●标签数据数量不足。当机器学习技术最初用于新的应用或行业时,往往没有足够的训练数据。在这种情况下,如果不等待数年的积累,获取训练数据可能是不切实际的、昂贵的甚至是不可能的。
●缺乏足够的专业知识来标记数据。当标记训练数据需要特定的相关专业知识时,创建一个可用的训练数据集可能会很快变得非常昂贵。例如,在机器学习的生物医学或安全相关应用中,这个问题很可能发生。
●没有足够的时间来标记和准备数据。实现机器学习所需的大部分时间都花在了准备数据集上,当一个行业或研究领域处理的问题从本质上来说发展较快时,不可能足够快地收集和准备数据,使结果在现实世界的应用中有用。例如,这个问题可能发生在欺诈检测或网络安全应用中。
因此,半监督学习是现实机器学习应用中经常采用的一种途径。
在弱监督学习中,训练标签是嘈杂的、有限的或不精确的;然而,这些标签的获取成本通常较低,从而可产生较大的有效训练集,因此,弱监督学习也归属于半监督学习类型。这种方法减轻了获得手工标记数据集的负担,取而代之的是,在理解训练标签并不完美的情况下,采用廉价的弱标签,但还是可以创建出一个强大的预测模型。
主动学习是半监督学习的一种特殊情况,该学习算法可以交互式地查询用户(或其他信息源),将新的数据点标记为所需的输出。在统计学文献中,有时也称之为最优实验设计,用户或信息源也称为教师。有些情况下,未标记的数据很多,但人工标记的成本很高。在这种情况下,学习算法可以主动查询教师的标签。这种类型的迭代监督学习被称为主动学习。由于是由学习者来选择例子,因此学习一个概念所需的例子数量往往比普通有监督学习所需的数量低很多。但采用这种方法时,算法有可能被无信息的例子淹没。最近的发展致力于多标签主动学习,混合主动学习和单通道(在线)环境下的主动学习,将机器学习领域的概念与在线机器学习领域的自适应、增量学习策略相结合。
1.6.1.4 强化学习
强化学习(reinforcement learning)[28-30]涉及软件智能体在环境中应该如何采取行动,以使某种累积报酬的概念最大化。由于其通用性,强化学习在许多其他学科中都有研究,如博弈论、控制理论、运筹学、信息论、基于模拟的优化、多智能体系统、蜂群智能、统计学和遗传算法等。在运筹学和控制理论研究的语境下,强化学习被称作近似动态规划(Approximate Dynamic Programming,ADP)。在最优控制理论中也有对这个问题的研究,虽然大部分的研究是关于最优解的存在和特性,并非学习或者近似方面。在经济学和博弈论中,强化学习被用来解释在有限理性的条件下如何出现平衡。强化学习算法被用于自主车辆或学习与人类对手进行游戏。
强化学习与监督学习的不同之处在于不需要呈现有标签的输入/输出对,也不需要明确纠正次优动作。相反,强化学习的重点是在探索(未知领域)和利用(现有知识)之间找到平衡点。环境通常以马尔可夫决策过程(MDP)的形式来陈述,因为许多针对这种情况的强化学习算法都使用了动态规划技术。经典的动态规划方法与强化学习算法的主要区别在于,后者不假设对MDP的精确数学模型的了解,它们针对的是精确方法变得不可行的大型MDP。
常见的强化学习方法有Monte Carlo、Q-learning、SARSA、DQN、DDPG、A3C、NAF、TRPO、PPO、TD3、SAC等。
1.6.1.5 自学习
自学习(self learning)[31]作为一种机器学习范式在1982年被引入,同时引入了一种能够自学习的神经网络,命名为交叉开关自适应阵列(Crossbar Adaptive Array,CAA)——一种没有外部奖励和外部教师建议的学习。CAA自学习算法计算关于行动的决定和关于后果情况的情绪(感受)。该系统由认知和情感之间的相互作用驱动自学习算法更新一个记忆矩阵W=‖w(a,s)‖。
自编码器[32]也是一种自学习的方法,它是一个神经网络,可以学习将输入复制到输出。它有一个内部(隐藏)层,描述了用于表示输入的编码。它由两个主要部分组成:将输入映射到编码的编码器,以及将编码映射到输入的重建(输出)的解码器。自编码器的目的是通过训练网络忽略信号“噪声”来学习一组数据的表示(编码),通常是为了降低维度。存在诸多自编码器的变体,目的是迫使学习到的表征能刻画输入数据的有用属性,例如正则化自编码器(稀疏、去噪和收缩),它能有效地学习表征并用于后续的分类任务[3]。自编码器的想法在神经网络领域已经流行了几十年,最早的应用可以追溯到20世纪80年代。自编码器的传统应用是维度约简或特征学习,但自编码器概念更广泛地用于学习数据的生成模型。21世纪10年代,一些强大的人工智能开始涉及堆叠在深度神经网络内部的稀疏自编码器。