监督学习

监督学习是一类机器学习任务,该任务基于样例中的输入-输出对学得一个函数,从而将一个(一般的)输入映射得到一个输出[1]。它从一组带标签的训练数据集中推得函数[2]。在监督学习中,每条样本包含一个输入对象(通常由向量表示)和一个输出值(也叫做标签)。监督学习算法分析训练集并产生一个推断函数,该函数能用于泛化新的样例。算法可以采用一个最优化方法来给出未见样例的正确类别。这要求学习算法以合理的方式将已知的训练数据集泛化到未知的情形(见归纳偏置)。

在人类和动物心理学中,与监督学习对应的任务常被称为概念学习

步骤

为求解某个给定的监督学习问题,我们需要采取以下步骤:

  1. 确定样本类型。在开始之前,使用者应决定何种类型的数据用作训练集。例如,在手写体识别中,训练数据可以是单个手写字符,一个手写体的词语,或整行手写文本。
  2. 获取训练集。训练集应能代表使用该函数时面对的真实世界的情形,它包括一组输入对象以及相应的输出标签,通过人类专家采集或通过测量获取。
  3. 确定假设函数的输入特征如何表示。预测函数的精度很大程度取决于输入对象如何表示。一般地,可将输入对象转化为一个特征向量,该向量包含了一连串描述该对象的特征。特征的数量不宜过大,以免发生维度灾难,但也应包含足够的信息以正确地预测输出。
  4. 确定假设函数的结构以及相应的学习算法。例如,可以选用支持向量机决策树算法。
  5. 完成设计。在训练集上运行学习算法。部分监督学习算法要求使用者指定特定的控制参数。这些参数可根据在训练数据集的子集(称为校验集)上的优化效果做出调整,或通过交叉验证进行调整。
  6. 评估假设函数的精度。在学习和调参完成之后,所学得的函数应在测试集上使用并作出评估,测试集应不同于训练集。

选择算法

有很多种监督学习算法可供选用,这些算法各有其优势和缺陷。没有哪种算法能在所有监督学习问题中都取得最好的效果。(见无免费午餐定理)

选择算法时主要有四个方面需要考虑:

偏差-方差权衡

词条见:偏差-方差权衡

第一个问题是偏差和方差的折中[3]。设想我们有若干个不同的高质量训练数据集。学习算法对某个特定输入x具有偏差是指,若在每个数据集上进行训练,在预测x的输出时总会产生与正确结果的系统性偏离。学习算法对某个特定输入x具有高方差是指,在不同的训练集上算法对x预测不同的输出值。一个分类器的预测误差取决于它偏差的总和以及方差。[4]一般地,在偏差和方差之间存在着此消彼长。一个具有低偏差的学习算法必须足够“弹性”才能很好地拟合数据。但是如果算法太弹性了,它会在每个训练集上表现不同,因此引起高方差。许多监督学习方法的一个重要方面是,他们能调节偏差和方差之间的这种折中(要么自动调整,要么用户指定一个偏差/方差的控制参数)。

函数复杂度和训练集数据量

第二个问题是训练集的数据量之比于实际函数(分类或回归函数)的复杂度。如果实际函数简单,则一个具有高偏差和低方差的“非弹性”学习算法在少量数据上就能学得该函数。但如果实际函数高度复杂(例如多个不同输入特征间有相互作用,以及算法在不同输入空间上的行为不同),那么函数将只能通过在大量训练集上学习而得到,并且要使用具有低偏差和高方差的弹性学习算法。

输入空间的维度

第三个问题是输入空间的维度。如果输入特征向量具有很高维度,则即使目标函数仅由这些特征的一小部分决定,学习也将变得困难。这是因为其他“多余的”维度会扰乱学习算法并使之表现出高方差。因此,具有较高的输入维度时,一般要精调分类器到较低的方差和较高偏差。事实上,如果模型设计者能从输入数据中手动移除无关特征,则很有可能会提升学得的函数的精度。此外,很多算法会采用特征选择来标记相关特征而丢弃无关特征。它是更一般的策略降维的一个例子,降维是在运行监督学习算法前将输入数据映射到一个较低维的空间。

输出中的噪声

第四个问题是标注(监督的标签变量)中的噪声度。如果标签有很多不正确(由于人为误差或传感器的采集误差),则算法不会学得一个准确匹配训练样本的函数。此时精细地匹配训练数据会导致过拟合。当所学函数对学习算法来说过于复杂时,即使在没有测量误差(随机噪声)时也会产生过拟合。在这种情况下,目标函数中不能被拟合的部分将对训练产生负面作用——这种现象被称为确定性噪声。不论随机噪声还是确定噪声出现时,最好采用高偏差、低方差的学习器。

