任务T
机器学习并不是万能钥匙,它也有自己的应用场景,常见的机器学习任务:
- 分类:输入是属于 k k k 个类别中的哪一个。
- 输入缺失分类:输入存在缺失,需要学习一组从输入映射到输出的函数。实际操作中,学习的是联合概率分布,然后通过边缘化缺失变量来解决分类任务。
- 回归:需要对给定输入预测数值。也就是说,需要学习输出函数。从某个角度来讲,和分类十分相似。
- 转录:观测一些非结构化表示的数据,并转录信息为离散的文本形式。
- 机器翻译:输入是一种语言的符号序列,转换成另外一种语言的符号序列。
- 结构化输出:输出向量或者其他包含多个值的数据结构,并且结构中的元素之间具有重要关系,比如上述中的转录和机器翻译任务,还有语法分析、图像的像素级分割等。
- 异常检测:在一组对象或者事件中筛选,标记不正常或者非典型的个体。
- 合成和采样:生成和训练集相似的新样本。
- 缺失值填补:给定的新样本中某些元素缺失,需要补充。
- 去噪:根据损坏的样本预测干净的样本。
- 密度估计(概率质量函数估计):学习样本采样空间的概率密度函数或者概率质量函数,进一步讲,是学习观测到的数据的结构。
性能度量P
准确率:该模型输出正确结果的样本比率。
错误率:反之同上。通常把错误率称为0-1损失的期望。
概率对数的平均值:对于密度估计这类任务,使用输出模型在一些样本(比如测试集)上的概率对数的平均值。
除此之外,更多的有关性能的度量取决于应用,甚至于这个度量的定义决定了机器学习的算法或者解法,比如线性回归的正规方程。
经验E
根据机器学习过程中的不同经验,机器学习算法可以分成监督算法和无监督算法。大部分学习算法可以理解为在整个数据集(很多样本或者数据点的集合)上获取经验。
无监督学习:
训练含有很多特征的数据集,然后学习这个数据集上有用的结构性质。比如密度估计、去噪、合成、聚类等。
监督学习:
训练含有很多特征的数据集,不过,数据集中的样本都有一个标签或者目标。比如回归、分类、结构化输出等。
大致来说,无监督学习是观测随机向量 x \mathbf{x} x的若干样本,学习出概率分布 p ( x ) p(\mathbf{x}) p(x)或者该分布的一些性质。而监督学习则是观测随机向量 x \mathbf{x} x及其相关联的向量 y \mathbf{y} y,然后从 x \mathbf{x} x预测 y \mathbf{y} y,即估计 p ( y ∣ x ) p(\mathbf{y}|\mathbf{x}) p(y∣x)的结果。概率的链式法则:
p ( x ) = p ( x 1 ∣ x 0 ) ⋅ p ( x 2 ∣ x 1 ) ⋅ p ( x 3 ∣ x 1 , x 2 ) ⋅ p ( x 4 ∣ x 1 , x 2 , x 3 ) ⋯ p ( x n ∣ x 1 , … , x n − 1 ) = ∏ i = 1 n p ( x i ∣ x 1 , … , x i − 1 ) \begin{aligned} p(\mathbf{x}) &= p(x_1 \mid x_0) \cdot p(x_2 \mid x_1) \cdot p(x_3 \mid x_1,x_2) \cdot p(x_4 \mid x_1,x_2,x_3) \cdots p(x_n \mid x_1,\dots,x_{n-1}) \\ &= \prod_{i=1}^{n} p(x_i \mid x_1, \dots , x_{i-1}) \end{aligned} p(x)=p(x1∣x0)⋅p(x2∣x1)⋅p(x3∣x1,x2)⋅p(x4∣x1,x2,x3)⋯p(xn∣x1,…,xn−1)=i=1∏np(xi∣x1,…,xi−1)意味着我们可以将其拆分成 n n n个监督学习问题,来解决表面上的无监督学习。
实际上,学习也是有其他范式的,比如半监督学习、多实例学习等,甚至有些算法并不是训练于一个固定的数据集,比如强化学习,算法会和环境进行交互,所以学习系统和训练过程会有一个反馈回路。但在大多数情况下,数据集是样本的集合,样本是特征的集合。
表示数据集的常用方法是设计矩阵。该矩阵的每一行包含一个不同的样本,每一列对应不同的特征。当然,并不是所有的样本都可以表示成维度相同的向量,进而构成设计矩阵,这种就属于异构数据,需要特殊处理。
参数向量:是系数,是控制系统行为的值,是决定每个特征如何影响预测结果的权重。
泛化
本节讨论机器学习算法的泛化问题。通常情况下,训练机器学习模型的时候,可以在训练集上计算一些称为训练误差的度量误差,训练的目标是降低训练误差,这部分和优化问题类似,但是,机器学习任务希望泛化误差(新输入的误差期望)同样很低。当我们只能观测到训练集的时候,如何才能知道在测试集的性能呢?利用统计学习理论,对训练集和测试集的收集方式做些假设,即独立同分布假设。
决定机器学习算法效果的两个因素:
- 降低训练误差。
- 缩小训练误差和泛化误差的差距。
这两个因素对应着机器学习的两个主要挑战:欠拟合和过拟合,前者是模型不能在训练集上获得足够地的误差,后者则是两个误差之间的差距太大。而我们可以通过调整模型的容量来控制模型是否欠拟合或者过拟合。容量是指其拟合各种函数的能力。一种控制训练算法容量的方法是选择假设空间,即学习算法可以选择解决方案的函数集。比如,常见的一种做法是引入输入的高次项作为额外特征,有利于求解原来低次项的系数(参数)。还有一种控制算法容量的方法是增加输入特征的数目。当然,模型才是决定容量的根本,模型的表示容量是指学习算法可以在哪些函数族中选择函数,模型的有效容量是指可以大大降低训练误差的函数(对应理论上的最优函数)。
提高机器学习模型泛化能力早期的一个简约原则,就是著名的奥卡姆剃刀:在同样能够解释已知观测现象的假设中,选择最简单的那一个。
统计学习理论提供了量化模型容量的不同方法,最有名的方法是VC维。VC维度量二元分类器的容量,定义为该分类器能够分类的样本的最大数目。通常,当模型容量上升的时候,训练误差会下降,泛化误差会是一个先下降再上升的“U”型误差。
非参数模型:没有“参数向量的个数是有限且固定”的限制。实际上,非参数模型大多数是一些理论抽象,但有可以设计一些使用的,比如使得它们的复杂度和训练集大小有关,一个示例就是最邻近回归。我们可以将一个参数学习算法嵌入另一个增加参数数目(次数)的算法来创建非参数学习算法。
贝叶斯误差:从预先知道的真是分布预测而出现的误差。任何模型容量小于最优容量的固定参数模型会渐进到大于贝叶斯误差的误差值。值得注意的是,具有最优容量的模型仍然有可能在训练误差和泛化误差之间存在很大的差距,在这种情况下,我们可以通过收集更多的训练样本来缩小差距。
没有免费午餐定理:
机器学习保证找到一个在所关注的大多数样本上可能正确的规则,而不是纯逻辑推理整个确定性法则。然而,在所有可能的数据生成分布上平均之后,每一个分类算法在未事先观测的点上都有相同的错误率,换句话将,没有一个机器学习算法总比其他的好。
正则化:
前面的讨论说明机器学习算法必须在特定的任务上,所以,我们建立一组学习算法的偏好来达到这个要求。例如,可以加入权重衰减来修改线性回归的训练标准,其偏好于平方二范数较小的权重,基于此,线性回归的最小化问题就变成:
J ( ω ) = M S E t r a i n + λ ω T ω