第一章虽是 Introduction,但也有不少值得学习的地方。在此简单记录一下对我有所启发的点。
1、从多项式曲线拟合谈起
蓝⾊圆圈表示由 个数据点组成的训练集。每个数据点由输⼊变量 的观测以及对应的⽬标变量 组成。绿⾊曲线给出了⽤来⽣成数据的 函数(数据点被噪声干扰,落在绿色曲线附近)。我们的⽬标是对于某些新的 值,预测 的值。
假设我们使用多项式函数来拟合数据:
虽然多项式函数 是 的⼀个⾮线性函数,但它是系数 的线性函数。这种关于未知参数满⾜线性关系的函数有着重要的性质,被叫做线性模型。
误差函数衡量了对于任意给定的 值,函数 与训练集数据的差别。⼀个简单且应⽤⼴泛的误差函数是每个数据点 的预测值 与⽬标值 的平⽅和。所以我们最⼩化
我们可以通过选择使得 尽量⼩的 来解决曲线拟合问题。
由于误差函数是系数 的二次函数,因此它关于系数的导数是 的线性函数,故误差函数的最⼩值对应唯⼀解,记作 ,可以⽤解析的⽅式求出。最终的多项式函数由函数 给出。
然而还有一个悬而未决的问题就是多项式次数 的选择,这实际上是⼀个被称为模型对⽐(model comparison)或者模型选择(model selection)的重要问题的⼀个特例。
上图展示了 的不同取值对应的最优系数的值以及在训练集和测试集上的性能。不难发现,随 增大,模型在训练集上的误差不断变小,得到的最优系数值的振荡也越来越明显,当 时,模型可以完美拟合训练集,但在测试集上表现非常差,这就是所谓的过拟合。
为什么会产生这样的现象呢?这是因为模型的学习能力过于强大,使得学习到的多项式函数过多地拟合了训练集中的随机噪声。
有趣的事,对于⼀个给定的模型复杂度,当数据集的规模增加时,过拟合问题变得不那么严重。换句话说,数据集规模越⼤,我们能够⽤来拟合数据的模型就越复杂。
这是不是告诉我们一个经验:数据点的数量不应该⼩于模型的可调节参数的数量的若⼲倍呢?并非如此。作者提到,参数数量对于模型复杂度的多数合理度量来说都不是必要的。
实际上,根据可得到的训练集的规模限制参数的数量明显是不合理的。更加合理的做法应当是根据待解决的问题的复杂性来选择模型的复杂性。因此如何应⽤有限规模的数据集也是很有意义的。在这种情况下,我们可能期望建⽴相对复杂和灵活的模型。经常⽤来控制过拟合现象的⼀种技术是正则化(regularization)。这种技术涉及到给误差函数增加⼀个罚项,使得系数不会达到很⼤的值。这种惩罚项最简单的形式采⽤所有系数的平⽅和的形式。这推导出了误差函数的修改后的形式:
上图展示了 时加入正则项对模型复杂度的影响。不难看出,正则化对防止过拟合起到了重要作用。
随之而来的问题就是,如何选择合适的 呢?我们可以抽出一部分数据作为验证集,来进行 等超参数的选择,但这有点浪费训练数据(尤其是训练数据并不充裕时)。因此我们需要寻找更加高级的方法。
2、概率论视角下的多项式拟合问题
上面的多项式拟合是经典的解决方案,也是非常直觉性的。然而简单粗暴的解法总是让人心怀疑问,比如为什么损失函数要选择平方和的形式。这些问题在概率视角中实际上是基于某些合理假设得到的自然结果。
在进入正题前,我们先来看一下经典的贝叶斯学派和频率学派的观点。
上式是经典的贝叶斯定理。 表示先验概率,由观察到数据之前关于参数 的假设得到。观测数据 的影响则可以通过条件概率 表达。
其中 由观测数据集 来估计,可以看成参数向量 的函数,被称为似然函数(likelihood function)。它表达了在不同的参数向量 下,观测数据 出现的可能性的⼤⼩。
给定似然函数的定义,我们可以如下表述贝叶斯定理:
上式中所有项都可视作 的函数。将左右两侧对 积分得到:
因此我们可以⽤先验概率分布和似然函数来表达贝叶斯定理的分母。实质上我们可以直接将其视作归一化因子,不必予以过多关注。
在贝叶斯学派观点和频率学派观点中,似然函数 都起着重要的作⽤。然⽽,在两种观点中,使⽤似然函数的⽅式有着本质的不同。在频率学派观点中, 被认为是⼀个固定参数,它的值由某种形式的“估计”来确定,估计误差通过考察可能的数据集 的概率分布来得到。相反,从贝叶斯的观点来看,只有⼀个数据集 (即实际观测到的数据集),参数的不确定性通过 的概率分布来表达。
频率学派⼴泛使⽤的估计是最⼤似然(maximum likelihood)估计,其中 的值是使似然函数 达到最⼤值的 值。这对应于使观察到的数据集出现概率最⼤的 的值。在机器学习的⽂献中,似然函数的负对数被叫做误差函数(error function)。由于负对数是单调递减的函数,最⼤化似然函数等价于最⼩化误差函数。
⼀种决定频率学派误差的⽅法是⾃助法(bootstrap)。这种⽅法中, 多个数据集使⽤下⾯的⽅式创造。假设我们的原始数据集由 个数据点 组成。我们可以通过随机从 中有放回地抽取 个点的⽅式,创造⼀个新的数据集 。这个过程可以重复 次,⽣成 个数据集,每个数据集的⼤⼩都是 。参数估计的准确性之后就可以通过考察不同的⾃助数据集上的预测之间的变化大小来进⾏评估。
贝叶斯观点的⼀个优点是对先验概率的包含是很⾃然的事情。例如,假定投掷⼀枚普通的硬币3次,每次都是正⾯朝上。⼀个经典的最⼤似然模型在估计硬币正⾯朝上的概率时,结果会是1,表⽰所有未来的投掷都会是正⾯朝上!相反,⼀个带有任意的合理的先验的贝叶斯⽅法将不会得出这么极端的结论。但成也萧何败也萧何,针对贝叶斯⽅法的⼀种⼴泛的批评就是先验概率的选择通常是为了计算的⽅便⽽不是为了反映出任何先验的知识。某些⼈甚⾄把贝叶斯观点中结论对于先验选择的依赖性的本质看成困难的来源。实际上当先验选择不好的时候,贝叶斯⽅法有很⼤的可能性会给出错误的结果。频率学派估计⽅法则在⼀定程度上避免了这⼀问题。
以上就是频率学派和贝叶斯学派的一些观点,下面我们把上述多项式曲线拟合问题纳入此框架。
我们假定,给定 的值,对应的 值服从⾼斯分布,分布的均值为 ,因此,我们有(这里 是精度参数,它对应于分布⽅差的倒数):
图形化表示如下:
我们现在有训练数据 ,通过最⼤似然⽅法,来决定未知参数 和 的值。如果数据假定从上述中抽取,那么似然函数为:
对数似然函数为:
我们可以省略右侧的最后两项,因为他们不依赖于 。并且我们注意到,使⽤⼀个正的常数系数来缩放对数似然函数并不会改变关于 的最⼤值的位置,因此我们可以⽤ 来代替系数 。最后,我们不去最⼤化似然函数,⽽是等价地去最⼩化负对数似然函数。于是我们看到,在⾼斯噪声的假设下,平⽅和误差函数是最⼤化似然函数的⼀个⾃然结果。
假设由此得到的最大似然估计为 和 ,则现在可以对新的 的值进⾏预测。由于我们现在有⼀个概率模型,预测可以通过给出 的概率分布的预测分布(predictive distribution)⽽不仅仅是点估计。预测分布如下:
现在让我们朝着贝叶斯的⽅法前进⼀步,引⼊在多项式系数 上的先验分布。简单起见,我们考虑下⾯形式的⾼斯分布:
其中� 是分布的精度, 是对于 阶多项式的向量 的元素的总数。像�这样控制模型参数分布的参数,被称为超参数(hyperparameters)。使⽤贝叶斯定理, 的后验概率正⽐于先验分布和似然函数的乘积:
给定数据集,通过寻找最可能的 值(即最⼤化后验概率)来确定 。这种技术被称为最⼤后验(maximum posterior),简称 MAP。取负对数,我们可以看到,最⼤化后验概率就是最⼩化下式:
我们看到最⼤化后验概率等价于最⼩化正则化的平⽅和误差。正则化参数为� 。
虽然我们已经谈到了先验分布,但是我们⽬前仍然在进⾏ 的点估计,这并不是贝叶斯观点。在纯粹的贝叶斯⽅法中,我们应该⾃始⾄终地应⽤概率的加和规则和乘积规则。我们稍后会看到,这需要对所有 的值进⾏积分。对于模式识别来说,这种积分是贝叶斯⽅法的核⼼。
在曲线拟合问题中,我们知道训练数据 和 ,以及⼀个新的测试点 ,我们的⽬标是预测 的值。因此我们想估计预测分布 。这⾥我们要假设参数� 和 是固定的,事先知道的(后续章节中会讨论它们如何通过贝叶斯⽅法从数据中推断出来)。
简单地说,贝叶斯⽅法就是⾃始⾄终地使⽤概率的加和规则和乘积规则。因此预测概率可以写成下⾯的形式:
这里 是参数的后验分布。对于曲线拟合这样的问题,后验分布是⼀个⾼斯分布,可以解析地求出。类似地,上式的积分也可以解析地求解。因此,预测分布由⾼斯的形式给出:
其中,均值和⽅差分别为:
这⾥,矩阵 由下式给出:
向量 被定义为 。
我们看到,预测分布的均值和⽅差依赖于 。 计算公式的第⼀项表⽰预测值 的不确定性,这种不确定性由⽬标变量上的噪声造成。在最⼤似然的预测分布中,这种不确定性通过 表达。然⽽,第⼆项也对参数 的不确定性有影响。这是贝叶斯⽅法与频率学派的结果不同的地方。
⽤贝叶斯⽅法处理多项式曲线拟合问题得到的预测分布的结果如图。使⽤的多项式次数为 ,超参数被固定为� 和 。其中,红⾊曲线表⽰预测概率分布的均值,红⾊区域对应于均值周围� 1 标准差的范围。
3、维度灾难
在多项式曲线拟合的例⼦中,我们只有⼀个输⼊变量 。但是对于模式识别的实际应⽤来说,我们不得不处理由许多输⼊变量组成的⾼维空间。
书中考虑了⼀个⼈⼯合成的数据集,每个数据点由⼀个 12 维的输⼊向量组成。下图给出了数据集⾥的100个点,每个点只画出了两个分量 和 (为了说明的⽅便,剩余的 10 个分量被忽略)。
我们的⽬标是使⽤这个数据作为训练集,训练⼀个模型,能够对于⼀个新的 观测(例如图中被标记为叉的点)进⾏分类。直观看来,标记为叉的点的类别应该与训练集中它附近的点强烈相关,与距离⽐较远的点的相关性⽐较弱。因此⼀种简单的⽅式是把输⼊空间划分成⼩的单元格,如图。当给出测试点的时候,我们⾸先判断它属于哪个单元格,然后我们寻找训练集中落在同⼀个单元格中的训练数据点。测试点的类别就是测试点所在的单元格中数量最多的训练数据点的类别。
这种朴素的方法有一个问题,即当输入空间维数较高时,如果我们把空间的区域分割成⼀个个的单元格,那么这些单元格的数量会随着空间的维数以指数的形式增⼤。当单元格的数量指数增⼤时,为了保证单元格不为空,我们就不得不需要指数量级的训练数据。
此外,我们在三维空间中建⽴的⼏何直觉会在考虑⾼维空间时不起作⽤。例如,考虑 维空间的⼀个半径 的球体,位于半径 和半径 之间的部分占球的总体积的百分⽐是多少?我们注意到, 维空间的半径为 的球体的体积⼀定是 的倍数,因此我们有:
其中常数 的值依赖于 。因此我们要求解的体积⽐就是:
我们看到,对于较⼤的 ,这个体积⽐趋近于 1,即使对于⼩的 也是这样。因此,在⾼维空间中,⼀个球体的⼤部分体积都聚集在表⾯附近的薄球壳上!⾼维空间产⽣的这种困难有时被称为维度灾难(curse of dimensionality)。
虽然维度灾难在模式识别应⽤中是⼀个重要的问题,但是它并不能阻⽌我们寻找应⽤于⾼维空间的有效技术。原因有两⽅⾯:第⼀,真实的数据经常被限制在有着较低的有效维度的空间区域中,特别地,在⽬标值会发⽣重要变化的⽅向上也会有这种限制;第⼆,真实数据通常⽐较光滑(⾄少局部上⽐较光滑),因此⼤多数情况下,对于输⼊变量的微⼩改变,⽬标值的改变也很⼩,因此对于新的输⼊变量,我们可以通过局部的类似于插值的技术来进⾏预测。成功的模式识别技术会利⽤上述的两个性质中的⼀个或者两者都⽤。
4、决策论
在给定合适的概率的前提下,如何进⾏最优的决策,是决策论的主题。
考虑⼀个医疗诊断问题。在这个问题中,我们给⼀个病⼈拍了X光⽚,我们想判断病⼈是否得了癌症。当我们得到⼀个新病⼈的X光⽚ 时,我们的⽬标是判断 属于两类中的哪⼀类。我们感兴趣的是在给定这个图像的前提下 属于两个类的概率,即 。使⽤贝叶斯定理有:
4.1、最⼩化错误分类率
假定我们的⽬标很简单,即尽可能少地作出错误分类。我们需要⼀个规则来把每个 的值分到⼀个合适的类别。这种规则将会把输⼊空间切分成不同的区域 ,这种区域被称为决策区域(decision region)。每个类别都有⼀个决策区域,区域 中的所有点都被分到 类。决策区域间的边界被叫做决策边界(decision boundary)。
如果我们把属于 类的输⼊向量分到了 类(或者相反),那么我们就犯了⼀个错误。这种事情发⽣的概率为:
很明显,为了最⼩化 ,我们对于 的分类结果应该让被积函数尽量⼩。因此对于给定的 值,如果 ,那么我们就把 分到类别 中。根据概率的乘积规则,我们有 。由于因⼦ 对于两项都相同,因此我们可以这样表述:如果我们把每个 分配到后验概率 最⼤的类别中,那么我们分类错误的概率就会最⼩。
上图表示两个类别的联合概率分布 与 的关系,以及决策边界 。 的值被分类为 ,因此属于决策区域 ,⽽ 的值被分类为 ,属于区域 。错误出现在蓝⾊、绿⾊和红⾊区域。
当我们改变决策边界 时,绿⾊区域和蓝⾊区域的总⾯积是⼀个常数,⽽红⾊区域的⾯积发⽣改变。因此 的最优选择是 的曲线与 的曲线的交点 ,此时红⾊区域消失。这等价于最⼩化错误分类率的决策规则,这个规则将 分配到具有最⼤后验概率 的区域中。
4.2、最⼩化期望损失
对于许多应⽤,我们的⽬标要⽐单纯地最⼩化错误分类的数量更加复杂。让我们再次考虑医疗诊断的问题。我们注意到,如果已给没有患癌症的病⼈被错误地诊断为患病,结果可能给病⼈带来⼀些压⼒,并且病⼈可能需要进⼀步确诊。相反,如果患癌症的病⼈被诊断为健康,结果可能会因为缺少治疗⽽使病⼈过早死亡。因此这两种错误的结果是相当不同的。很明显,对于第⼆种错误,我们最好少犯,甚⾄由于少犯第⼆种错误会导致第⼀种错误增加也没关系。
我们可以通过损失函数(loss function)来形式化地描述这个问题。假设对于新的 的值,真实的类别为 ,我们把 分类为 (其中 可能与 相等也可能不等)。这样做我们会造成某种程度的损失,记作 ,它们可以组成损失矩阵(loss matrix):
因此,我们转⽽去最⼩化平均损失。平均损失根据联合概率分布计算:
和之前⼀样,我们可以使⽤乘积规则 来消除共同因⼦ 。因此,最⼩化期望损失的决策规则是对于每个新的 ,把它分到能使下式取得最⼩值的第 类:
⼀旦我们知道了类的后验概率 ,这件事就很容易了。
4.3、拒绝选项
在发⽣分类错误的输⼊空间中,后验概率 通常远⼩于1,或者等价地,不同类别的联合分布 的值差不多。此种情况下,样本属于哪一类相对不确定。在某些应⽤场景中,对于这种困难的情况,避免做出决策是更合适的选择。这样会使得模型的分类错误率降低。这被称为拒绝选项(reject option)。例如,在医疗的例⼦中,⼀种合适的做法是,使⽤⾃动化的系统来对那些⼏乎没有疑问的X光⽚进⾏分类,然后把不容易分类的X光⽚留给⼈类的专家。
我们可以⽤这种⽅式来达到这个⽬的:引⼊⼀个阈值 �,拒绝后验概率 的最⼤值⼩于等于 �的那些输⼊ 。
注意,令 会使所有的样本都被拒绝,⽽如果有 个类别,那么令� 将会确保没有样本被拒绝。因此被拒绝的样本⽐例由� 的值控制。
4.4、推断和决策
我们可以把分类问题划分为两个阶段:推断(inference)和决策(decision)。在推断阶段,我们使⽤训练数据学习 的模型。在接下来的决策阶段,我们使⽤这些后验概率来进⾏最优的分类。另⼀种⽅法是,同时解决两个问题,即简单地学习⼀个函数,将输⼊ 直接映射为决策。这样的函数被称为判别函数(discriminant function)。
事实上,我们可以细分出三种不同的⽅法来解决分类问题,复杂度由高到低是:
⾸先对于每个类别 ,独⽴地确定类条件密度 。这是⼀个推断问题。然后,推断先验类概率 。之后,使⽤贝叶斯定理求出后验类概率 。得到后验概率之后,我们可以使⽤决策论来确定每个新的输⼊ 的类别。这种⽅法被称为⽣成式模型(generative model),因为我们可以⼈⼯⽣成出输⼊空间的数据点。
⾸先解决确定后验类密度 的推断问题,然后⽤决策论对新的输⼊ 进⾏分类。这种直接对后验概率建模的⽅法被称为判别式模型(discriminative models)。
找到⼀个函数 ,被称为判别函数。这个函数把每个输⼊ 直接映射为类别标签。例如,在⼆分类问题中, 可能是⼀个⼆元的数值, 表⽰类别 , 表⽰类别 。这种情况下,概率不起作⽤。
这三种方法有何优劣呢?
⽅法一需要求解的东西最多,因为它涉及到寻找在 和 上的联合概率分布。对于许多应⽤, 的维度很⾼,这会导致我们需要⼤量的训练数据才能在合理的精度下确定类条件概率密度。注意,先验概率 经常能够根据训练数据集⾥的每个类别的数据点所占的⽐例简单地估计出来。但是,方法一的⼀个优点是,它能够求出数据的边缘概率密度 。这对于检测模型中具有低概率的新数据点很有⽤,这种技术被称为离群点检测(outlier detection)或者异常检测(novelty detection)。
然⽽,如果我们只想进⾏分类的决策,那么⽅法一会浪费计算资源。因为实际上我们只是想求出后验概率 (可以直接通过⽅法二求出)。为了求出它,方法一需要⼤量的数据来寻找联合概率 。但事实上,类条件密度可能包含很多对于后验概率⼏乎没有影响的结构,如下图所示。
注意,左图中,蓝⾊曲线表⽰类条件概率密度 ,它的峰值对于后验概率分布没有影响。右图中的垂直绿⾊直线表⽰给出最⼩误分类率的 的决策边界。我们假设先验概率分布 和 是相等的。
更简单的⽅法是⽅法三。这种⽅法中,我们使⽤训练数据来寻找将每个 直接映射为类别标签的判别函数 。这样,我们就把推断阶段和决策阶段结合到⼀个学习问题中了。在上图的例子中,这对应于绿⾊竖直线给出的 的值,因为这是给出最⼩错误分类概率的决策边界。
但是,使⽤⽅法三,我们不再能够得到后验概率 。但后验概率在很多情况下非常有用,比如:
最⼩化风险。考虑这样⼀个问题,问题中损失矩阵的元素时时刻刻都被修改(⾦融应⽤中可能出现的情况)。如果我们知道后验概率,我们只需要恰当地修改所定义的最⼩风险决策准则即可。如果我们只有⼀个判别准则,那么损失矩阵的任何改变都需要我们返回训练数据,重新解决分类问题。
拒绝选项。如果给定被拒绝的数据点所占的⽐例,后验概率让我们能够确定最⼩化误分类率的拒绝标准,或者在更⼀般的情况下确定最⼩化期望损失的拒绝标准。
补偿类先验概率。重新考虑医疗X光问题,由于癌症在普通⼈群中很少见,我们可能发现1000个样本中只有1个对应癌症。如果我们使⽤这样的数据集来训练⼀个模型,由于癌症类别所占的⽐例很⼩,⼀个将所有的点都判定为正常类别的分类器就已经能够达到99.9%的精度。这不太可能具有很好的泛化性。⼀个平衡的数据集⾥,我们已经从每个类别中选择了相等数量的样本,这让我们能够找到⼀个更加准确的模型。然⽽,我们之后就必须补偿修改训练数据所造成的影响。因此我们可以把从⼈造的平衡数据中得到的后验概率除以数据集⾥的类⽐例,再乘以我们想要应⽤模型的⽬标⼈群中类别的⽐例(这一比例可以从更大的数据集上估计得到)即可。
组合模型。对于复杂的应⽤来说,我们可能希望把问题分解成若⼲个⼩的⼦问题,每个⼦问题都可以通过⼀个独⽴的模型解决。在医疗诊断问题中,我们可能有来⾃⾎液检查的数据,以及X光⽚的数据。我们不把所有的这种同样类型的信息集中到⼀个巨⼤的输⼊空间中,⽽是建⽴⼀个系统来表⽰X光⽚⽽另⼀个系统来表⽰⾎液数据。这样做效率更⾼。只要两个模型都给出类别的后验概率,我们就能够使⽤概率的规则系统化地结合输出:
上式由第一行到第二行的推导基于的独⽴性假设是朴素贝叶斯(naive Bayes)的例⼦。