1. 简介
本章是对机器学习的初步介绍,包括一些关键的学习任务和应用,基本定义,术语,以及对一些一般场景的讨论.
1.1 何为机器学习
机器学习可以广泛地定义为使用经验来提高性能或进行准确预测的计算方法。在这里,经验是指可以获取的过去信息,一般是可以用于分析的电子数据形式。这些数据可以是数字化的人工标记的训练集形式,或者是通过与环境互动获得的其他类型的信息。无论何种情形,数据集的质量和大小对于最终预测的结果而言都至关重要。
一个学习问题的例子是如何使用有限的随机选取的样本文档(每个文档都有一个主题与之对应),来准确的预测从未出现的文档主题。
机器学习包括设计高效且准确的预测算法。如同计算机科学的其他领域,对于这些算法质量的一个重要衡量指标是其时间和空间复杂度。但是对于机器学习算法而言,我们还需注意样本复杂度的概念
1.2 机器学习能够解决哪些问题
-
文本分类.包括确定文档、文本主题,或者自动判定网页内容是否不当,以及垃圾邮件检测 自然语言处理(NLP)语音处理计算机视觉计算机生物学- 其他问题如
信用卡欺诈检测
1.3 一些标准学习任务
-
分类(Classification):即给每一个样本分配一个类别。例如,文本分类包括对每个文本分配一个诸如政治、商业、体育或者天气的标签;图片分类包括给每一张图片分配一个诸如汽车、火车或者飞机的标签。 -
回归(Regression):即对每一个样本预测其真实值。回归的例子包括股票价格预测。在回归问题中,对于不准确预测的惩罚取决于真实值和预测值之间差异的程度。 -
排名(Ranking):即根据某些标准对目标进行排序。例如网页搜索,返回与搜索查询结果相关的网页,是一个典型的排名问题 -
聚类(Clustering):即将目标集合划分为相似的子集。聚类通常用于分析非常大的数据集。 -
降维(Dimensionality reduction):即在保留初始特征的某些重要属性下,将某一对象的初始化特征转化为低维度的特征表示。常见的例子如计算机视觉中图片的处理。
1.4 学习步骤
在这里,我们将使用垃圾邮件检测问题作为一个例子来说明一些基本的定义和描述机器学习算法在实践中的使用和评价,包括它们的不同阶段。
垃圾邮件检测的问题是学习自动将电子邮件信息分为垃圾邮件或非垃圾邮件。 下面是机器学习中常用的定义和术语:
-
样本:用于学习或者评价的数据实例。在垃圾邮件问题中,样本包括用于学习和测试的邮件信息集合。 -
特征:与某一样本相关的属性的集合,通常由向量表示。在垃圾邮件问题中,一些相关的特征可能包括邮件信息长度,发件人姓名,标题的各种特征,邮件正文中出现的某系特定关键词。 -
标签:给予每个样本的数值或者类别。在分类问题中,样本被赋予一些特定的类别,如,垃圾邮件,非垃圾邮件;在回归问题中,样本被赋予一个真实值标签。 -
超参数:非学习算法所决定的自由参数。 -
训练样本:用于训练一个学习算法的样本。在垃圾邮件分类问题中,训练样本包括带有标签的邮件集合。 -
验证样本:用于调整学习算法参数的样本。验证样本用于为算法选择合适的超参数。 -
测试样本:用于评价一个学习算法的表现。测试样本通常与训练和验证数据分开,并且不用于学习过程中。在垃圾邮件问题中,测试样本包括一系列算法需要根据特征预测标签的邮件样本集合。这些预测结果将与测试样本的标签进行对比以衡量算法的表现。 -
损失函数:用于衡量预测值与真实值之间差距的函数。将所有标签的集合记作,可能的预测结果集合记作,那么损失函数就是定义在上的映射:。在大多数情况下,,并且损失函数是有界的,但是这一条件并不总是成立。常见的损失函数包括0-1损失函数(误分类损失):;平方损失函数: -
假设集合:将特征映射到标签的函数集合。如,将邮件特征映射到的函数集合。
我们现在定义垃圾邮件问题的学习步骤。从给定的邮件样本集合开始,我们首先随机的将数据划分为训练集,验证集和测试集。这些样本的大小取决于多种因素。例如,验证集数据量取决于算法中超参数的数量,我们用向量表示这些超参数。此外,在带标签的样本量相对较小的情况下,训练集的数据量通常比测试集要大,因为算法的性能与训练集直接相关。
接下来,我们对样本特征进行处理。这在设计机器学习算法过程中是至关重要的一步。有用的特征可以有效的对算法起指导作用,而较差的或者无用的特征可能会对算法产生误导。
现在,我们使用这些选取的特征,通过调整超参数来训练学习算法。对于这些参数的每个取值,学习算法在假设集合中选取不同的假设。我们选择在验证集上表现最好的一组超参数()。最后,使用这一假设,我们在测试集中对标签进行预测,并且使用相关的损失函数对算法性能进行评估,例如,垃圾邮件分类问题中的0-1损失函数,来比较预测值与真实值。因此,算法的表现是基于测试误差而不是训练误差。
1.5 学习场景
-
监督学习(Supervised Learning):模型接收带有标签的一系列样本集合作为训练数据,并且对所有未出现的点进行预测。这是分类,回归,以及排名问题中经常出现的场景。上文所述垃圾邮件分类就是监督学习的一个例子。 -
无监督学习(Unsupervised Learning):模型只接收未标记的训练数据,并且对所有未出现的点进行预测。由于在这种情况下通常没有标记的样本可用,因此很难定量评估模型的表现。聚类和降维均属于无监督学习。 -
半监督学习(Semi-supervised Learning):模型接收的训练样本既包括有标签的数据,也包括无标签的数据,并且对所有未出现的样本进行预测。半监督学习通常出现在未标记数据容易获取但有标记数据获取困难的情况下 -
转导推理(Transductive inference):正如半监督学习场景,模型接收一些带标签的训练样本和一些未标记的测试样本,然而,转导推理的目的是仅对某些特定的测试样本进行预测。 -
On-line Learning:和之前的场景不同,On-line Learning包含多个回合训练和测试环节的混合。在每个回合中,模型接收一些不带标签的训练样本,做出预测,然后与真实标签比较,计算损失。On-line Learning的目标是最小化所有回合的累积损失。和之前的几种场景相比,该场景并未对样本分布做出假设。 -
强化学习(Reinforcement Learning):强化学习的训练和测试环节也是混合的。为了收集信息,模型积极地与环境交互,在某些情况下影响环境,并且每一个行为都会得到即时的奖励。模型的目标是最大化奖励。 -
主动学习(Active learning):模型自适应或交互式地收集训练样本,通常是通过查询数据库为新样本请求标签。主动学习的目标是达到与标准的监督学习场景相当的表现,但是使用更少的带标签样本。主动学习通常适用于带标签样本难以获取的情形。
1.6 泛化
机器学习从根本上来讲就是泛化。例如,标准的监督学习场景,根据一系列带标签的样本来对未出现的样本做出准确的预测。该问题通常被表述为从假设集合中选取一个函数,即所有函数簇的子集。所选的函数接下来将被用于标记所有实例,包括未出现的样本。
如何选择一个假设集合呢?对于一个比较复杂的假设集合,学习模型或许会选择一个与训练样本一致的函数或者预测器,即在训练样本中零误差的函数。在一些复杂度没那么高的函数簇中,在训练样本中产生误差是在所难免的。但是,哪一种具有更好的泛化能力?我们该怎样定义假设集合的复杂度呢?
左侧的z型曲线可以将训练样本中蓝色和红色的点完美区分开,但是它是一个十分复杂的分离超平面,对于未出现的数据不具有很好的泛化能力。反之,右侧的决策面更加简单,并且对于未知数据具有更好的泛化能力,尽管在训练样本中表现的没那么好。
从上图可以看到,通常情况下,在训练样本中表现优异的预测器或许在整体上表现的并不是最好。从一个复杂函数簇中选择的预测器能够对数据产生记忆,但是泛化与对训练标签的记忆能力之间存在很大差异。
样本大小和复杂度之间的平衡在泛化能力上扮演着重要的角色。当样本相对较小时,选择一个过于复杂的函数簇可能会导致较差的泛化能力,这也就是通常所说的过拟合(overfitting)。另一方面,过于简单的函数簇可能会使得预测精度不够高,即欠拟合(underfitting)。