事实上,有几种方法可以减小输出值噪声的影响,例如训练时采用提前终止策略防止过拟合,或在训练前检测并移除噪声样例。 有几种算法能在训练之前标识噪声样例并移除可疑噪声样例,这些算法在统计显著性上降低了泛化误差.[5][6]

其它应考虑的(重要)因素

选择和运用某个算法时,还应考虑如下因素:

  • 非线性的影响。如果每个特征对输出有独立地贡献,那么基于线性函数(线性回归逻辑斯谛回归支持向量机、)和距离函数的算法能够表现良好。然而,如果特征之间有复杂的相互作用,则类似于决策树神经网络的算法表现得更好,因为他们设计之初就旨在发现这些关系。线性方法也能使用,但设计者应在使用时手动处理这些复杂关系。

考虑新的应用问题时,工程师可以比较多种算法并由实验决定哪种算法在当前问题上表现最佳(见交叉验证).精调某种算法的性能可能会很耗费时间。在给定资源的前提下,把时间花在搜集更多训练数据和相关特征上常常比精调算法效果要好。

算法

应用最广的学习算法如下:

监督学习算法原理

给定一个包含N个训练样本的集合,形如[math]\displaystyle{ \{ (x_1,y_1),...,(x_N,y_N) \} }[/math],其中[math]\displaystyle{ x_i }[/math]是第i个样本的特征向量,[math]\displaystyle{ y_i }[/math]是其标签(即类别),学习算法寻找某个函数[math]\displaystyle{ g:X \rightarrow Y }[/math], [math]\displaystyle{ X }[/math]是输入空间,[math]\displaystyle{ Y }[/math]是输出空间。函数[math]\displaystyle{ g }[/math]是潜在函数空间[math]\displaystyle{ G }[/math]的一个元素,[math]\displaystyle{ G }[/math]常被称为假设空间。有时为使用方便,用打分函数 [math]\displaystyle{ f : X \times Y \rightarrow \mathbb{R} }[/math]表示[math]\displaystyle{ g }[/math][math]\displaystyle{ g }[/math]定义为返回使打分函数取得最大值的[math]\displaystyle{ y }[/math]值:[math]\displaystyle{ g(x) = arg \underset{y}{} max f(x,y) }[/math]。令[math]\displaystyle{ F }[/math]表示得分函数的取值空间

尽管[math]\displaystyle{ G }[/math][math]\displaystyle{ F }[/math]可以是任意函数空间,但许多算法都是概率模型,其中[math]\displaystyle{ g }[/math]采用条件概率的形式[math]\displaystyle{ {g(x)=P(y|x)} }[/math],或采用联合概率分布模型[math]\displaystyle{ {f(x,y)=P(x,y)} }[/math].例如,朴素贝叶斯线性判别分析是联合概率分布模型,而逻辑斯谛回归是条件概率模型。

有两种方法选择[math]\displaystyle{ f }[/math][math]\displaystyle{ g }[/math]:经验风险最小化结构风险最小化.[7].经验风险最小化寻找能最好地拟合训练集的函数,结构风险最小化包含了权衡方差/偏差效应的惩罚函数。 在上述两种方法中,一般都假设训练集包含了独立同分布的样本对,[math]\displaystyle{ (x_i,y_i) }[/math].为了度量函数适应训练数据的好坏,定义损失函数[math]\displaystyle{ L:Y \times Y \rightarrow \mathbb{R}^{{\geq} 0} }[/math].对于训练样本[math]\displaystyle{ (x_i,y_i) }[/math],预测值[math]\displaystyle{ \hat{y} }[/math]的损失为[math]\displaystyle{ L(y_i,\hat{y}) }[/math].函数[math]\displaystyle{ g }[/math]风险定义为[math]\displaystyle{ g }[/math]的期望损失。期望损失可以由训练数据进行估计

[math]\displaystyle{ R_{emp}(g)=\frac{1}{N}\sum_{i}{L(y_i,g(x_i))} }[/math].

经验风险最小化

词条见:经验风险最小化 在经验风险最小化方法中,监督学习算法求得一个函数[math]\displaystyle{ g }[/math],使[math]\displaystyle{ R(g) }[/math]最小化。因此监督学习算法可以通过应用最优化方法寻找[math]\displaystyle{ g }[/math]而实现。若[math]\displaystyle{ g }[/math]是条件概率分布[math]\displaystyle{ P(y|x) }[/math],损失函数是负对数似然:[math]\displaystyle{ L(y,\hat{y}) = -logP(y|x) }[/math],则经验风险最小化等价于极大似然估计.如果G包含很多候选函数,或训练集不足够大,经验风险最小化会导致高方差和不良的泛化。学习算法只记住了训练样例而没有很好地泛化,这被称为过拟合.

结构风险最小化

结构风险最小化通过向优化表达式中引入正则惩罚项防止过拟合。正则惩罚项可以看做奥卡姆剃刀的一种实现方式,即选择更简单而非更负杂的函数。

对于不同的复杂度定义,采用的惩罚项也各不相同。例如,考虑函数[math]\displaystyle{ g }[/math]是线性函数时的情形[math]\displaystyle{ g(x) = \sum_{j=1}^d\beta_jx_j }[/math] 此时常用的正则惩罚项是[math]\displaystyle{ \sum_j\beta_j^2 }[/math],即权重平方欧氏范数,也称为[math]\displaystyle{ L_2 }[/math]范数。其他范数包括[math]\displaystyle{ L_1 }[/math]范数,[math]\displaystyle{ \sum_j|\beta_j| }[/math],以及[math]\displaystyle{ L_0 }[/math]范数,[math]\displaystyle{ L_0 }[/math]是指非零参数[math]\displaystyle{ \beta_j }[/math]的个数,惩罚项用符号[math]\displaystyle{ C(g) }[/math]表示. 于是监督学习优化问题可归结为找到函数[math]\displaystyle{ g }[/math],使得[math]\displaystyle{ J(g) = R_{emp}(g) + \lambda C(g) }[/math]取得最小值。

参数[math]\displaystyle{ \lambda }[/math]控制偏差方差比重。当[math]\displaystyle{ \lambda = 0 }[/math]时,得到的是低偏差高方差的经验风险最小化表达式,当[math]\displaystyle{ \lambda }[/math]很大时,学习算法具有高偏差和低方差。[math]\displaystyle{ \lambda }[/math]的值可以通过交叉验证经验地选取。

复杂度惩罚项在贝叶斯中的解释是[math]\displaystyle{ g }[/math]的负对数先验概率,[math]\displaystyle{ -logP(g) }[/math],而[math]\displaystyle{ J(g) }[/math][math]\displaystyle{ g }[/math]的后验概率。

生成式训练

以上描述的训练方法均为判别式训练方法,因为他们都寻求一个函数[math]\displaystyle{ g }[/math],使得函数能很好地判别不同输出值(见判别式模型).在[math]\displaystyle{ {f(x,y)=P(x,y)} }[/math]为联合概率分布且损失函数为负对数似然[math]\displaystyle{ \sum_ilogP(x_i,y_i) }[/math]的情况下,风险最小化算法也称做生成式训练,因为[math]\displaystyle{ f }[/math]可被看作是解释数据如何生成的生成模型。与判别式训练算法相比,生成式训练算法常常更为简单,且有更高的计算效率。在某些情况下求解可用闭式解的形式计算,就像朴素贝叶斯线性判别分析中的那样。

扩展

标准监督学习问题可通过以下几种方法来扩展:

  • 半监督学习:在这种情况下,只有一部分训练数据具有给定的输出值(标签),而其他的没有标签。
  • 主动学习:与假定一开始给出所有训练数据不同,主动学习在交互中获得新样本,一般通过询问人类用户来实现。询问常常基于无标签的数据,这种场景下半监督学习和主动学习结合了起来。
  • 结构化预测:当想要的输出值是一个复杂对象,如解析树或带标签的图时,要对标准方法进行扩展。
  • 排序学习:当输入是一组对象的集合,而输出是这些对象的排序,那么这种学习任务也要对标准方法进行扩展。

方法和算法

应用

相关扩展


参见

参考文献

  1. Stuart J. Russell, Peter Norvig (2010) Artificial Intelligence: A Modern Approach, Third Edition, Prentice Hall ISBN 9780136042594.
  2. Mehryar Mohri, Afshin Rostamizadeh, Ameet Talwalkar (2012) Foundations of Machine Learning, The MIT Press ISBN 9780262018258
  3. S. Geman, E. Bienenstock, and R. Doursat (1992). Neural networks and the bias/variance dilemma. Neural Computation 4, 1–58.
  4. G. James (2003) Variance and Bias for General Loss Functions, Machine Learning 51, 115-135. (http://www-bcf.usc.edu/~gareth/research/bv.pdf)
  5. C.E. Brodely and M.A. Friedl (1999). Identifying and Eliminating Mislabeled Training Instances, Journal of Artificial Intelligence Research 11, 131-167. (http://jair.org/media/606/live-606-1803-jair.pdf)
  6. M.R. Smith and T. Martinez (2011). "Improving Classification Accuracy by Identifying and Removing Instances that Should Be Misclassified". Proceedings of International Joint Conference on Neural Networks (IJCNN 2011). pp. 2690–2697.
  7. Vapnik, V. N. The Nature of Statistical Learning Theory (2nd Ed.), Springer Verlag, 2000.

外部链接