Introduction
这是一本概率统计进阶版本的知识点理解书籍,相关内容基于作者个人学习工作中的理解整理。各位读者如有相关问题和建议可以在相应的github库中以issue形式提交,作者欢迎各种批评指正,但鉴于个人时间有限,目前更新周期不定,请谅解。作者个人详情可登录作者的个人网站了解
Contributing
本电子书可以在作者的个人github上找到相关源码,社区维护依赖于issue,具体修正由作者本人管理操作。
License
本书开源代码和文档使用GPLv3协议,商业用途必须联系作者,否则自负相关法律责任。Copyright by 施华。
NO.1.tip: 条件期望
背景
许多故事的开始似乎总有那样的身影让我们似曾相识......
1800年代Francis Galton第一次用回归一词命名了一种朝向均值的现象模型,计量经济学中为了分析条件概率也常常使用其对应的一阶矩进行建模分析,这些数学模型在概率统计中拥有着一个共同的名字——条件期望。从经典的回归到计量经济学,从现在的深度学习到强化学习,它一直出现在每一个故事的许多角落,或开始、或中章、或结尾。下面让我们一起缓缓揭开条件期望的面纱。
源与流
首先,我们使用测度论中的Radon Nikodym定理给出条件期望的严格定义。设是一个概率空间,是它上面积分存在的随机变量。又设是的子-域,即是一个上的域,而且。对每个,令 易见是上的符号测度,它和限制在上的测度之间有关系。因此,由Radon Nikodym定理知,存在上意义下唯一的可测函数,使对每个有(这个可测函数之所以记为,是因为它既与有关,又与有关)。利用的性质,可以把条件期望公理化地定义如下:
设为概率空间上积分存在的随机变量。称为关于的子域的条件期望,如果
(1) 是上积分存在的可测函数;
(2) 对任何,有
从通俗意义上理解,条件期望即是一种符号测度对一种测度的Radon Nikodym导数,而严格的Radon Nikodym导数定义如下:
设是测度空间上的符号测度。如果存在意义下唯一的可测函数使下式成立,则称为对的Radon Nikodym导数
从几何意义上理解,条件期望是到空间的一种正交投影算子,因此它也会具有正交投影的特殊性质:
(1) 正交投影算子可以有效地将向量从一个低维空间映射到另一个低维空间,而不会破坏其所表示的特征信息;
(2) 正交投影算子的作用是可逆的,双向投影结果完全一致。
条件期望正因它具有如此良好的性质,才让我们在许多场景中使用它来建模现实。那么,接下来问题来了,我们如何明确一个条件期望呢?换一个角度思考条件期望,比如,在观察之前,并不知道的值,所以条件期望本质上是一种随机变量。循着这个思路,我们知道,为了确定一个随机变量,我们往往需要对其概率分布建模,而在统计学中,我们通常会假设样本来自一个给定的。我们将这样的函数称为概率密度函数,然后采用各种方法去估计参数。由此引出一个关键概念——估计量,对于这个估计量,有多种方法求得。常见的方法有矩估计、极大似然估计、贝叶斯估计和EM算法。
在此,故事已开始,精彩待纷呈。后续,我们会开始进入到估计量的四大估计方法的传奇旅程。
NO.2.tip: 矩估计
背景
矩法也许是最早的求点估计量的方法,至少可以追溯到19世纪末的KarlPearson。此法的优点是使用很简单,从而几乎总是可以求出估计值。尽管令人遗憾的是在很多情况下,矩法导出的估计量还需要改进,但是在其他方法难以实施的时候,它仍然不失为一个很好的工作起点。另外,它也可以作为其他需要循环几次的算法的初始值。
源与流
设是来为其概率密度函数的总体的样本。矩法估计量这样得到的:令前阶的样本句子矩与相应的前阶总体矩相等,这样就得到一个联立方程组,求解之,就得到矩统计量。更清楚地说,我们定义
在典型的情况下,总体矩是参数的一个函数,可以记作。于是的矩法估计量就可以通过求解下面的关于的方程组 得到。
值得一提的是,在计量经济学的世界中,矩法已是大名鼎鼎的明星。它是工具变量法(Instrumental Variable,IV)和广义矩估计法(Generalized Moment Method,GMM)的基础。在矩估计法中关键是利用了由随机干扰项的条件均值零假设所推出的非条件零均值特性,以及随机干扰项各解释变量间同期不相关特性作为总体矩条件。如果某个解释变量与随机干扰项相关,只要能找到1个工具变量,仍然可以构成一组矩条件,这就是工具变量法。如果存在大于个变量与随机干扰项不相关,可以构成一组包含大于个方程的矩条件,这就是广义矩估计法。
NO.3.tip: 最大似然估计
背景
最大似然估计是统计中的一个重要理论框架,作为一门优化技术,他用最朴素的表达--凸优化--描绘了机器学习的万里长卷
源与流
首先,我们了解一下什么是似然函数。考虑上的一族概率分布,每个概率分布对应一个向量,概率密度为。固定,可以看成的函数,成为似然函数。事实上,考虑似然函数的对数更为方便,我们称为对数-似然函数,用表示,即 通常对参数都有一些曰肃,可以作为x的先验知识,或者是似然函数的定义域。
现在考虑如下问题,根据观测到的服从分布的一个样本,估计参数的值。最大似然估计就是一种广为采用的方法,其中参数的估计为 即选择使得似然(或者对数似然)函数在的观测值处最大的那个参数值作为的估计只。如果我们有关于的先验信息,比如说,我们可以显示添加约束,或者隐式添加约束,当时,定义为。
求取参数向量的最大似然估计问题可以表述如下: 其中给出了参数向量的先验信息或者其他约束。在这个优化问题中,向量(在概率密度中是参数)是优化变量,向量(观测到样本)是问题参数。
对于的每个观测值,如果对数-似然函数都是凹的,且集合可以表述为线性等式约束以及凸不等式约束的组合,那么最大似然估计问题是凸优化问题。事实上,很多这一类问题都满足这个条件。对这些问题,可以通过凸优化确定最大似然估计。
现在,我们已经清楚了最大似然估计的优化表达,如何应用到具体算法场景中呢?不要着急,我们需要加入一个叫(独立同分布)的假设,才能让足底啊似然估计真正落地。
考虑线性测量模型 其中,是待估计参数向量,是测量量或观测量,是测量误差或者噪声。假设独立同分布,在上具有概率密度,此时似然函数为 因此对数-似然函数为 最大似然估计是下面优化问题的任意一个最优点: 其中优化变量为。如果概率密度是对数-凹的,此优化问题是凸优化问题。
在有了假设后,我们还不能去优化似然函数,因为其中的概率分布还没有明确的解析表达。接下来,我们通过为噪声指定具体分布的方式来确定似然函数的明确解析表达,进而凸优化问题可解。常见的分布有以下两种:
Gauss噪声:当是Gauss噪声,均值为,方差为时,概率密度函数为,则对数-似然函数为: 其中矩阵的行向量为。因此的最大似然估计为,也即范数逼近问题的解。
Laplace噪声:当服从Laplace分布时,即具有概率密度,其中。的最大似然估计为,也即范数逼近问题的解。
在这里,我们也可以从最大似然估计的角度理解范数逼近在大误差情况下的鲁棒性。可以将范数逼近问题看成是概率密度函数是Laplace函数的最大似然估计;范数逼近问题可以看成是噪声服从Gauss分布的最大似然估计。Laplace密度函数比Gauss密度函数具有更大的截尾,即对于Laplace密度函数,取值很大的概率远远大于Gauss密度函数的情况。因此,相应的最大似然估计方法将会接收更多大残差。
NO.4.tip: 贝叶斯估计
背景
很多情况下,我们都会遇到预测方差过高问题,它的一个常见表现就是过拟合。想要缓解甚至处理方差过高问题,我们要了解的是参数不确定性。以下是参数不确定性的定义以及它对预测方差的影响:
假设模型参数化线性模型 是基函数(高次多项式、神经网络特征等)待估参数。对固定,预测 是由随机数据集得到的参数估计,本身是随机变量,参数不确定性即为
有了参数不确定性的定义,我们就可以推导其对预测方差的影响: 是参数协方差矩阵,对角线为各参数方差,刻画了参数整体不确定性。我们发现,预测方差是参数协方差矩阵的二次型:
(1)只要参数存在不确定性(非零,特征值大),预测方差一定上升
(2)参数越不确定(越大),同等特征下预测波动越强,模型方差越高
注意,是协方差矩阵,对矩阵的不确定性度量一般从以下四个角度入手:
(1)迹,所有参数自身方差想家,仅累加单参数波动,忽略参数间相关程度
(2)行列式,表征参数联合搞死分布置信椭球的体积,数值越大代表整体联合不确定性越高
(3)最大特征值(范数),捕捉参数空间波动最剧烈的单一方向,用来识别不稳定主成分
(4)Frobenious范数,整合全部方差与两两参数协方差,完整度量协方差矩阵整体波动能量
源与流
现在,我们知道了饿预测方差过高很大程度上来源于参数不确定性,那么我们就可以从这里入手。实际上,我们有两种思路:
(1)一种是缩小参数估计的范围,从而间接降低参数不确定性;
(2)一种是对参数不确定性完整建模,从而直接控制参数不确定性,这种思想源自于统计学的贝叶斯理论,是一种标准贝叶斯方法
首先,我们来看下第一种,缩小参数估计范围的思路。这种思想的两个典型例子就是Lasso回归和Ridge回归。
Ridge回归: Lasso回归:
接下来,我们再开看第二种思路,对参数不确定性完整建模--标准贝叶斯方法。我们先给出贝叶斯公式: 其中是关联的先验概率密度函数。我们对于以上狮子不再仅仅是要使分子最大,还要将作为一个整体来使用。这里,秘密大部分在于分母,它基本上是归一化常数:
正如我们看到的,在中隐藏的信息远远超过了知识为了计算的需要。上式的计算难点在于,一般来说,积分的估计没有解析计算方法。在这种情况下,人们需要借助近似技术来获得所需的信息。为了这个目的,可以使用很多种方法,更具体地说,我们将考虑以下这些方法:
(1)拉普拉斯近似法
(2)变分近似法
(3)蒙特卡洛积分求值技术
NO.5.tip: 变分推理
背景
数学上,变分法就是求使积分泛函取极值的未知函数,相当于函数版的求导找最值。统计上,考虑一个具有未知(潜在)变量 、已知变量 和固定参数 的模型。(如果参数未知,可以将这些参数添加到 中,稍后我们将展开讨论。)我们假设先验为 ,似然为 ,因此未归一化联合概率为 ,后验为:
由于我们在函数(即分布 )上最小化,所以这被称为变分方法。在实践中,我们选择一个参数族 ,在此处我们使用 ,称为变分参数,来指定我们使用的是族中的哪一个成员。对于给定的 ,我们可以使用以下公式来计算最佳变分参数:
一般而言,最后一项 难以计算。幸运的是,该项独立于 ,因此我们可以忽略该项。结果,我们留下了第一个项,可以记作:
最小化这个目标将最小化 KL 散度,使我们的近似接近真正的后验。
源与流
因为KL散度非负,则
第一项的负值被称为证据下界函数:
"证据下界"这个名字的产生是因为:
其中, 被称为"证据"。因此,最大化相对于 的证据下界将最小化原始 KL 散度,因为 相对于 是一个常数。(请注意:我们使用符号 来表示证据下界,而不是 ,因为我们希望最大化 ,但最小化 。)
我们可以将证据下界重写如下:
我们可以将其解释为:
证据下界 = 期望对数联合概率 + 熵
第二项鼓励后验具有最大熵,而第一项鼓励后验成为联合最大后验估计配置。
我们也可以将证据下界重写为:
我们可以将其解释为:
证据下界 = 期望对数似然 - 从后验到先验的 KL 散度
KL 散度项的作用就像一个正则化因子,用于防止后验与先验偏离过多。
存在有两种主要的方法来选择变分后验 的形式。在第一种方法中,我们选择一种方便的函数形式,例如多元高斯分布,然后使用基于梯度的方法优化证据下界。这被称为固定形式变分推理。另一种方法是进行均值场假设,即后验因子分解:
其中, 是第 组变量的后验。我们不需要为每个 指定函数形式。相反,通过以坐标上升的方式,一次一个地最大化相对于每组变分参数的证据下界,来推导出最优分布形式。因此,这被称为自由形式变分推理。
下界最大化(即标准变分推理)存在的一个问题是,我们正在最小化 ,这会导致迫零性行为,这意味着 往往过于紧凑(过于自信),以避免 但 的情况,这将导致无限的 KL 惩罚。
尽管迫零性对于一些多模态后验(例如,混合模型)来说可能是理想的行为,但对于许多单模态后验来说(例如,贝叶斯逻辑回归或者具有对数凹似然的高斯过程)就不那么合理了。避免这个问题的一种方法是最小化 ,这是避零性,这往往会导致广泛的后验分布,从而避免过度自信。在本节中,我们讨论期望传播。期望传播可以被视为 的局部近似。
NO.6.tip: 马尔可夫链蒙特卡罗方法
背景
我们经常需要计算随机变量的某个函数的期望值 。这需要计算以下积分:
其中,,, 是 的目标分布。在低维度(例如3维)中,我们可以使用数值积分有效地计算上述积分。数值积分(自适应地)计算网格,然后评估网格上每个点的函数。但这无法扩展到更高的维度。
另一种方法是抽取多个随机样本 ,然后计算:
这被称为蒙特卡罗积分。与数值积分相比,蒙特卡罗积分的优势在于,函数只在概率不可忽略的地方进行评估,因此不需要均匀覆盖整个空间。特别是,可以证明,精度原则上与 的维度无关,仅取决于样本数量 。关键在于,我们首先需要一种生成样本 的方法。
有几种常见的确定性的采样方式:
逆概率变换:用随机数"反查"概率分布的累积函数,把均匀随机变量变成服从目标分布的样本,从而用样本均值近似任意复杂函数的积分。
拒绝采样:在目标分布难以直接采样时,用一个容易采样的"建议分布"生成候选点,然后按目标分布与建议分布的比值概率接受或拒绝这些点,最终保留下来的样本就服从目标分布,进而用于蒙特卡洛积分。
重要性采样:不直接从目标分布采样,而是从一个更容易采样的"建议分布"中抽取样本,然后给每个样本赋予一个权重(目标密度与建议密度之比)来修正偏差,让积分估计更集中在函数值大的区域,从而降低方差、提高效率。
确定性方法用规则网格铺满空间,误差 随维度指数恶化;蒙特卡洛用随机样本估计期望,误差 与维度无关,只取决于样本数N——前者靠"覆盖"换精度,后者靠"概率"换自由。
源与流
因此,马尔可夫链蒙特卡罗方法就是这样一种流行的从高维分布中采样的方法。马尔可夫链蒙特卡罗方法背后的基本思想是在状态空间 上构建一个马尔可夫链,其平稳分布是感兴趣的目标密度 。(在贝叶斯上下文中,这通常是一个后验,,但马尔可夫链蒙特卡罗方法可以应用于从任何类型的分布生成样本。)也就是说,通过从链中抽取(相关的)样本 ,我们可以相对于 进行蒙特卡罗积分。
Metropolis-Hastings 算法的基本思想是,在每一步中,我们都建议从当前状态 移动到概率为 的新状态 ,其中 被称为提议分布(也称为核)。用户可以自由使用他们想要的任何类型的提议分布,但须遵守我们在下面解释的一些条件。这使得 Metropolis-Hastings 算法成为一种非常灵活的方法。
在提议移动到 之后,我们根据某种公式决定是接受还是拒绝这一提议,该公式确保在每个状态花费的长期时间与 成比例。如果提议被接受,则新状态为 ,否则新状态与当前状态 相同(即重复样本)。
如果提议是对称的,那么 ,接受概率由以下公式给出:
我们看到,如果 比 更有可能,那么我们肯定会移动到 (因为 $\dfrac{p^{}(x')}{p^{}(x)} > 1$),但如果 不太可能,我们仍然可能移动到 ,这取决于相对概率。因此,我们不是贪婪地只进入更可能的状态,而是偶尔允许"下坡"进入不太可能的状态。可以证明,该过程可以确保在每个状态 下花费的时间等于 。
如果提议分布是不对称的,那么 ,我们需要 Hastings 修正(Hastings correction),由以下公式给出:
这种修正是为了补偿提议分布本身(而不仅仅是目标分布)可能有利于某些状态的事实。
Metropolis-Hastings 算法之所以是一种有用算法的一个重要原因是,在评估 时,我们只需要知道达到归一化常数的目标密度。特别地,假设 ,其中 是未归一化分布, 是归一化常数。于是:
所以 可以消除。因此,即使 未知,我们也可以从 中采样。
Metropolis-Hastings 方法的主要问题是需要选择提议分布,以及接受率可能较低。还有一种经典方法吉布斯采样,该方法利用图模型的条件独立性来自动创建一个好的提议分布,接受概率为1。
NO.7.tip: 指数族分布
背景
指数分布在统计结构中占用重要地位,他得成员具有许多共同的重要性质,对这些性质的一般性讨论可以带来不少启发。
给定参数 ,关于 的指数族分布可以定义为以下形式的分布的集合:
其中 可以是标量或矢量,它可以是离散的或连续的。 则称为分布的自然参数, 是 的某个函数。函数 可以解释为用来确保分布被归一化的系数,因此满足
其中 若为离散变量,则积分改为求和。
源与流
首先考虑伯努利分布:
将式 (3) 的右侧表示为对数的指数,可得
与式 (1) 比较后,我们可以确定
对 进行求解可得 ,其中
它又称为sigmoid 函数。因此,我们可以使用以下标准表达式来描述伯努利分布:
这里使用了等式 ,其易由式 (6) 证得。与式 (1) 比较可得
接下来考虑多项分布,对于单个观测 ,其形式为
其中 。式 (11) 同样可以写成标准表达式:
其中 ,并且我们定义 。与式 (1) 比较可得
注意,参数 不是独立的,因为参数 受到下式的约束:
因此,对于给定的任意 个参数 ,剩余参数的值被固定。在某些情况下,通过仅用 个参数表达分布,可以方便地去除这一约束。这可以通过使用关系式 (16) 将 用剩余的 (其中 )表示,从而留下 个参数来实现。请注意,这些剩余参数仍然受到下式的约束:
利用约束式 (16),多项分布变为
现在我们确定了
可以通过首先对式 (19) 两边的 求和,然后重新排列和反向代入来求解 :
它又称为softmax 函数或归一化指数。因此在这种表示中,多项分布将采用以下形式:
这是带有参数向量 的指数族分布的标准形式。与式 (1) 比较可得
最后考虑高斯分布。对于一元高斯分布,我们有
经过一些简单的重排,就可以得到标准指数族分布的形式:
指数族分布在参数估计时具有很实际的性质,即它天然给出最小充分统计量(这来源于费曼分解定理),做参数估计时,只需要保存充分统计量,不需要存全部原始数据,大数据场景极致节省内存。
NO.8.tip: 核密度估计
背景
参数话的密度估计方法的一个关键局限是,所选择的密度模型可能是不适合数据分布的,这可能导致预测性能不佳。而非参数化的密度估计方法对分布的形式几乎不作任何假设。
直方图是非参数的一个良好灵感来源。标准直方图简单将 划分为互不相交的宽度为 的分箱,然后计算落在不同分箱中的观测值 的数量 。为了将此计数值转换为归一化的概率密度,我们可以将其简单地除以观测值总数 和分箱宽度 的乘积,以获得落入每个分箱的概率值:
可以看出,。这种方法就给出了密度 的一种模型,在每个分箱的宽度上,密度是恒定的。通常情况下,我们选择具有相同宽度的分箱,。
直方图方法也给密度估计带来了两条重要的经验。首先,要在特定位置估计概率密度,就应该考虑落在该位置某个局部邻域内的数据点。其次,为了获得良好的结果,平滑参数的值既不应该太大也不应该太小。
假设观测值是从某个 维空间(这里将其视为欧氏空间)中的某个未知概率密度 中产生的,我们希望估计 的值。根据先前关于局部性的讨论,考虑包含 的一个小区域 。与该区域相关联的概率质量为
假设我们已经收集了一个包含 个从 中产生的观测值的数据集。因为每个数据点在 内的概率为 ,所以 内的点的总数 将服从二项分布:
可以看出,落入该区域的点的平均占比为 。类似地,可以看出,此均值对应的方差为 。对于较大的 ,该分布在均值处将变得十分尖锐,因此
然而,如果我们同时假设区域 足够小,以至于概率密度 在该区域内大致保持恒定,则有
其中 是区域 的体积。结合式 (4) 和式 (5),可以得到密度估计的形式为
请注意,式 (6) 的有效性依靠两个相互矛盾的假设:区域 足够小,以至于密度在该区域内近似恒定;但区域 又足够大(与该区域内密度的值相关),使得落入该区域的点的数量 足以使二项分布变得十分尖锐。
我们可以通过两种不同的方式利用式 (6)。一种是固定 并根据数据确定 的值,这将引出后面讨论的 近邻技术;另一种是固定 并根据数据确定 的值,从而引出核密度估计技术。可以证明,当 时,只要 随着 以合适的速率缩小,而 随着 以合适的速率增长, 近邻密度估计和核密度估计都会收敛到真实概率密度。
源与流
下面详细讨论核密度估计技术。首先,对于希望确定概率密度的点 ,将区域 取为以点 为中心的超小立方体。为了计算落入该区域的点的数量 ,定义如下函数:
它表示以原点为中心的单位立方体。函数 是一个核函数,在这里,它又称为 Parzen 窗。根据式 (7),如果数据点 位于以点 为中心、边长为 的立方体内,那么量 将为 1,否则为 0。因此,位于该立方体内的数据点的总数为
将式 (8) 代入式 (6),可得点 处估计的密度为
这里使用了 维空间中超小立方体的体积公式 。利用函数 的对称性,我们可以不再将其视为以点 为中心的单个立方体,而是视为以 个数据点 为中心的 个立方体的总和,进而重新解释这个方程。
就目前情况来看,核密度估计 [式 (9)] 将遇到与直方图方法相同的一个问题,即存在人为的不连续性,此处体现在立方体的边界上。如果我们选择更平滑的核函数,则可以获得更平滑的密度模型。我们通常选择使用高斯函数,导出的核密度模型为
其中 代表所使用的高斯分量的标准差。因此,我们得到密度模型的方式是,首先在每个数据点上放置一个高斯分布,并将整个数据集的贡献相加,然后除以 来正确地归一化密度。正如预期的那样,我们可以看到参数 充当了平滑参数的角色,并且 较小时对噪声敏感,与 较大时过度平滑之间存在权衡。同样,类似于直方图密度估计中的分箱选择或曲线拟合中所使用多项式的阶数选择, 的优化是模型复杂性的问题。
我们可以选择任何其他核函数 ,只要满足以下两个条件即可。
这两个条件确保了得到的概率分布在任何地方都是非负的,并且积分为 1。由式 (9) 给出的这类密度模型称为核密度估计器或 Parzen 估计器。它们有一个很大的优点,就是在"训练"阶段不涉及计算,因为只需要将训练集存储起来即可。然而,这同时也是这类密度模型的一个巨大缺点,因为评估密度的计算成本会随着数据集的增大而线性增长。
NO.9.tip: K近邻密度估计
背景
使用核方法进行密度估计的一个难点在于,对所有核来说控制核宽度的参数 是固定的。在数据密度较高的区域,较大的 值可能导致过度平滑,并且可能淡化从数据中本应提取出的结构。然而,减小 值可能会导致在其他数据密度较低的区域产生噪声估计。因此, 的最佳选择可能取决于数据空间中的位置。这个问题可以通过使用最近邻方法进行密度估计来解决。
源与流
因此,下面我们重新回到局部密度估计的一般结果:
我们不使用固定 值并从数据中确定 值的方式,而是考虑固定 值并使用数据找到适当的 值。为此,对于希望估计密度 的点 ,考虑以点 为中心的小球,并允许小球的半径增长,直至恰好包含 个数据点。然后,密度 的估计由式(1)给出,其中 设置为小球的体积。这种技术称为 近邻。
相同数据集下,我们可以选择不同参数 时的 近邻密度估计。我们可以看到 值决定了模型的平滑程度,而且同样存在一个既不太大也不太小的最佳 值。注意 近邻产生的模型并不是一个真正的密度模型,因为其在整个空间上的积分是发散的。
NO.10.tip: AIC和BIC准则
背景
一般来说,训练误差
比真实的预测误差 小,因为同样的数据既被用于拟合,又被用于评估其误差(见习题7.9)。拟合算法往往会对训练数据本身(而不是真实的分布)产生适应性,因此训练误差 将会是对泛化误差 的过于乐观的估计。
两者产生差异的部分原因是测试观测的位置或评估点发生位置的不一样。 可以认为是样本集外的样本(extra-sample)误差,因为测试样本不必和训练样本一样。 的乐观本质在我们仅关注样本集内的样本(in-sample)误差时最容易理解
这里 表示我们在每个训练样本 获得的 个新响应。我们将(误差估计的)乐观程度(optimism)定义为训练误差 和 的差
这个值一般都是正的,因为 通常是对预测误差偏小的估计。最后,平均乐观程度是乐观程度在所有训练集上的期望误差
这里,训练集的预测子是固定的,期望是对训练集上响应或结果值上(即 )取的,因此我们的记号是 而不是 。通常,我们可以计算出期望乐观程度 而不是 ,正如我们能够估计期望预测误差 ,而不能估计出条件误差 。
对于平方误差、0-1以及其他的损失函数,可以证明如下一般性的结论
其中 是协方差。因此, 低估真实误差的程度依赖于 能以多强的程度影响它自己的预测值。我们对数据的拟合程度越高, 会越大,也将因此而增大乐观程度。
由此,我们有如下重要的关系
如果 是 维输入或基函数的线性拟合结果,此表达式还可简化。例如,对于加性误差模型
因此
式(7)是有效参数个数的基础。乐观程度随着输入维数或者使用的基函数个数 线性增长,但是随训练集样本数目的增加而减少。式(8)对于其他的误差模型,比如二值数据与熵损失函数,也能近似的成立。
一种估计预测误差的明显方式是估计乐观程度,然后将它加到训练误差 上。在下一节中介绍的方法——、AIC、BIC以及其他的方法——都是这样对一类特殊的估计起作用的,这类估计是它们的参数的线性函数。
源与流
样本内误差的一般形式为
其中 是对平均乐观程度的估计。
利用式(8),当 个参数通过平方误差损失函数拟合时,可计算出一个所谓的 统计量:
这里 是对噪声方差的估计,它从低偏差模型的均方误差获得。利用这个准则,我们通过一个正比于使用的基函数数量的因子,来调整训练误差。
Akaike 信息准则是对 的类似但更一般的估计,如果用的是对数似然损失函数。它依赖于与式(8)类似的关系。该关系
在 时,渐进的成立。这里 表示一族 的密度(包含"真实"的密度函数), 是对 的最大似然估计,而 是最大化的似然函数
例如,对 logistic 回归模型,使用二项分布的对数似然函数,有
对于线性回归模型,其损失函数为平方误差(其方差 假定已知),对应的 AIC 统计量等价于 ,因此我们将它们统称为 AIC。
为了将 AIC 用于模型选择,我们就选择给定模型中 AIC 值最小的那个。对于非线性和其他复杂的模型,需要将 替换为其他的能够衡量模型复杂性的数值。
给定一族模型 ,其中 是可调整的参数,用 和 表示训练误差以及对应模型的参数个数,则对这族模型,我们定义
函数 提供对测试误差曲线的估计,我们去寻找能最小化该值的可调参数 。
尽管 AIC 和 BIC 是非常相似的,BIC 源自一个非常不同的起因,模型选择的贝叶斯方法。
假定有一族候选模型 且对应的模型参数为 ,我们希望从中选择一个最佳模型。假定每个模型 的参数的先验分布为 ,则给定模型的后验概率为
其中 代表训练数据 。为了比较两个模型 和 ,我们计算后验概率比
如果比值大于 1,我们就选择模型 ,否则我们选择模型 。最右边的一项
称为贝叶斯因子(Bayes factor),即数据对后验概率比的贡献。
一般情况下,我们假设模型的先验是均匀分布,这样 是常数。我们需要一些近似 的方法。通过对积分的所谓拉普拉斯近似以及另外一些简化,式(21)化简为
这里 是最大似然估计, 是模型 的自由参数个数。如果损失函数定义为
因此,选择最小 BIC 的模型等价于选择能够(近似)最大后验概率的模型。但这个框架给了我们更多的东西。如果我们对 个模型计算 BIC,有相应的 ,那么我们可以用它们来估计每个模型 的后验概率
这样我们不仅估计了最好的模型,同时还评估了各个模型的相对好处。
就模型选择的目的而言,在 AIC 和 BIC 之间并没有明确的倾向。BIC 作为选择的准则是渐进一致的。这也就是说,给定一族模型,包含真实的模型,BIC 选择正确模型的概率会随着样本容量 接近 1。但是对 AIC 却并不是这样,它在 的时候倾向选择过于复杂的模型。另外一方面,对有限样本,BIC 经常由于对复杂模型的严重惩罚而选择过于简单的模型。
NO.11.tip: 假设检验
背景
假设 是随机变量,在 中取值,其概率密度分布和参数 的取值有关。对 的 个可能值, 的概率分布可以由矩阵 表征,其元素为
矩阵 的第 列为对应参数值 的概率分布。
考虑基于 的观测样本估计 的问题。换言之,样本 来自于 种可能的概率分布,我们需要确定是哪个。 的 个取值称为假设,我们从这些假设中猜想哪个是正确的(即产生观测样本 的概率分布),这个问题称为假设检验。在很多情况下,某种假设对应一种常规情形,而其他假设均对应反常的事件。此时,假设检验可以看成观测到 的某个取值,然后判断不寻常事件是否发生,如果发生了,是哪一个不寻常事件。因此,假设检验又称为检测。
在很多情况下,假设的顺序对结果没有什么影响;对 个不同的假设,将其任意标识为 。如果 ,其中 表示 的估计值,那么我们成功地猜想出了参数值 。如果 ,我们关于参数值 的猜想不正确;我们误认为 是 。在其他情况下,假设的顺序非常重要。在这种情况下,事件 ,即我们关于 的估计值偏大,对结果是有意义的。
给定 的观测值, 的估计值是随机的。 的一个随机检测器是随机变量 ,其分布取决于 的观测值。随机检测器可以定义为一个矩阵 ,其元素为
可以这么理解上述定义:如果我们得到观测值 ,那么检测器以概率 给出估计值 。(给定观测值 , 的第 列,我们用 表示,给出了 的概率分布。如果 的每一列都是单位向量,那么随机检测器是确定性检测器,即 是 的观测值的一个(确定性)函数。)
初步看来,在估计或检测过程中引入随机因素似乎只会让估计效果更差。但是在后文我们给出例子,在例子中随机检测器比所有的确定性估计器效果都好。
我们致力于寻找定义随机检测器的矩阵 。显然, 的列 必须满足(线性等式和不等式)约束
对于由矩阵 决定的随机检测器,定义检测概率矩阵为 。我们有
因此, 是当 时,猜想为 的概率。 检测概率矩阵 衡量了由矩阵 定义的随机检测器的性能。(对角元素 是当 时,猜想为 的概率,即正确地检测出 的概率。非对角线元素 是 时误判为 的概率,即事实上 ,而我们的猜想为 的概率。如果 ,检测器是理想的:无论参数 的值如何,我们的猜想都是正确的,。)
的对角线元素,排列成一个向量,称为检测概率,用 表示,即
错误概率是上面概率的补,用 表示,即
因为检测概率矩阵 的每列和为 ,错误概率可以表示为
源与流
检测器设计问题中有很大一部分目标函数是 ,也是 (即优化变量)的线性、仿射或者凸分片线性函数。类似地,检测器设计问题中很多约束都可以表示成 的线性不等式。因此,很多最优检测器设计问题都可以表述成线性规划。
最优检测器设计问题可以看成一个多准则优化问题,约束为式 (4), 个目标由矩阵 的非对角线元素给出,这些元素表征了不同类型的检测错误的概率:
其中优化变量 。因为每个目标 都是优化变量的线性函数,这是一个多准则线性规划问题。
为了将这个多准则优化问题标量化,引入权系数将目标函数加权求和,
其中权矩阵 满足
此时目标函数是 个误差概率的加权和。权系数 对应着下述事件,事实上 但猜想为 。加权矩阵有时亦称为损失矩阵。
为了找到多准则优化问题 (14) 的一个 Pareto 最优点,我们求解标量优化问题
它是一个线性规划。这个线性规划对变量 是可分的。目标函数可以描述为一系列 的(线性)函数的和
其中 是 的第 列。约束是可分的(即我们可以得到关于每个 的可分的约束)。因此我们可以通过分别求解下面的线性规划来求解线性规划 (17)
每个线性规划都有一个简单的解析解。我们可以找到一个指标 使得 。令 。这个最优点对应一个确定性检测器:即当已知观测值 时,我们的估计值为
因此,对每一个非对角线元素大于零的权矩阵 我们可以找到一个确定性检测器,使得加权求和之后的目标函数最小。这似乎意味着随机检测器并没有意义,在后文中我们将看到事实并不是这样的。多目标优化问题 (14) 的 Pareto 最优权衡表面是分片线性的;式 (20) 描述的确定性检测器对应了 Pareto 最优权衡表面的顶点。
作为一个例子,我们考虑 的特殊情形,也称为二值假设检验。随机变量 可能服从两种随机分布中的一种,为了简单起见,这两种随机分布用 和 表示。大部分情况下,假设 对应一些常规的情形, 对应一些异常事件,而我们要检测出来这些异常事件。如果 ,我们称检验是阴性的(即我们认为异常事件并没有发生);如果 ,我们称检验是阳性的(即我们认为异常事件发生了)。
通常可以将检测概率矩阵 表示为
这里 是假阴性的概率(即检验是阴性的但事实上异常事件发生了), 是假阳性的概率(即检验是阳性的但事实上异常事件并没有发生),亦被称为误报概率。最优检测器设计问题是一个双准则优化问题,目标函数为 和 。
和 的最优权衡曲线称为接收器工作特性(ROC),由 和 服从的概率分布决定。可以用 §7.3.4 中的方法,标量化双准则问题并进行求解得到 ROC。给定权矩阵 ,最优检测器 (20) 为
其中观测值为 。称这种检测器为似然比阈值检验:如果比值 大于阈值 ,检验是阴性的(即 );否则,检验是阳性的。通过选择不同的阈值,我们可以得到不同的(确定性)Pareto 最优检测器,这些检测器分别对应了不同水平的假阳性和假阴性错误概率。上述结论称为 Neyman-Pearson 引理。
似然比检测器并没有给出所有的 Pareto 最优检测器,它们仅是最优权衡曲线的顶点,而曲线是分片线性的。
NO.12.tip: Wald检验
背景
定义拒绝域为 的假设检验的势函数为
定义假设检验的容度为
如果检验的容度小于等于 就称检验的水平为
形式为 的假设称为简单假设。形式为 或 的假设称为复合假设。形式为 的假设称为双边检验。形式为 或 的假设称为单边检验。最常用的检验是双边的。
报告"拒绝 "或"保留 "并不能给出很多信息。相反,可能会问,对于任意 ,该检验是否会拒绝原假设。更一般地,检验在显著性水平 拒绝原假设,那么也会在显著性水平 拒绝原假设。因此,存在一个拒绝原假设的最小的显著性水平 ,称这个值为 值。
对于每一个 ,可能会问:检验在显著性水平 拒绝 吗? 值是拒绝 的最小 值。如果拒绝 的证据足够强, 值会很小。
假设对于任意 ,存在显著性水平为 的检验,它的拒绝域为 ,则
即, 值是可以拒绝 的最小显著性水平。非正式地, 值是拒绝 的证据强弱的度量: 值越小,拒绝 的证据越强。
假设显著性水平为 的检验的形式为
则
其中, 是 的观测值。如果 ,则
可以把以上定理表述如下:
值是指,如果 成立,检验统计量的值和实际观测值一样或更大的概率。
源与流
令 为尺度参数,令 为 的估计, 为 的标准差的估计。
考虑检验
假设 是渐近正态的:
显著水平为 的 Wald 检验:当 时拒绝 ,其中,
渐近地,Wald 检验的显著水平为 ,即当 时,
假设 的真实值为 ,势函数 是正确拒绝原假设的概率,它的值近似为
注意到当样本量增加时, 趋向于 0。进一步检查 (4),可以得到:(i) 如果 离 较远,则势函数很大;(ii) 如果样本量很大,则势函数很大。
(比较两种预测算法)在样本量为 的检验集上检验一个预测算法,在样本量为 的检验集上检验第二个预测算法。令 表示算法 1 中预测不正确的个数,令 表示算法 2 中预测不正确的个数。则 ,。为了检验原假设 ,记
其中,。极大似然估计为 ,它的标准差为
Wald 检验的显著性水平为 ,就是当 时拒绝 ,其中,
当 离 较远和样本量很大时,势函数会很大。
如果用同一个检验集去检验两个算法时会怎样呢?这两个样本不再独立。用到下面的策略。当算法 1 正确预测第 个观测时,令 ,否则,。当算法 2 正确预测第 个观测时,令 ,否则,。定义 。
令
非参嵌入式估计为 和 ,其中,。为了检验 对 ,令 ,如果 ,则拒绝 。称为配对检验。
(比较两个均值)令 和 是分别从均值为 和 的总体中独立抽取的样本。检验原假设 ,即检验
其中,。回忆起 的非参嵌入式估计为 ,其标准差为
这里 和 是样本方差。水平为 的 Wald 检验在 时拒绝 ,这里
NO.13.tip: 似然比检验
背景
似然比检验是 Neyman 和 Pearson 提出的一种构造检验的方法。这是一种基于直观想法的方法,有如点估计中的极大似然估计。这是一种基于直观想法的方法,有如点估计中的极大似然估计。用这种方法构造出来的检验,一般来说有比较良好的性质。但是并不能一般地证明,这样构造出的检验必然满足某些常见的最优准则,如 UMP 或 UMPU 之类。这个方法的一个优点是适用面较广,就是说,它对分布族的形式没有什么特殊的要求。
设样本 有概率函数 (), 为 的非空真子集。考虑假设检验问题 (3.32),则统计量 称为关于该检验问题的似然比。而由下式定义的检验函数 : 其中, 为常数,,称为检验问题 (1) 的一个似然比检验。
为了定出 (2) 式中的 和 ,使它有给定的水平 ,就需要知道似然比 在原假设成立时的分布。在简单例子中,似然比的分布可以算出。但在多数情况下,如在例 3.13 中,似然比有很复杂的形状,其精确分布无法求得。1938 年,S. S. Wilks 证明了:若样本 是独立随机样本 ,则当样本大小 时,在原假设成立之下,似然比有一个简单的极限分布。应用这个极限分布,可以近似地决定 (2) 式中的 和 。
若 的维数 的维数 $=t>0$,则在原假设 成立之下,当样本大小 时, 有极限分布 。
利用这个定理,可近似决定 (2) 式中的 和 。为此,把 的分布看成确切地等于 ,则应取
当 和 按 (3) 式取时,由 (2) 式确定的检验 满足
常把满足这个条件的检验 称为有渐近水平 。
源与流
似然比检验的一项最重要的应用,是处理涉及正态分布参数的假设检验问题。我们以样本t检验为例,进行讲述。
设有样本 , 和 都是未知参数,考虑检验问题 其中, 是给定的已知数。
现考虑检验问题 (5) 的水平 似然比检验。样本 的似然函数为
考虑到
易算出似然比为
由此知似然比检验有否定域 。为确定常数 ,考虑统计量
由 分布的定义,知当 时 ,即自由度为 的 分布。给定 ,可从 分布表上,查出满足 的值 。由于 分布密度关于 0 对称,此值也满足 。于是得到检验问题 (5) 的水平 的似然比检验为
由 (8) 式定义的统计量 称为一样本 统计量,而检验 (9) 则称为一样本 检验。
NO.14.tip: 置信区间
背景
设样本 的分布包含未知参数 ,而 是定义在 上的一个已知函数,要利用样本 对 进行估计。我们是用一个由样本 所决定的数 去估计 ,称为 的点估计。这种估计的缺点在于,单从所给出的估计值 上,无法看出它的精度有多大。(当然,你可以给出某种指标,例如估计的均方误差之类,去刻画这种精度,但这也还只是间接的。)更直接的方法,就是指出一个误差限 ,而把估计写成 的形式。在各种部门中,我们常见到这种写法。这事实上就是一种区间估计:估计 在区间 之内。
一般地,设有两个统计量 和 ,满足条件 ,则 就可作为 的一个区间估计。意思是:一旦有了样本 ,就把未知的 估计在区间 内。一般地,设有两个统计量 和 ,满足条件 ,则 就可作为 的一个区间估计。意思是:一旦有了样本 ,就把未知的 估计在区间 内。
源与流
设 为样本, 是 的一个区间估计。由于 未知,且样本是随机的,我们不能保证在任何情况下(即对任何具体的样本值),区间 必定包含被估计的 ,而只能以一定的概率保证它。这个考虑引出下面的基本定义。
如果不论参数 在参数空间 中取什么值,“区间 包含 ”这个事件的概率总不小于指定的常数 通常很小),即
则称 有置信水平 。也常称 是 的置信水平 的区间估计或置信区间。
由此定义可知,若 为置信水平,而 ,则 也是置信水平。一切置信水平中的最大者称为置信系数。易见, 的置信系数是 。
如果 ,或 ,则相应地得到 的上、下界估计。与此相应,有
设 是 的一个上界估计,。若
则称 为 的置信水平。也常称 为 的置信水平 的置信上界(或上限)。如前所述,一切置信水平中的最大者称为置信系数。
对下界估计情况完全类似:若
则称 为 的置信水平 的置信下界(或下限)。
置信水平和置信系数的概念是 Neyman 区间估计理论的基本概念。这个概念的要点在于:被估计的参数 虽然未知,但是一个常数,没有随机性,而区间 则是随机的。因此,这个概念允许一种频率的解释:如果把这个区间估计反复使用许多次,则有时它包含 ,有时不包含 。当次数充分大时,包含 的频率接近于置信系数。因此,一个置信系数为 的区间估计 ,其实际意义可理解为:当把 使用 100 次时,平均约有 95 次其结果是正确的,即包含了被估计的 。
构造置信区间的方法主要有两种:一种是从点估计出发;一种是从假设检验出发。在一些常见的重要问题中,这两种方法往往给出同一结果。
首先,我们用一个例子来说明如何通过点估计量来构造置信区间。设 是抽自一总体的独立随机样本,总体分布为指数分布 (1.8) 式。给定 ,找参数 的置信系数 的置信区间和置信上、下界。
因为 是 的一个无偏估计(且是其 UMVUE),我们设想 的区间估计能通过 表示出来。因为 有概率密度 (1.20) 式,由此并注意到 分布的密度 (1.28) 式,不难推出 。于是,若找到 $a,,b;(0<a<b<\infty)$,满足条件
则有
由 (5) 式知, 就是 的置信系数 的置信区间。它不是唯一的,一则满足条件 (4) 的 有很多;二则也可以设想,不从 出发同样可构造 的区间估计。这样就产生一个如何在许多具同一置信系数的区间估计中选择其一的问题。这个问题到 4.1.4 小节中再谈,此处可考虑选择 满足 (4) 式并使 最小。这样的 也不容易决定,实用上可行的方法是取
类似地,由 ,分别得出 的置信系数 的置信下、上界分别为 和 。
接下来,我们给出一个如何通过假设检验构造置信区间的方法论。方法很简单:设要做 的置信系数 的置信区间。考虑检验问题
找出 (6) 的一个检验,它的水平为 。设这个检验有接受域 ,即当样本 时接受 ,不然就否定 。则有
如果关系 可改写成等价的形式 ,则由 (7) 式可得 。改 为 ,得
(8) 式表示, 是 的一个置信水平 的区间估计。若检验的真实水平为 ,则 (7) 式可改为等号,因而 (8) 式也可改为等号,故 有置信系数 。
如果要做的是 的置信上、下限,就需要考虑单边假设 或者单边假设 的检验问题。
NO.15.tip: EM算法
背景
期望最大化算法,或者EM算法,是寻找具有潜在变量的概率模型的最大似然解的一种通用的方法.考虑一个概率模型,其中我们将所有的观测变量联合起来记作,将所有的隐含变量记作。联合概率分布由一组参数控制,记作。我们的目标是最大化似然函数
这里,我们假设是离散的,但是当是连续变量或者离散变量与连续变量的组合时,方法是完全相同的,只需把求和换成适当的积分即可。
我们假设直接最优化比较困难,但是最优化完整数据似然函数就容易得多。接下来,我们引入一个定义在潜在变量上的分布。我们观察到,对于任意的,下面的分解成立
其中,我们定义了
注意,是概率分布的一个泛函,并且是参数的一个函数。值得仔细研究的是表达式(3)和(4)的形式,特别地,需要注意,二者的符号相反,并且包含了和的联合概率分布,而包含了给定的条件下,的条件概率分布。为了验证公式(2)给出的分解方式,我们首先使用概率的乘积规则,可得
然后代入的表达式。这得到了两项,一项消去了,而另一项给出了所需的对数似然函数,其中我们用到了归一化的概率分布的积分等于1的事实。
根据公式(4),我们看到是和后验概率分布之间的Kullback-Leibler散度。回忆一下,Kullback-Leibler散度满足,当且仅当时等号成立。因此,根据公式(2),,换句话说,是的一个下界。
源与流
EM算法是一个两阶段的迭代优化算法,用于寻找最大似然解。我们可以使用公式(2)来定义EM算法,证明它确实最大化了对数似然函数。假设参数向量的当前值为。在E步骤中,下界关于被最大化,而保持固定。最大化问题的解很容易看出来。我们注意到不依赖于,因此的最大值出现在Kullback-Leibler散度等于零的时候,换句话说,最大值出现在与后验概率分布相等的时候。此时,下界等于对数似然函数。
在接下来的M步骤中,分布保持固定,下界关于进行最大化,得到了某个新值。这会使得下界增大(除非已经达到了极大值),这会使得对应的对数似然函数增大。由于概率分布由旧的参数值确定,并且在M步骤中保持固定,因此它不会等于新的后验概率分布,从而KL散度非零。于是,对数似然函数的增加量大于下界的增加量,如图9.13所示。如果我们将代入公式(3),我们会看到,在E步骤之后,下界的形式为
其中,常数就是分布的熵,因此与无关。从而在M步骤中,最大化的量是完整数据对数似然函数的期望,正如我们之前在混合高斯模型的情形中看到的那样。注意,我们进行优化的变量只出现在对数运算内部。如果联合概率分布由指数族分布的成员组成,或者由指数族分布成员的乘积组成,那么我们看到对数运算会抵消指数运算,从而使得M步骤通常比最大化对应的不完整数据对数似然函数要容易得多。
EM算法将最大化似然函数这一困难的问题分解成了两个阶段,即E步骤和M步骤,每个步骤都很容易实现。尽管这样,对于复杂的模型来说,E步骤或者M步骤仍然无法计算。这就引出了对EM算法的两个扩展,叙述如下。
推广EM算法,或者简称GEM算法,解决的是M步骤无法计算的问题。这个算法不去关于最大化,而是改变参数的值去增大的值。与之前一样,由于是对数似然函数的一个下界,因此GEM算法的完整的EM循环保证了对数似然函数值的增大(除非参数已经对应于一个局部极大值)。一种使用GEM的方法是在M步骤中使用某种非线性最优化策略,例如共轭梯度算法。另一种形式的GEM算法,被称为期望条件最大化算法,或者简称ECM算法,涉及到在每个M步骤中进行若干了具有限制条件的最优化。例如,参数可能被划分为若干组,并且M步骤被划分成多个步骤,每个步骤最优化一个子集,同时保持其他的子集固定。
类似地,我们可以用下面的方法推广EM算法中的E步骤:对关于进行一个部分的最优化而不是完全的最优化。正如我们已经看到的,对于任意给定的值,关于有一个唯一的最大值,它对应于后验概率分布,并且对于这个的选择,下界等于对数似然函数。因此任何收敛于的全局最大值的算法都会找到一个值,这个值也是对数似然函数的全局最大值。只要是的一个连续函数,那么根据连续性,的任意一个局部极大值也会是的一个局部极大值。
NO.16.tip: KL散度
背景
对于在同一空间上定义的两个概率分布 和 ,我们将讨论对这两个概率分布进行比较的各种方法。例如,假设分布是根据样本定义的, 和 。确定样本是否来自相同的分布被称为双样本检验。这可以通过定义一些合适的散度度量 并将其与阈值进行比较来计算。(我们使用术语“散度”而不是距离,因为我们不要求 是对称的。)或者,假设 是数据的经验分布, 是模型导致的分布。我们可以通过将 与阈值进行比较来检查模型对数据的近似程度,这被称为拟合优度检验。计算一对分布之间的散度主要有以下两种方法:根据这两个分布的差值 或者根据这两个分布的比值 。我们将基于分布的密度比 来比较概率分布。特别是,考虑 -散度,其定义如下:
其中, 是满足 的凸函数。根据詹森不等式,得出 ,显然 ,因此 是一个有效的散度。
从信息论的角度,我们需要一些方法来度量或量化信息本身。假设我们从描述对随机变量信念度的分布开始,称之为 。然后,我们想将信念度更新为一些新的分布 ,也许是因为我们已经进行了一些新的测量,或者只是对这个问题思考了更长的时间。我们所寻求的是使用一种数学方法来量化这次更新的幅度,我们将其表示为 。很显然,我们希望这种有效的度量都应满足以下性质(需求条件):
-
参数的连续性:如果我们对开始或结束分布进行轻微扰动,该扰动的更新的幅度也会产生类似的较小影响。
-
非负性:对于所有 和 ,。
-
置换不变量:更新的幅度不应该取决于我们选择元素的顺序。
-
均匀分布的单调性:虽然很难表述信念的更新总体上有多大,但在一些特殊情况下,我们有很强的直觉。如果我们的信念从 个元素中的均匀分布更新为 个元素中的均匀分布,那么信息增益应该是 的递增函数和 的递减函数。
-
满足自然链式法则:如果我们将 划分为两个部分 ,这样就可以记作 。类似地,对于 ,更新的幅度应该为:
请注意,这个要求打破了两个分布之间的对称性:等式右侧要求我们取关于边缘的条件概率,如果我们在所有分布中保持顺序一致,那么应该得到相同的答案。
源与流
我们现在将定义一个量,该量是满足上述需求条件的唯一度量(只差一个乘法常数)。
Kullback-Leibler 散度或 KL 散度,也称为信息增益或相对熵,其定义如下:
这自然延伸到连续分布:
KL散度具有一些很值得我们讨论的性质。
KL的单位
上面我们说过,我们列出的需求条件决定了 KL 散度,只差一个乘法常数。因为 KL 散度是对数的,并且不同基数的对数在乘法常数之前是相同的,所以计算 KL 散度时,我们对对数底数的选择类似于选择测量信息的单位。如果 KL 散度使用以 2 为底的对数来测量,那么 KL 散度就被称为以比特(bit)为测量单位。比特是“二进制数字”(binary digit)的缩写。如果像通常为了数学计算方便所做的那样使用自然对数来测量,那么 KL 散度就被称为以“自然单位”(natural unit)奈特(nat)作为测量单位。
为了在系统之间进行转换,我们使用 。因此:
KL散度的不对称性
KL 散度中所使用的两个参数具有不对称性。虽然许多人一开始觉得这种不对称性令人困惑,但我们可以看到,这种不对称性源于我们对自然链式法则的要求。当我们将分布分解为条件分布时,我们需要相对于条件变量取一个期望值。这就破坏了两种分布之间的对称性。
在更直观的层面上,我们可以看到,从 移动到 所需的信息通常与从 移动到 所需的信息不同。例如,考虑两个伯努利分布之间的 KL 散度,第一个分布的成功概率为 0.443,第二个分布的成功概率为 0.975:
因此,从 分布更新到 伯努利分布需要一个比特信息。反过来呢?
所以反之需要两个比特的信息,或者说需要两倍的信息才能向另一个方向移动。因此,我们需要两个不同的假设需要选择,将其标记为 和 。我们收集了一些数据。贝叶斯规则的这种推广有时被称为 Jeffrey 条件化规则。
压缩引理
KL 散度一个重要的通用结论是压缩引理。
定理 对于具有明确定义的 KL 散度的任何分布 和 ,以及对于在分布上定义的任何标量函数 ,以下公式成立:
证明 我们知道,任何两个分布之间的 KL 散度都是非负值。考虑以下形式的分布:
其中,配分函数定义如下:
取 和 之间的 KL 散度并重新排列,从而得到边界:
理解压缩引理的一种方法是,该压缩引理提供了 KL 散度的所谓 Donsker-Varadhan 变分表示:
在与分布定义在同一域上的所有可能函数 的空间中,假设上面的所有值都是有限的,KL 散度是实现的上确界。对于任何固定函数 ,上式的右侧提供了真实 KL 散度的下界。
压缩引理的另一个用途是,该压缩引理提供了一种估计某个函数相对于未知分布的期望的方法。基于该基本思想,压缩引理可以用来为一组所谓的PAC贝叶斯损失界提供能量,该损失界相对于有限训练集的测量损失的真实分布。
KL散度和指数族
同一族的两个指数族分布之间的 KL 散度具有很好的闭合形式,如下所述。
考虑 ,具有自然参数 、基本度量 和充分统计量 :
其中:
是对数配分函数, 的凸函数。
来自同一族的两个指数族分布之间的 KL 散度如下:
其中,。
使用Fisher信息矩阵近似KL散度
设 和 是两个分布,其中 。我们可以测量第二个分布在预测分布方面与第一个分布的接近程度(而不是在参数空间中比较 和 ),如下所示:
让我们使用二阶泰勒级数展开来近似:
由于预期得分函数为零(根据式 (3.44)),第一项消失,因此我们得到:
其中, 是 Fisher 信息矩阵。
因此,我们已经证明,使用 Fisher 信息矩阵作为度量,KL 散度近似等于马氏距离(的平方)。
Bregman散度
设 是定义在闭凸集上的连续可微严格凸函数 。我们将与 相关的 Bregman 散度定义如下:
为了理解这一点,设:
是 在 处的一阶泰勒级数近似。于是,Bregman 散度是与该线性近似的差:
由于 是凸函数,我们有 ,因为 是 上的线性下界。
接下来,我们将讨论一些 Bregman 散度的重要特例。
- 如果 ,那么 是欧几里得距离的平方。
- 如果 ,那么 是马氏距离的平方。
- 如果 是指数族分布的自然参数,并且 是对数归一化器,则 Bregman 散度与 Kullback-Leibler 散度相同。
回想一下,对数配分函数 是一个凸函数。因此,我们可以使用对数配分函数来定义两个分布 和 之间的 Bregman 散度,如下所示:
其中我们利用了这样一个事实,即对数配分函数的梯度可以计算预期的充分统计量。
事实上,KL 散度是唯一一种既是 Bregman 散度又是 -散度的散度。
NO.17.tip: 马尔可夫链
背景
假设 捕获了关于系统状态的所有相关信息。这意味着在给定过去的情况下,这是预测未来的充分统计量,即对于任何 ,
这被称为马尔可夫假设。在这种情况下,我们可以将任何有限长度序列的联合分布记作:
这被称为马尔可夫链或马尔可夫模型。
源与流
条件分布 被称为转移函数、转移核或马尔可夫核。马尔可夫转移核是在给定时间 的状态情况下,在时间 状态上的条件分布,因此该分布满足条件 以及 。
如果我们假设转移函数 与时间无关,那么模型被认为是齐次的、平稳的或时不变的。这是一个参数绑定的例子,因为同一个参数由多个变量共享。这个假设允许我们使用固定数量的参数对任意数量的变量进行建模。在本节的其余部分中,我们假定满足时不变假设。
我们假设变量是离散的,因此 ,这被称为有限状态马尔可夫链。在这种情况下,条件分布 可以写成一个 的矩阵 ,称为转移矩阵(又称为转换矩阵),其中 是从状态 到状态 的概率。矩阵每一行的和为 1,即 ,所以这被称为随机矩阵。
平稳的有限状态马尔可夫链等价于随机自动机。通常,可以通过绘制有向图来可视化这种自动机,其中节点表示状态,箭头表示合法转移,即 的非零元素。这被称为状态转换图(又称为状态转移图)。弧上的权重是概率。
马尔可夫链的关键就是在于对于转移矩阵的设计与研究。假设我们从马尔可夫链中连续抽取样本。在有限状态空间的情况下,我们可以认为这是从一个状态到另一个状态的“跳跃”。根据转换图的不同,我们在某些状态下花费的时间往往会比在其他状态下花费的更多。状态上的长期分布被称为马尔可夫链的平稳分布。
设 为一步转移矩阵,并且设 为在时间 处于状态 的概率。
如果我们在 的状态上有一个初始分布,那么在时间 1 处,我们有:
或者,使用矩阵表示法表示为:,其中我们遵循了假设 是行向量的标准约定,所以我们右乘转移矩阵。
现在想象对这些方程进行迭代。如果我们达到了 的阶段,那么称已经达到了平稳分布(也称为不变分布或平衡分布)。一旦进入平稳分布,那么将保持状态不变。
NO.18.tip: Fisher信息矩阵
背景
我们将讨论一个称为 Fisher 信息矩阵 的重要统计量,该信息矩阵与对数似然函数的曲率有关。这在频率学派统计学中起着关键作用,用于表征最大似然估计的采样分布。然而,Fisher 信息矩阵也用于贝叶斯统计(推导 Jeffreys 的无信息性先验概率),以及优化(作为自然梯度下降处理过程的一部分)。
源与流
得分函数(score function;又称评分函数)被定义为对数似然的梯度:
Fisher 信息矩阵(FIM)被定义为得分函数的协方差:
因此,第 项为:
接下来,我们将对这个统计量进行解释。
Fisher信息矩阵和负对数似然的黑塞矩阵之间的等价性
我们将证明 Fisher 信息矩阵等价于负对数似然的期望黑塞矩阵:
由于黑塞矩阵衡量了似然概率的曲率,我们看到 Fisher 信息矩阵指出了似然概率函数可以在多大程度上识别最佳参数集。(如果似然函数是平坦的,我们无法推断出任何关于参数的信息,但如果似然函数是单点的 函数,则最佳参数向量将被唯一确定。)因此,对于最大似然估计的不确定性,似然函数与频率学派的概念密切相关,如果我们在从模型中提取的多个不同数据集上进行计算,则期望最大似然估计中的方差会捕捉到这一点。
更确切地说,我们有以下定理。
定理:如果 是二阶可微的,则在一定的正则性条件下,Fisher 信息矩阵等于负对数似然的期望黑塞矩阵,即
在证明这个定理之前,我们先引入以下重要引理。
引理:得分函数的期望值为零。即
我们在标量情况下证明了这个引理。首先,请注意,由于 ,我们有:
将上式与以下恒等式相结合:
我们有:
接下来,我们回到主定理的证明。为了简单起见,我们将主要讨论标量情况,具体证明如下。
证明
求式 (9) 的导数,我们得到:
因此,可以证得:
现在给定 个独立同分布的样本 ,考虑该样本的负对数似然的黑塞矩阵:
根据上述定理,我们得到:
这在推导最大似然估计的采样分布时很有用。
NO.19.tip: 状态空间模型
背景
状态空间模型是时间序列建模中非常一般的方法,即可用于单变量、又可用于多变量时间序列。系统的状态空间表示是现代控制理论中的一个基础性概念。系统的状态定义为来自当前和过去的最小信息集,使得系统的未来行为可以由当前状态和未来输入完整地加以描述。因此,状态空间表示是建立在马尔可夫性质的基础上的,这意味着给定系统当前的状态,系统的未来与它的过去无关。所以,系统的状态空间表示也叫做系统的马尔可夫表示。
源与流
令 和 分别是系统输入为 和 时的系统输出。系统是线性的,当且仅当对任意常数 和 ,输入的线性组合 产生相同的输出的线性组合 。系统是时不变的,如果系统的性质不随时间而变化,如果输入 产生输出 ,那么输入 将产生输出 。如果它既是线性的又是时不变的,那么系统是线性时不变的。许多物理空间可以视为线性时不变系统,包括平稳过程。
对线性时不变系统,它的状态空间表示可由下面的状态方程
和输出方程
所描述。这里, 是 维状态向量, 是 转移矩阵, 是 输入矩阵, 是系统的 输入向量, 是 输出向量, 是 输出或观察矩阵。如果输入 和输出 都是随机过程,那么状态空间表示由下式给出
其中, 是输入过程 的向前一步预报误差的 向量, 是 维假定与 无关的扰动向量。向量 也叫做输入 在 期的新生值。当 , 从式 中消失,平稳随机过程 的状态空间表示就变成
故过程 是由一个白噪声输入 驱动的时不变线性随机系统的输出。 是过程的状态。
状态方程也叫做系统方程或者转移方程,输出方程也指测度方程或者观测方程。系统的状态空间表示与卡尔曼滤波有关,最先由控制工程发展而来,系统也叫做状态空间模型。
用状态空间模型表达ARMA模型
设 。定义 维状态向量
其中 为基于 期信息的向前 步最优预报。则 ARMA 的状态空间表示为
各矩阵如下:
- 转移矩阵 (伴随形式):
其中 (当 时)。
- 输入矩阵 :
这里 为 的 MA 表示 中的权重,由递推式
确定(约定 )。
- 观测矩阵 :
将差分方程纳入状态向量。定义 维扩展状态向量
则 ARIMA 的状态空间模型为
其中 ,而分块矩阵 、 的结构为:
-
前 行体现"逐层累加"关系: 最终归结为 。
-
后 行即为上述 ARMA 的伴随矩阵 与输入矩阵 。
ARIMA(1,1,1)
模型为
令 ,则 为 ARMA,且 。取 3 维状态向量
可验证其状态空间表示为
NO.20.tip: 卡尔曼滤波
背景
考虑在状态空间描述的线性系统:
式中 分别是 阶常值矩阵(已知),且有 , 是 维向量序列(称为确定性输入序列)(已知), 和 分别是已知均值、方差和协方差等统计信息的系统和观测噪声序列(未知)。因为同时有确定性输入 和噪声序列 及 ,该系统被称为线性确定性/随机系统。该系统能够分解成一个线性确定性系统:
与一个线性(完全)随机系统的和。
式中 ,。这样分解的好处是线性确定性系统的解 能够由转换方程给出:
而通过求解式 (3) 描述的随机状态空间的 的最优估计 ,从而
为原始线性系统的状态向量 的最优估计。当然,估计必须依赖于噪声序列的统计信息。在本章中,只考虑零均值高斯白噪声过程。
假设:令 和 是零均值高斯白噪声序列。那么对于所有 和 , 和 是正定矩阵,且 。另假设初始状态 与 独立,即对于所有的 ,有 和 成立。
源与流
在确定 的最优估计 时,最优性是通过选择最优权值矩阵给出的最小二乘意义下的最小方差估计取得的。但是需要联合所有数据 的信息来确定 的估计 。为了实现该思路,引入向量:
并从数据向量 中求得 。为了完成该过程,假设到当前时刻的所有系统矩阵 非奇异。那么状态空间描述的线性随机系统可以写为:
式中:
转移矩阵 定义为:
当 时,,且
应用前面介绍的 的逆变换特性,转移方程为:
该式可以轻易地从式 (3) 介绍的系统方程得到,有:
可得:
即式 (7)。
使用最小二乘估计,权值为 ,这样通过使用数据 ,就可以得到 的线性、无偏、最小方差最小二乘估计 。
定义: (1) 对于 ,定义 ,并称该估计过程为数字滤波过程;(2) 对于 ,定义 为 的最优预测,并称该过程为数字预测过程;(3) 对于 ,定义 为 的平滑估计,并且称该过程为数字平滑过程。
卡尔曼滤波属于数字滤波。由于 是根据所有数据 确定的,因为数据存储量和计算量随着时间增加,该方法不适用于 值很大的实时问题。因此我们打算推导从“预测” 得到 ,及从估计 得到 的递推公式。在其中的每一步,由于只使用最新的数据信息,故只需用很小的数据存储量。这就是通常提到的卡尔曼滤波算法。
预测-校正公式
为了实时计算 ,本节将推导递推公式:
式中 为卡尔曼增益矩阵。
开始点是初始估计 ,因为 是初始状态 的无偏估计,可以使用常值向量 。而在实际的卡尔曼滤波中, 也必须递推计算。这两个递推过程合起来称为卡尔曼滤波过程。
选择权值矩阵:
使用式 (7) 的 ,使得 是 的具有最小方差的(最优)最小二乘估计。易证:
。所以, 和 是正定的。
在这里,假设矩阵 ,非奇异。
由以上可知:
我们第一个目标是建立 与 的联系。为了实现该目标,注意到:
及
应用式 (18) 和前面的两个方程,得:
通过简单的减法可得:
定义:
这样就得到:
因为 是一步预测, 是实际数据和预测之间的误差,式 (24) 实际上是以卡尔曼滤波增益 作为权值矩阵的“预测-校正”公式。为了完成递推过程,还需要一个从 到 的公式:
为了证明该式,首先注意到:
使得:
根据以上有:
然后根据转换关系:
有:
则:
结合式 (18),当 和 时得到式 (25)。
下一个目标是得到卡尔曼增益矩阵 的递推公式。首先有:
式中:
且令:
又因:
可得:
可以证明:
因此:
此外,还有:
应用式 (38) 和式 (39) 及初始矩阵 ,可得 和 的递推计算方法。首先有:
还有:
特别地,当 时,有:
最后,联合上面得到的所有结果,得到式 (3) 所示的状态空间描述的线性随机系统的卡尔曼滤波过程:
总结
现在考虑具有确定性控制输入 的常规线性确定性/随机系统。考虑状态空间模型:
式中 是 维向量序列 。
将确定性解叠加到式 (43) 上,则可得到该系统的卡尔曼滤波过程:
NO.21.tip: 泊松过程
背景
泊松过程(Poisson process)最早是由法国人 Poisson 于 1837 年引入的,故得名。
定义:一随机过程 称为时齐泊松过程,若满足:
- 是一计数过程,且 ;
- 是独立增量过程,即任取 ,
相互独立;- 增量平稳性,即 ,
;- 对任意 和充分小的 ,有 其中 (称为强度常数), 为高阶无穷小,即 。
时齐泊松过程(有时简称为泊松流),是一种既典型又简单的,应用极其广泛的随机过程。 可表示在 时间随机事件发生的个数,它可用于刻画"顾客流"、"粒子流"、"信号流"等的概率特性。
考虑某电话交换台在 内来的呼唤数,记为 。显然它是一计数过程。若它是一平稳独立增量过程,且在一很短时间间隔 内来一次呼唤的概率与 成正比,来一次以上呼唤的概率是 的高阶无穷小,则 就是泊松过程。 表示在 内事件发生的个数。
源与流
首先有下面的重要定理
定理:若 为泊松过程,则 ,有 即 是参数为 的泊松分布。
证明
由增量平稳性,记
先看 的情形。因
故
另一方面
代入上式,有
令 ,两边取极限,得
这是一阶线性常系数微分方程。由初始条件 ,可得
再看 的情形,因
故
化简可得
令 ,两边取极限,有
将上式两边乘以 ,移项后可得
且满足初始条件
当 时
注意到初始条件 ,可得
再用归纳法即有
为了应用方便,给出以下等级啊定义
定义:一计数过程 称为参数是 的时齐泊松过程,若满足:
- ;
- 是独立增量过程;
- ,即其增量是参数为 的泊松分布。
相邻时间的时间间隔,泊松过程与指数分布的关系
我们用过程的样本函数的特性来刻画泊松过程,从而揭示它与指数分布之间的内在联系。
设 是一计数过程, 表示在 内事件发生(或"顾客"到达)的个数。令 , 表示第 个事件发生的时刻 , 表示第 个事件与第 个事件发生的时间间隔。用式子表示为
注意,此时对 ,下列事件等价:
这里 表示集合 的下确界,即集合的最大下界。例如 。于是 ,有 ,。
因此, 的分布函数为:当 时,;当 时,有
的概率密度函数为
特别是当 时,有 即 是参数为 的指数分布。那么, 又如何呢?它们之间的关系又会怎样呢?有如下漂亮的结果。
定理:计数过程 是泊松过程的充分必要条件是 是独立且参数同为 的指数分布。
证明:
先证必要性。步骤如下:
第一步,求 的联合概率密度。令 ,取充分小的 ,使
由
其中
得
所以 的联合概率密度函数为
第二步,求 的联合概率密度。注意到 ,令 ,则变换的雅可比(Jacobian)行列式为
于是 的联合概率密度为
由上可得 的概率密度为 。于是 即证明了 独立同指数分布。必要性证毕。
下面证明充分性。设 独立同指数分布。令 ,对 ,定义 。由上定义可验证 是计数过程。下面仍分三步证明它是泊松过程。
第一步求 的联合概率密度及 的分布。注意到证必要性第二步的逆过程仍成立,即由 的联合概率密度
经 ,可得 的联合概率密度为
由上可得 的分布为
故
第二步证平稳性。这里只写出对 的证明。利用全概率公式,有
又由 独立同分布,可得
类似地,有 ,故
(注:对 情形类似证明)
第三步证增量独立性。为突出方法,这里仅证 , 与 相互独立,即证 ,有
只写出 与 的情形,其他可类似证之。
NO.22.tip: 隐马尔可夫链
背景
隐马尔可夫链简介
定义 1 [隐马尔可夫链 (HMM)]: 一个双离散随机过程 (double discrete stochastic process) 被称作隐马尔可夫链,若它满足以下两个条件:
使用简便记号,隐马尔可夫链的定义也可简写为
在隐马尔可夫链的定义中, 被称作状态过程 (state process),它是不可观察的(隐藏的),HMM 性质 1 说明其是一个马尔可夫链; 被称为观测值过程 (observation process),HMM 性质 2 说明它仅与当前状态有关,而与之前的状态和观测值均无关。
在此基础上,我们还可以定义加强版(改进版)的隐马尔可夫链,如下所示。
定义 2 [加强版的隐马尔可夫链 (Revised HMM)]:
加强版的 HMM 性质 1 说明,给定第 个状态变量,第 个状态变量与其他所有变量均不相关;加强版的 HMM 性质 2 说明,给定第 个状态变量,第 个观测值与其他所有变量均不相关。
在后续部分中,我们将不再详细区分 HMM 性质与加强版的 HMM 性质。总的来说,在隐马尔可夫链框架下,一共两个随机过程, 与 ; 是马尔可夫链,给定 , 与其他所有变量(过去的观测值和过去的状态)均无关, 是观测值过程,给定 , 与其他所有变量(之前和之后的观测值、过去的状态)均无关。
三个基本问题
应用隐马尔可夫链面临三个基本问题:
-
当参数给定时,求出观测值序列发生的概率,即 通常对于这个问题我们使用向前/向后算法 (Forward/Backward Approach)
-
找出一个隐藏的状态序列 ,其能最好的解释观测值序列
这个问题也称为解码 (decoding),通常使用维特比算法 (Viterbi Algorithm) -
找出能使观测值序列发生概率最大的参数,即 此问题即参数估计,也称为学习 (study) 或者训练 (train),是三个基本问题中最复杂的,通常使用期望最大化算法 (Expectation Maximization Method or called Baum–Welch Method)。
源与流
隐马尔可夫链的若干基本性质
我们首先定义一个符号
可见 是给定 在 时刻位于状态 时, 的条件概率。它也被称为状态相关分布 (state-dependent distribution),或者发射分布 (emission distribution)。形象地理解,可以把观测值 当作状态 “发射”的“信号”(signal)。
在此基础上,定义
被称为对角发射矩阵 (diagonal emission matrix),它的第 个对角线元素即是 。
定理 1 [单变量分布 (univariate distribution)]: 写成矩阵形式为
证明:
上式也可以用矩阵运算写成
此外,我们知道,,因此,上述定理的矩阵形式也可写为
若马尔可夫链是稳态的,,则上式又可简化为
定理 2:
证明:
证毕
定理 2 可以直观地理解如下:隐马尔可夫链在时刻 和 ,状态变量取值为 和 ,观测变量取值为 和 的概率,等于在 时刻,状态变量取值于 的概率,乘以“发射信号” 的概率,乘以状态变量 步转移到 的概率(此时时刻为 ),再乘以“发射信号” 的概率。
定理 3 [双变量分布 (Bivariate Distribution)]: 矩阵形式可写为
证明:
上式也可用矩阵运算写为
证毕
若马尔可夫链是稳态的,则 ,上式又可简化为
定理 4:
证明:
- 首先我们求
- 接下来我们求
结合上述两步的结果,可得
证毕
定理 4 可以直观地理解如下:出现状态序列 和观测值序列 的概率,等于初始时刻状态位于 的概率(右边第 1 项),乘以状态从 转移到 的概率,再乘以状态从 转移到 的概率,以此类推,直到乘以状态从 转移到 的概率(右边第 2 项),最后还要乘以在每个状态 下“发射信号” 的概率(右边第 3 项)。
从定理 4 出发,我们也可以导出观测值序列 出现的概率。
定理 5:
证明:
证毕
隐马尔可夫链的似然函数
隐马尔可夫链的似然函数是个很重要的概念,在参数估计、条件分布、预测等问题中有着非常重要的应用。此外,后面介绍的前向(后向)概率等许多参量也可以用似然函数来表示。幸运的是,不但正常情况下隐马尔可夫链的似然函数有明晰的解析表达式,在个别数据缺失的情况下,依然可以得到似然函数的解析表达式。
正常情况下隐马尔可夫链的似然函数
定理 6 [无缺失数据时 HMM 的似然函数]: 若隐马尔可夫链共有 个观测值,,则其似然函数可表示为
证明:
从矩阵运算的观点来看,LHS(似然函数)是一个实数,RHS 是 的矩阵乘法,其结果 也是一个实数。 证毕
特别地,如果马尔可夫链(隐马尔可夫链的状态过程)是稳态的,则有 ,因此上式可简化为
数据缺失情况下隐马尔可夫链的似然函数
在个别数据缺失的情况下,隐马尔可夫链的似然函数也有类似的表达式。
定理 7 [有缺失数据时 HMM 的似然函数]: 若观察值 缺失,则似然函数可表示为 其中 代表 缺失时的似然函数。
证明:
证毕
评注: 对于缺失数据的似然函数,有一个简便的记忆方法。若 缺失,则对应的对角发射矩阵(diagonal emission matrix),,就被替换为单位阵 ;等价的,对于所有的 ,。
例: 缺失
则 ,似然函数的变化为
例: 缺失
则 ,似然函数变化为
数据缺失情况下的隐马尔可夫链似然函数在后文提到的分布预测等问题中有很多应用。
两类隐马尔可夫链 我们将介绍两类常见的隐马尔可夫链,泊松-隐马尔可夫链 (Poisson-HMM) 和正态-隐马尔可夫链 (Normal-HMM)。它们都是从“发射信号”这个角度来划分的。若发射概率是泊松分布的,则称这种 HMM 为泊松-隐马尔可夫链,正态-隐马尔可夫链与此同理。类似地,也可定义二项-隐马尔可夫链 (Binomial-HMM) 或者伽马-隐马尔可夫链 (Gamma-HMM) 等。
定义 3 [泊松-隐马尔可夫链 (Poisson-HMM)]: 若隐马尔可夫链共有 个状态, 个观测值,即 ,在每个状态 下,发射概率(emission probability)是泊松分布的并且强度为 ,即 则称此 HMM 为泊松-隐马尔可夫链。
在泊松-隐马尔可夫链框架下,参数为 ,其中
与泊松-隐马尔可夫链类似,我们也可以定义正态-隐马尔可夫链,区别仅在于在每个状态 下,发射概率为正态分布而非泊松分布。
定义 4 [正态-隐马尔可夫链 (Normal-HMM)]: 若隐马尔可夫链共有 个状态, 个观测值,即 ,在每个状态 下,发射概率是正态分布的并且参数为 和 ,即 则称此 HMM 为正态-隐马尔可夫链。
在正态-隐马尔可夫链框架下,参数为 ,其中
向前/向后算法
我们曾提到过,隐马尔可夫链的核心是三个基本问题,其中第一个问题就是计算观测值出现的概率,。回答这个问题需使用向前/向后算法,而这个算法的核心是前向/后向概率。此外,前向/后向概率也是其他重要算法如后面提到的期望最大化算法的基础。
前向概率与向前算法
定义 5 [前向概率 (Forward Probability)]: 可见前向概率是一个联合概率,它是出现观测值 且状态在 时刻位于 的概率。
仿照前面行向量 的定义,我们也可以定义前向概率的向量表示 (vector representation),
对于前向概率的向量表示,我们有如下的定理
定理 8:
直观地看,上式的左边是一个 的行向量,右边是 的矩阵乘法,结果也是一个 的行向量。
定理 9 [前向概率的初值条件 (Initial Condition of Forward Probability)]: 矩阵(向量)形式为
证明:
矩阵形式下,可写为
也即
证毕
定理 10 [前向概率的递归公式 (Recursion of Forward Probability)]: 矩阵形式为
证明:
(1) 实数形式 (scalar form)
(2) 矩阵形式 (matrix form)
(3) 实际上,我们也可以从矩阵形式得到实数形式
矩阵形式 说明
等式左边的第 个元素为
等式右边的第 个元素为
矩阵相等意味着矩阵每个对应元素均相等,因此,矩阵形式可以得出
(也即是实数形式) 证毕
前向概率的一个重要应用是隐马尔可夫链的似然函数可以用它来表示,如下述定理所示。
定理 11 [似然函数的前向概率表达]:
证明:
实际上,由定理 6,我们有
此外,由定理 8,我们又有
因此,很明显的
对于前向概率的论述到此可以暂时告一段落,我们将给出利用前向概率求全部观测值概率(似然函数)的向前算法。
向前算法(forward approach)
向前算法用来求概率 ,也就是似然函数的值。它是一个从初值开始,经过迭代最终到达终值的过程,这就是所谓的“向前”。
- 初始化
或者等价的
- 递归过程
或者等价的
- 使用终值计算概率
后向概率与向后算法
定义 6 [后向概率(Backward Probability)]: 与前向概率是一个联合概率不同,后向概率是一个条件概率,它是给定 时刻状态位于 的条件下,出现 的概率。
与前向概率类似,我们也可以定义后向概率的向量表示,即
定理 12:
直观地来看,上式的左边为 ,是一个 的列向量,上式的右边是 的矩阵运算,结果也是一个 的列向量。
定理 13 [后向概率的终值条件(Terminal Condition of Backward Probability)]: 矩阵形式为
定理 14:
证明:
从定理 14 出发,我们可以得到后向概率的递归公式。
定理 15 [后向概率的递归公式(Recursion of Backward Probability)]: 矩阵形式可写为
证明:
(1) 实数形式(scalar form)
(2) 矩阵形式(matrix form)
(3) 与前向概率的递归公式类似,这里我们也可以从矩阵形式得到实数形式。
矩阵形式 意味着
LHS 的第 个元素为
RHS 的第 个元素为
矩阵相等意味着 LHS 与 RHS 的每一个元素均相等,即
也就是实数形式。
与前向概率类似,隐马尔可夫链的似然函数也可以用后向概率来表示。
定理 16 [似然函数的后向概率表达]: 矩阵形式可写为
证明:
1. 实数形式
2. 矩阵形式
以上的实数形式可用矩阵运算写为
实际上,由定理 6,我们有
由定理 12,我们又有
因此,很明显的有
似然函数不但可以用单独的前向概率或者后向概率来表示,也可以把前向和后向概率结合在一起来表达似然函数,基于下面的两个定理。
定理 17:
证明:
定理 18 [似然函数的前向/后向概率表达]: 矩阵形式为
证明:
利用矩阵运算,上式可写为
一个更直观地证明上述矩阵形式的方法是,由定理 6 可得
仿照前向概率的部分,这里我们先给出利用后向概率求全部观测值概率(似然函数)的向后算法的框架,然后给出向后算法的细节及伪代码实现。附录中的 Matlab 程序把向前和向后算法统一起来,在一个函数中加以实现。
向后算法(backward approach)
向后算法也是用来求概率 ,也就是似然函数的值。它是一个从终值开始,经过迭代最终到达初值的过程,这就是所谓的“向后”。
- 初始化(终值)
或者等价的
- 递归过程
或者等价的
- 使用初值计算概率
或者等价的
其他数值参量
到现在为止,我们已经介绍了前向/后向概率和向前/向后算法,也就是说,隐马尔可夫链的第一个基本问题已经回答完毕了。不过,在回答第二个、第三个基本问题之前,我们还是希望再论述一下其他相关的数值参量(other Desired Quantities)。一方面,这些数值参量与向前/向后概率有很密切的关系;另一方面,它们也是后面介绍的 Baum-Welch 算法的基础。
γ 与 g
定义 7:
从定义 7 可以看出, 是给定所有观测值 的条件下,状态变量在 时刻位于 的条件概率。之前我们曾经定义过 来表示状态在 时刻位于 的无条件概率,因此, 可以被看作 的条件估计(conditional guess/estimation),给定全部观测值这个条件。
与之前的做法类似,这里我们也用 来作为它的向量表示
定理 19:
证明:
接下来我们定义
定义 8
很自然的,它的向量表示为
可不仅仅是把 个 相加这么简单,它有很重要的性质
定理 20: 是 (1) 给定所有观测值的条件下,状态变量位于 的期望次数; (2) 给定所有观测值的条件下,状态变量从 转移出去的期望次数(在最后时刻 无转移)
证明:
构造示性函数 如下
则有
因此, 是位于 的期望次数,也是从 转移出去的期望次数,在给定所有观测值的条件下。
ε 与 h
定义 9:
从上述定义可知, 是给定全部观测值 的条件下,状态变量在 时刻位于 ,在 时刻转移到 的条件概率。与 的情况类似,它也可被视为相应的无条件概率的条件估计。
也可以用 等参量来表示,不过我们先要给出下面这个定理。
定理 21:
证明:
定理 22:
证明:
最后一个定义的数值参量是 ,即
定义 10:
与前面的向量表示类似,这里我们也可以写出 的矩阵表示(Matrix Representation)
与 类似, 也有一个很重要的性质。
定理 23: 是在给定所有观测值的条件下,状态变量从 转移到 的期望次数
证明:
仍引入示性函数
因此
故 是在给定所有观测值的条件下,状态变量从 转移到 的期望次数。
期望最大化算法
我们将先跳过第二个问题,直接回答第三个问题,即参数估计。参数估计是隐马尔可夫链三个问题中最难的也是最核心的,解决这个难题一般用期望最大化算法(Expectation Maximization, EM),在隐马尔可夫链框架下也称为 Baum-Welch 算法。
期望最大化算法的基本思想
期望最大化算法可视为极大似然估计方法的拓展,主要用来解决含有不可观测变量的参数估计问题。假设在我们的统计模型中,有两组变量, 是可观测变量(observed), 是不可观测变量(unobserved or hidden),则 被称为完整数据(complete data),而完整数据的似然函数(complete data likelihood function)为
评注: 当含有不可观测变量时,似然函数是随机的,因为 是随机数据(不知道确切数值),故我们可以把似然函数看成当 给定时,关于 的函数。
相应的,
被称为不完整数据的似然函数(incomplete data likelihood function)。
在完整数据的似然函数基础上,我们定义完整数据的对数似然函数(complete data log-likelihood function, CDLL),这个 CDLL 是我们今后要处理的主要对象
当然,这个 CDLL 也是一个随机变量,因为 是随机的。它也仍可被视为关于 的函数,当 给定时。
期望最大化算法(EM)如其名所示,包含两个步骤:求期望(E-Step)与最大化(M-Step)。下面我们分别加以论述。
E-Step
E-Step 的核心思想是求完整数据对数似然函数(CDLL)的条件期望。这个条件期望是对于随机数据 而言的,给定观测值 和目前的参数估计值 。
定义 11 [CDLL 的条件期望,Q 函数]:
注: 在 函数中
- 是常数,在计算条件期望时使用
- 是一个正常变量,有条件分布 或
- 是随机数据,有条件分布
因此,我们可以计算 函数
M-Step
M-Step 主要是求使得 函数(条件期望)最大化的那个 ,用数学语言表示就是
E-Step 与 M-Step 交替进行,直到满足一定条件时为止,故 EM 算法本质上是一个数值迭代的算法。
Baum-Welch 算法
Baum-Welch 算法是在隐马尔可夫链环境下期望最大化算法的特殊形式。在泊松—隐马尔可夫链(Poisson-HMM)环境下,;在正态—隐马尔可夫链(Normal-HMM)环境下,。隐马尔可夫链的完整数据对数似然函数(CDLL)为
这里 是随机数据,相当于上文中提到的不可观测变量 。
基于定理 4,有
故 HMM 的 CDLL 可写为
因此在隐马尔可夫链环境下, 函数可表示为
可见, 函数可以被分解为三项之和,而这三项我们又可以分别处理。
(1) 对于第一项,我们可仅关注于第 1 个时间层,即仅考虑 时的边缘分布,因此
(2) 对于第二项,我们仅关注在每个时间层,从 到 的转移,
(3) 对于第三项,我们仅关注在每个时间层,在所有状态下的发射,
故在隐马尔可夫链环境下,我们可以把 函数简化为
Baum-Welch 算法仍是分为 E-Step 和 M-Step 两大步骤(其本质上仍是 EM 算法)。
E-Step
给定观测值序列 ,给定当前的参数估计值 的情况下,计算 等参量值,则 就可以算出,继而 函数的值(条件期望)也可以算出,这也就是 E-Step 的意义。
M-Step
求使 函数(条件期望)最大化的参数值 。因为我们已经把 函数分解为三个部分,且可以观察到, 仅与 (初始分布)相关, 仅与 (转移矩阵)相关, 仅与 (发射参数)相关,则我们可以分别最优化 ,继而得到 Baum-Welch 公式。
首先我们对 进行最优化,得到 的最优估计量
定理 24 [初始分布的最优估计]:
证明:
最优化模型为
其拉格朗日函数 (Lagrange Function) 为
此外
同时我们注意到 是一个(条件)概率,有
因此
综合以上信息,我们可以得出
接下来我们对 进行最优化,得到 的最优估计量。
定理 25 [转移概率的最优估计]:
证明:
可以知道,马尔可夫链转移概率的最优估计是
其中 是从状态 到状态 的转移次数, 是从状态 转移出去的次数之和。
由定理 23 可知, 是给定所有观测值的条件下,从 转移到 的期望次数;由定理 20 又可以知道, 是给定所有观测值的条件下,从 转移出去的期望次数。
因此,转移概率的最优估计是
证毕
最后我们对 进行最优化,得到发射参数的最优估计量。对于不同的隐马尔可夫链而言,前两个最优估计量 均是相同的,但不同的 HMM 其发射分布不同,因此其发射参数的最优估计量也并不相同。对于泊松-隐马尔可夫链和正态-隐马尔可夫链来说,其发射参数的最优估计量有明晰的解析表达式。
定理 26 [泊松-隐马尔可夫链的发射参数最优估计]:
证明:
在 Poisson-HMM 环境下,其发射分布是
我们需要最大化
因此
注: 这里的分母是 ,不是 ,因为 。
定理 27 [正态-隐马尔可夫链的发射参数最优估计]:
证明:
在 Normal-HMM 环境下,其发射分布是
我们需要最大化
分别对 求偏导并令偏导数为 可得
-
(这里 的表达式与 Poisson-HMM 中 相同)
-
证毕
在最后,我们给出使用期望最大化算法估计泊松-隐马尔可夫链和正态-隐马尔可夫链参数的 Baum-Welch 公式。
泊松-隐马尔可夫链的 Baum-Welch 公式
正态-隐马尔可夫链的 Baum-Welch 公式
若估计的是正态分布的标准差,则调整为
维特比算法
现在我们来回答隐马尔可夫链的第二个基本问题,解码。所谓全局解码 (Global Decoding),就是找到最优的状态序列 ,其能最好的解释观测到的序列 。从数学上讲,我们希望最大化
等价的,也就是最大化
定义 12 [最优状态序列 (Optimal State Sequence)]: 若 是最优状态序列,则
寻找最优序列一般使用维特比算法 (Viterbi Algorithm),我们先给出 的定义及其递归公式
定义 13:
定理 28** [ 的递归公式 (recursion)]:
证明:
我们引入 的目的是给出如下计算最优序列的公式,即维特比公式。
定理 29 [维特比公式 (Viterbi Formula)]:
证明:
(1) 找出
因此,找出 等同于找出 来最大化 ,即
(2) 找出
注意到现在 已经被找出,因此 是固定的。故找出 等同于找到 来最大化 ,即
找出 后
(3) 找出
现在 已经被找出,因此 是已知的。故找出 等同于找到 来最大化 ,即
找出 后
(4) 基于同样的逻辑,可以得出
证毕
NO.23.tip: Mercer核
背景
泛化特性可以归结为我们如何编码关于两个输入向量相似性的先验知识。如果我们知道 与 相似,那么就可以引导模型使这两个位置(即 和 )的预测输出相似。
为了定义相似性,我们引入了核函数(kernel function)的概念。"核"一词在数学中有许多不同的含义;此处我们考虑一个 Mercer核,也称为正定核(positive definite kernel)。它是指任何满足以下条件的对称函数 :
对于 个(唯一)点的任何集合 ,以及任意数值 的选择。我们假设 ,因此在上面公式中,只有对于所有 ,有 时,其等式才成立。
理解这种情况的另一种方法如下。给定一组 个数据点,让我们将格拉姆矩阵(Gram matrix)定义为以下 的相似矩阵:
当且仅当对于任何一组(不同的)输入 ,如果格拉姆矩阵是正定的,我们称 是 Mercer核。
源与流
平稳核
对于实值输入 ,通常使用平稳核(stationary kernel),也称为移位不变核(shift-invariant kernel),其形式为 的函数,其中 ;因此输出仅取决于输入之间的相对差。此外,在许多情况下,重要的是差异的大小:
平方指数核
平方指数(SE)核,有时也称为指数二次核或径向基函数(Radial Basis Function, RBF)核,其定义为:
其中, 对应于核的长度尺度(length-scale),即我们期望差异产生影响的距离。
根据式(3),我们可以将该核重写为:
这是我们前面遇到的径向基函数核,有时也被称为高斯核(Gaussian kernel)。
ARD核
我们可以通过用马氏距离代替欧几里得距离,来推广径向基函数核,如下所示:
其中,。如果 是对角矩阵,则可以记作
我们可以将 解释为总体方差,将 解释为定义维度 的特征长度尺度(characteristic length scale)。如果 是不相关的输入维度,我们可以设置 ,因此相应的维度将被忽略。这被称为自动相关性确定。因此,相应的核被称为 ARD核。
Matérn
平方指数核产生了无限可微的函数,因此是非常光滑的。对于许多应用程序,最好使用 Matérn核,这会产生"更粗糙"的函数,这类函数可以更好地对局部"摆动"进行建模,而不必使整体长度尺度非常小。
Matérn核具有以下形式:
其中, 是一个修正的贝塞尔函数, 是长度尺度。当且仅当 时,从这个高斯过程采样的函数是 次可微的。当 时,该函数将接近平方指数核。
对于值 ,该函数简化如下:
值 对应于 Ornstein-Uhlenbeck 过程,该过程描述了粒子经历布朗运动的速度。相应的函数是连续的,但不可微,因此具有非常明显的"锯齿状"。
周期核
创建周期性一维随机函数的一种方法是将 映射到二维空间 ,然后在 -空间中使用平方指数核:
上式之所以成立,是因为 。我们可以对此进行推广,通过指定周期 来得到周期核(periodic kernel),也称为"指数-正弦-平方"核(exp-sine-squared kernel):
其中, 是周期, 是长度尺度。
相关的核为余弦核(cosine kernel):
有理二次核
我们将有理二次核定义为:
我们认识到这与学生 密度成正比。因此,有理二次核可以被解释为不同特征长度的平方指数核的尺度混合。具体来说,设 ,并假设 。那么,可以证明
当 时,这简化为平方指数核。
来自谱密度的核
考虑满足 平稳核的情况,其中 ,。让我们进一步假设 是正定的。在这种情况下,Bochner 定理表明,我们可以通过傅里叶变换来表示 :
其中,,, 是频率, 是谱密度。
我们可以很容易地从谱密度推导出几个核,并获得直观理解。如果我们对径向基函数核进行傅里叶变换,我们会发现谱密度 。因此,谱密度也是高斯的,但带宽与长度尺度超参数 成反比。也就是说,当 变大时,谱密度塌陷为点质量。这一结果很直观:随着长度尺度的增加,我们的模型将点视为在大距离上相关,它变化缓慢并变得非常平滑,因此是低频的。一般来说,由于高斯分布具有相对较轻的尾部,因此我们可以看到径向基函数核通常不支持高频解。
相反,我们可以使用学生 谱密度。学生 谱密度具有较重的尾部,将为更高的频率提供更大的支持。对这个谱密度进行傅里叶逆变换,我们可以得到 Matérn核,其自由度对应于谱密度中的自由度。事实上, 值越小,使用 Matérn核对数据进行拟合时得到的曲线就越不平滑,且包含的频率成分也越高。
我们还可以通过将谱密度建模为高斯的"尺度-位置"混合并进行傅里叶逆变换来推导出谱混合核。由于高斯的"尺度-位置"混合在分布集中是稠密的,因此可以近似任何谱密度,所以该核可以任意精度地近似任何平稳核。因此,谱混合核形成了一种强大的核学习方法。
非平稳核
平稳核假设两个输入之间的相似性度量与输入的位置无关,即 仅取决于 。非平稳核(nonstationary kernel)则放宽了这一假设。非平稳核有助于解决各种问题,例如环境建模,其中位置之间的相关性可能会根据环境中的潜在因素而变化。
多项式核
非平稳核的一种简单形式是 阶多项式核(polynomial kernel),也称为点积核(dot product kernel),定义如下:
这包含所有 阶的单项式。例如,如果 ,那么我们将得到二次核(quadratic kernel);在二维空间中,这变成:
通过使用非齐次多项式核(inhomogeneous polynomial kernel),我们可以将其推广为包含 次以下的所有项:
例如,如果 并且输入是二维数据,则我们有
吉布斯核
考虑径向基函数核,其中长度尺度超参数和信号方差超参数都与输入有关;这被称为吉布斯核(Gibbs kernel),其定义如下:
如果 和 是常数,这就简化为标准的径向基函数核。我们可以通过使用另一个高斯过程来对这些核参数相对于输入的函数依赖性进行建模。
非向量(结构化)输入的核
当输入是结构化对象(例如字符串和图形)时,核特别有用,因为通常很难"特征化"可变大小的输入。例如,我们可以定义一个字符串核,该核根据字符串的公共 元数量来比较字符串。
我们也可以在图上定义核。例如,随机游走核在概念上同时对两个图执行随机游走,然后计算两个随机游走产生的路径数量。这可以有效地进行计算。
从旧核中创建新核
给定两个有效核 和 ,我们可以使用以下任何一种方法创建一个新核:
例如,假设我们从线性核 开始。我们知道这是一个有效的 Mercer核,因为相应的格拉姆矩阵只是数据的(缩放的)协方差矩阵。从以上规则中,我们可以看出,多项式核 是有效的 Mercer核。
我们也可以使用上述规则来确定高斯核是有效的核。为了理解这一点,需要注意的是:
因此,
是有效的核。
我们还可以使用加法或乘法对核进行组合:
将两个正定核相乘总是得到另一个正定核。对于每个核的单个属性,这是一种获得各个属性合取的方法。
此外,将两个正定核加在一起总是会得到另一个正定核。对于每个核的单个属性,这是一种获取各个属性析取的方法。
Mercer定理
回想一下,任何正定矩阵 都可以使用 形式的特征分解来表示,其中 是特征值 的对角矩阵, 是包含特征向量的矩阵。现在考虑 的元素 :
其中, 是 的第 列。如果我们定义 ,那么我们有:
其中, 是核矩阵的秩。因此,我们看到,可以通过执行一些特征向量的内积来计算核矩阵中的各个条目,而这些特征向量由核矩阵的特征向量隐式地定义。
该基本思想可以推广到核函数,而不仅仅是核矩阵,如下文所述。首先,对于核 ,如果该核具有测度 的特征值 ,则可以将核 的特征函数(eigenfunction) 定义为满足以下条件的函数:
我们通常按特征值递减的顺序对特征函数进行排序,。特征函数相对于 是正交的:
其中, 是 Kronecker 函数。有了这个定义,我们就可以陈述 Mercer定理。非正式而言,任何正定核函数都可以表示为以下无限和:
其中, 是核的特征函数, 是相应的特征值。这是式(33)的函数类比。
退化核(degenerate kernel)只有有限数量的非零特征值。在这种情况下,我们可以将核函数重写为两个有限长度向量之间的内积。例如,考虑式(19)中的二次核 。如果我们定义 ,那么我们可以将其记作 。因此我们看到这个核是退化的。
现在考虑径向基函数核。在这种情况下,相应的特征表示是无限维的。然而,通过使用核函数,我们可以避免处理无限维向量。
从上述内容中可以看到,我们可以使用对核函数的调用来替换显式(可能是无限维)特征空间中的内积运算,即我们使用 替换 。这被称为核技巧(kernel trick)。
具有随机特征的近似核
尽管核的强大之处在于避免使用输入的非标准化表示的能力,但这种核化方法可能需要 的时间来计算格拉姆矩阵 的逆。结果使得在大规模数据上使用这种方法变得困难。幸运的是,我们可以使用随机选择的 个基函数的有限集来近似许多核的特征图,从而将成本降低到 。
我们将通过使用式(17)中的 Bochner 定理来展示如何对移位不变核实现这一点。在高斯径向基函数核的情况下,我们已经看到谱密度是一个高斯分布。因此,我们可以通过对随机高斯向量进行采样来轻松地计算该积分的蒙特卡罗近似值。这就产生了以下的近似:,其中(实值)特征向量由下式给出:
在上式中,,并且 是随机高斯矩阵,随机高斯矩阵中的条目是从 中采样的,并且满足独立同分布。式(38)中的表示被称为随机傅里叶特征(random Fourier features, RFF)或"随机厨房水槽的加权和"(weighted sums of random kitchen sinks)。
可以为其他类型的核创建类似的随机特征表示。然后,我们可以通过定义 将这些特征用于监督学习,其中 是随机高斯矩阵, 的形式取决于所选的核。这相当于一层多层感知器,这个多层感知器具有随机"输入到隐藏层"的权重;由于我们只优化"隐藏层到输出"的权重 ,因此该模型等效于具有固定随机特征的线性模型。如果我们使用足够的随机特征,我们可以近似核化预测模型的性能,但现在的计算成本是 而不是 。
遗憾的是,随机特性可能会导致比使用非退化核更差的性能,因为随机特性没有足够的表达能力。
NO.24.tip: 高斯过程
背景
为了更详细地解释高斯过程,回想一下,长度为 的高斯随机向量 由其均值 和协方差 定义。现在考虑一个函数 ,在一组输入 上求值。设 是这些点上的未知函数值的集合。如果 对于 个点的任意集合均为联合高斯分布,那么我们说 是一个高斯过程。这样的高斯过程由其均值函数 和协方差函数(covariance function) 定义,函数 是任何正定 Mercer 核。例如,我们可以使用形式为 的径向基函数核。
我们将相应的高斯过程表示为:
其中
这意味着,对于任何有限的点集 ,我们有
其中,,。
高斯过程可以用于定义先验函数。我们可以在所选择的任何一组点上对此先验进行评估。然而,为了从数据中学习函数,我们必须使用似然函数来更新先验。我们通常假设有一组 个独立同分布的观测 ,其中 。如果我们使用高斯似然,那么我们可以计算闭合形式的后验 。对于其他类型的似然,我们需要使用近似推理。在许多情况下, 并未被直接观察到,而是作为潜在变量模型的一部分,无论是在监督的环境还是无监督的环境中,都是如此。
高斯过程的泛化特性由其协方差函数(核)控制。这些核存在于再生核希尔伯特空间中。
高斯过程最初是为空间数据分析而设计的,其中输入是二维数据。这种特殊情况被称为 kriging。然而,高斯过程也可以应用于更高维度的输入。此外,虽然高斯过程传统上仅限于处理小型数据集,但现在已能够将其应用于包含数百万个点的问题,并且基本上可以实现精确推理。
此外,虽然高斯过程历来被认为是平滑插值器,但高斯过程现在可以通过协方差函数学习和多层模型定期执行表征学习。这些研究进展清楚地表明,高斯过程和神经网络并不是相互竞争的,而是具有互补性的,将两者结合可以获得比单独使用深度学习更好的性能。
高斯过程和神经网络之间的联系也可以通过考虑神经网络的无限极限来进一步理解,这些神经网络收敛到具有特定协方差函数的高斯过程。
因此,高斯过程是一种非参数化模型,能够进行扩展,并可执行表征学习。但是,在深度学习的时代,我们为什么要使用高斯过程呢?选择高斯过程有若干令人信服的理由,包括:
- 高斯过程通常提供校准良好的预测分布,具有认知(模型)不确定性的良好表征——不确定性是由于不知道诸多解决方案中哪一个是正确的而产生的。例如,随着我们远离数据,一致性解决方案的多样性增加,因此我们预计会有更大的不确定性。
- 对于连续的回归问题,尤其是时空问题(例如天气插值和预测),高斯过程通常是最先进的方法。在回归问题中,高斯过程推理通常也可以以闭合形式执行。
- 高斯过程的边缘似然为灵活的核学习提供了强大的机制。核学习使我们能够提供长期的推断,也告诉我们以前未知数据的可解释性,以促进科学发现。
- 高斯过程通常被用作优化昂贵目标的概率代理,这一过程被称为贝叶斯优化。
源与流
高斯似然的高斯过程
我们使用高斯似然讨论的高斯过程,在这种情况下,所有的计算都可以使用标准的线性代数方法以封闭的形式进行。
使用无噪声观测的预测
假设我们观察一个训练集 ,其中 是在 处评估的函数的无噪声观测值。如果我们要求高斯过程为该过程已经看到的 值预测 ,我们希望高斯过程返回没有不确定性的答案 。换言之,高斯过程应该充当训练数据的插值器。此处我们假设观测到的函数值是无噪声的。稍后,我们将考虑噪声观测的情况。
对于可能不在 中的新输入,现在我们考虑预测这种输入所对应的输出情况。具体而言,给定大小为 的测试集 ,我们希望预测函数输出 。根据高斯过程的定义,联合概率分布 具有以下形式:
其中,,。 的大小为 , 的大小为 , 的大小为 。
根据高斯条件的标准规则,后验具有以下形式:
我们看到,该模型完美地插值了训练数据,并且随着我们远离观测数据,预测不确定性也随之增加。
注意,上述采样 个点的方法具有 的成本。使用文献 [Ple+18; Wil+20a] 中的方法,可以将其降低到 的时间。
使用噪声观测的预测
我们展示了当训练数据无噪声时如何进行高斯过程回归。现在让我们考虑这样一种情况,即我们观察到的是底层函数的噪声版本,即 ,其中 。在这种情况下,模型不需要对数据进行插值,但必须“接近”观测数据。观测到的噪声响应的协方差为:
其中,。换言之:
观测数据和测试点上潜在的无噪声函数的联合密度由下式给出:
因此,一组测试点 的后验预测密度为
在单个测试输入的情况下,这将简化如下:
其中,,。如果均值函数为零,我们可以将后验均值记作:
其中,
拟合该模型相当于计算式 (18) 中的 。这通常通过计算 的 Cholesky 分解来完成。一旦我们计算了 ,就可以在 的时间内计算每个测试点的均值,以及在 的时间内计算方差。
权重空间与函数空间
我们将证明贝叶斯线性回归是高斯过程的特例。
考虑线性回归模 ,其中 和 。如果我们使用高斯先验 ,则后验如下所示:
其中, 是大小为 的设计矩阵。
因此, 的后验预测分布为
其中,。这就解决了权重空间(weight space)中的推理和预测问题。
我们现在证明,这等价于高斯过程使用形式为 的核所做的预测。为了理解这一点,设 ,。使用这个符号和矩阵求逆引理,我们可以将式(21)重写如下:
这与式(15)中的结果相匹配,假设 。通过将值为 1 的常数特征添加到 ,可以捕获非零均值。
因此,我们可以从贝叶斯线性回归中推导出高斯过程。然而,需要注意的是,线性回归假设 是一个有限长度的向量,而高斯过程允许我们直接根据核来工作,核可能对应于无限长的特征向量。也就是说,高斯过程在函数空间中运作。
半参数话高斯过程
到目前为止,我们大多假设高斯过程的均值为 0,并依靠其插值能力对均值函数进行建模。有时,拟合均值的全局线性模型,并使用高斯过程对残差进行建模是有用的,如下所示:
其中,,并且 是一些固定的基函数。这种方法结合了参数化模型和非参数化模型,称为半参数化模型(semi-parametric model)。
如果我们假设 ,那么我们可以将这些参数积分出来,得到一个新的高斯过程:
设 是一个大小为 的训练样例矩阵,并且 是一个大小为 的测试样例矩阵。测试输入 的相应预测分布具有以下形式:
这些结果可以解释如下:均值是来自高斯过程的常规均值,加上使用 表示的来自线性模型的全局偏移;协方差是来自高斯过程的常规协方差,加上由于 的不确定性而产生的额外正项。
在回归参数的无信息先验的极限下,即当 时,这简化为:
边缘似然
大多数核都包含一些自由参数。例如,RBF-ARD 核具有以下形式:
其中,每个 是特征维度 的长度尺度。设使用 表示这些(以及观测噪声方差 ,如果存在)参数。我们可以按照下式计算这些参数的似然:
由于我们对函数 进行积分,因此我们通常称 为超参数,并且称 为边缘似然。
由于 是一个高斯过程,因此我们可以使用相应高斯的边缘似然来计算上述积分。结果为
第一项是观测值和预测值之间马氏距离的平方:拟合越好,距离越小。第二项是协方差矩阵的对数行列式,该行列式测量模型的复杂性:越光滑的函数将具有越小的行列式,因此 对于更简单的函数将更大(即其值不是较小的负值)。边缘似然衡量拟合度和复杂性之间的权衡。
计算和数值问题
我们将讨论在实现上述公式时出现的计算和数值问题。为了简化符号,我们假设先验均值为零,即 。
后验预测均值由 给出。出于数值稳定性的考虑,直接求 的逆是不明智的。一个更鲁棒的替代方案是计算 Cholesky 分解,即 ,这需要 的时间。基于此,我们可以计算:
其中,,此处我们使用了反斜杠运算符来表示回代。
我们可以使用下式,计算在 的时间内,每个测试用例的方差:
其中,。
最后,可以使用下式计算对数边缘似然:
我们可以看到,总体成本主要由 决定。
具有非高斯似然的高斯过程
我们关注的是使用高斯似然进行回归的高斯过程。在这种情况下,后验也是一个高斯过程,所有的计算都可以采用解析方式进行。然而,如果似然是非高斯的,我们就不能再精确地计算后验。我们可以通过改变似然的形式来创建各种不同的“经典”模型。
二元分类
我们将考虑使用高斯过程的二元分类。如果我们使用 sigmoid 链接函数,我们有 。如果我们假设 ,则我们有 ,因为 。如果我们使用 probit 链接函数,则我们有 ,其中 是标准正态分布的累积分布函数。更一般地,设 。整体对数联合概率具有以下形式:
近似推理的最简单方法是使用拉普拉斯近似。对数联合概率梯度和黑森矩阵由下式给出:
其中, 是一个对角矩阵,因为似然是跨样例因子分解的。在收敛时,后验的拉普拉斯近似采用以下形式:
其中, 是最大后验估计。
为了提高准确性,我们可以使用变分推理,其中我们假设 ;然后,我们使用(随机)梯度下降来优化 和 ,而不是假设 是模式下的黑塞矩阵。
一旦我们有了高斯后验 ,我们就可以使用标准高斯过程预测来计算 。最后,我们可以使用下式来近似二元标签上的后验预测分布:
该一维积分可以使用 probit 近似进行计算。在这种情况下,我们有 ,其中 ,。
多类别分类
多类别分类(又称为多元分类)的情况有些复杂,因为函数现在需要返回一个由 个 logits 所构成的向量以获得 ,其中 。标准的假设是 。因此,每个类别有一个潜在函数,这些函数是先验独立的,并且可以使用不同的核。
我们可以推导出该模型的拉普拉斯近似,或者,我们可以使用变分方法,关于多项式 softmax 的局部变分界。
泊松回归的高斯过程(COX过程)
我们将描述泊松回归,其中基本的对数速率函数由高斯过程建模。这被称为 Cox 过程(Cox process)。我们可以使用拉普拉斯、马尔可夫链蒙特卡罗方法或者随机变分推理在该模型中执行近似后验推理。我们应用马尔可夫链蒙特卡罗方法以及随机变分推理。在变分推理的情况下,我们还必须指定后验的形式;我们使用高斯近似计算变分高斯过程后验 ,并对核参数使用点估计。
NO.25.tip: 诱导点近似
背景
高斯过程的主要缺点是,对 核矩阵求逆所需的时间复杂度为 ,这使得该方法对于大数据集来说太过缓慢。研究学者已经提出了许多不同的近似方案来加速高斯过程。
稀疏近似又称为诱导点近似。加速高斯过程推理的一个简单方法是使用更少的数据。一种更好的方法是尝试将 个训练点 "汇总"为 个诱导点(inducing point)或伪输入(pseudo input)。这允许我们使用 来代替 ,其中 是在训练点观察到的函数值的向量, 是在诱导点估计的函数值。通过优化 ,我们可以学会将训练数据 "压缩"为"瓶颈" ,从而加快计算,将时间复杂度从 降低到 。这被称为稀疏高斯过程(sparse GP)。使用变分推理的框架可以使整个过程变得严谨。
源与流
我们讨论了一种基于诱导点(inducing point)的近似方法,也称为伪输入(pseudoinput),这种方法就像是我们可以条件化地训练数据的学习总结,而不是对全部数据条件化。
设 是观测到的输入, 是函数值的未知向量(假设存在噪声观测 )。设 为一个或多个测试点 处的未知函数值。最后,假设我们有 个额外的输入 ,其对应的未知函数值为 (通常用 表示)。精确的联合先验具有以下形式:
(我们记作 而不是 ,因为输入可以被认为只是随机函数 的索引。)
我们将以这样一种方式选择 ,即将该值作为数据的重复统计量,这样我们就可以仅使用 而不是 来预测 ,即,我们假设 。因此,我们将先验近似如下:
注意,这种方法通常被称为稀疏高斯过程,因为该方法使用训练数据的一个子集 ,而不是全部数据 来预测 。
由此,我们可以推导出以下训练和测试条件:
上述公式可以看作是对无噪声观测 的精确推理。为了提高计算速度,我们将对 和 做进一步的近似,如下所述。然后,我们可以推导出近似先验 ,并以通常的方式将其作为观测的条件。
我们下面讨论的所有近似都会产生 的初始训练成本,然后每个测试用例的预测均值都会花费 的时间,预测方差会花费 的时间。(将其与训练时间 以及测试时间 和 进行比较,以进行精确推断。)
SOR/DIC
假定我们假设 和 ,从而使得条件是确定性的。这被称为确定性诱导条件(Deterministic Inducing Conditional,DIC)近似,或回归子集(Subset Of Regressors,SOR)近似。相应的联合先验具有以下形式:
让我们定义 ,以及 ,那么预测分布为:
这等价于高斯过程的一般情况,除了我们将 替换为 。这相当于使用以下核函数执行高斯过程推理:
核矩阵的秩为 ,因此高斯过程是退化的。此外,当 或 远离所选点 之一时,核将接近 ,这可能导致预测方差的值被低估。
DTC
克服确定性诱导条件近似过度自信的一种方法是只假设 ,并设 为精确值。这被称为确定性训练条件(Deterministic Training Conditional,DTC)方法。
相应的联合先验具有以下形式:
因此,预测分布变成
预测均值与回归子集中的相同,但由于给定 的 的不确定性,方差较大(因为 是正定的)。
FITC
一种广泛使用的近似假设 是完全因子化的,即
这被称为完全独立的训练条件(Fully Independent Training Conditional,FITC)假设。与回归子集方法和确定性训练条件方法相比,该方法减少了不确定性,因为它没有对 和 之间的关系做出任何确定性假设。
其联合先验具有以下形式:
单个测试用例的预测分布由下式给出:
其中,,。如果我们有一批测试用例,那么我们可以假设这些测试用例是条件独立的(一种称为完全独立条件(Fully Independent Conditional,FIC)的方法),并对上述公式进行相乘运算。
计算成本与回归子集以及确定性训练条件方法相同,但由于非退化核,该方法避免了一些弊端。特别地,可以证明完全独立条件方法等价于具有以下非退化核的精确高斯过程推理:
学习诱导点
到目前为止,我们还没有指定如何选择诱导点或伪输入 。我们可以像处理核超参数一样处理这些参数,即选择这些参数以最大化对数边缘似然,如下所示:
其中, 的定义取决于方法,即 ,。
如果输入域是 ,我们可以使用梯度方法优化 。然而,核方法的吸引力之一是这些方法可以处理结构化输入。在这种情况下,我们不能使用梯度方法来选择诱导点。一种简单的方法是从训练集中选择诱导点,或者使用有效选择机制。然而,我们也可以使用离散优化方法。
NO.26.tip: 互信息
背景
KL散度为我们提供了一种测量两种分布相似程度的方法。我们应该如何衡量两个随机变量的相互依赖性?我们可以把测量两个随机变量相互依赖性的问题变成关于这两个随机变量分布相似性的问题。这就产生了两个随机变量之间的互信息(Mutual Information, MI)的概念,接下来我们将定义互信息。
定义
随机变量的 和 之间的互信息定义如下:
在 和/或 表示变量集合的情况下,记作 而不是 。例如,我们可以使用 来表示 和 之间的互信息。对于连续随机变量,我们使用积分来代替求和。
很容易看出,即使对于连续随机变量,互信息也总是非负值,因为:
当且仅当 时,我们达到边界 0。
解释
互信息是联合和因子边缘分布之间的 KL 散度,这表明如果我们之前将两个变量视为独立的模型 ,现在更新为对其真实联合密度 建模的模型,则互信息测量信息增益。
为了进一步理解互信息的含义,我们可以借助于使用联合熵和条件熵的形式重新表达互信息,如下所示:
因此,我们可以将 和 之间的互信息解释为观察 之后,关于 的不确定性有所减少;或者通过对称性,将互信息解释为观察 之后,关于 的不确定性有所减少。顺便说一句,这个结论提供了另一种证明,即条件从平均程度上会减少熵的值。特别地,我们有 ,因此 。
我们也可以得到不同的解释。可以证明:
最后,我们可以证明:
数据处理不等式
假设有一个未知变量 ,我们观察到该变量的一个噪声函数,称之为 。如果我们以某种方式处理有噪声的观测结果,以创建一个新的变量 ,那么直观上应该很明显,我们无法增加关于未知量 的信息量。这被称为数据处理不等式。我们现在更正式地陈述这一点,然后加以证明。
定理 假设 构成一个马尔可夫链,因此 。于是,。
证明
根据互信息的链式法则,我们可以通过两种不同的方式扩展互信息:
由于 ,我们有 ,因此
由于 ,我们有 。同样,我们可以证明 。
充分统计量
接下来我们介绍数据处理不等式所产生的一个重要结果。假设我们有一个链 。于是
如果等式成立,那么我们称 是数据 的充分统计量,该统计量用于推断 。在这种情况下,我们可以等价地记作 ,因为我们可以通过已知的 来重构数据,就像通过已知的 来重构数据一样准确。
充分统计量的一个例子是数据本身,,但这作用不大,因为这个信息根本没有总结数据。因此,我们定义了一个最小充分统计量(minimal sufficient statistic) ,该统计量是充分的,并且不包含关于 的额外信息,因此 在不丢失与预测 相关信息的情况下最大限度地压缩数据 。更正式地,如果对于某个函数 和所有充分统计量 , 成立,那么我们称 是 的最小充分统计量。我们可以将情况总结如下:
其中, 取 并向其添加冗余信息,从而创建一对多的映射。
例如,一组 个伯努利试验的最小充分统计量被简单地记为 ,并且 是成功的次数。换句话说,我们不需要跟踪正面朝上和反面朝上的整个序列及其顺序,我们只需要跟踪正面朝上的总数和反面朝上的总数。类似地,为了推断具有已知方差的高斯分布的均值,我们只需要知道经验均值和样本数。
我们将指数族视为最小的分布族,因为指数族分布除了对数据的一些统计量进行约束之外,不包含其他信息。因此,用于生成指数族分布的统计数据是充分统计量,这是有道理的。这也暗示了 Pitman-Koopman-Darmois 定理的一个更显著的事实,该定理认为,对于任何域是固定的分布,只有指数族才能随着样本数量的增加而接受足够的有界维数统计信息。
多元互信息
接下来我们介绍几种可以将互信息的概念推广到一组随机变量的方法。
总相关性
定义多变量互信息的最简单方法是使用总相关性(total correlation)或多信息(multi-information),其定义为:
例如,对于三个变量,该式变成:
其中, 是联合熵:
可以证明多信息总是非负的,并且当且仅当 时多信息为零。然而,这意味着即使只有一对变量相互作用,这个量也是非零的。例如,如果 ,则总相关性将为非零值,即使不存在三向交互作用(3 way interaction; 又称为三阶交互作用)。
交互信息(协同信息)
条件互信息可用于给出多元互信息(Multivariate Mutual Information, MMI)的归纳定义,如下所示:
这被称为多重互信息(multiple mutual information)或协同信息(coinformation; 又称为共同信息)。这个定义相当于交互信息(interaction information),只是有一个符号改变。
对于三个变量,多元互信息的定义为:
这可以解释为当以第三个变量为条件时,两对变量之间互信息的变化。请注意,这个量的自变量是对称的。
根据条件互信息的定义,我们有:
因此,我们可以将式(16)改写如下:
这表明,多元互信息是我们在分别给定 和 的情况下对 学习的程度与在联合给定 和 的情况下对 学习的程度之间的差异。
协同和冗余
多元互信息为 。我们发现,它可以是正值、零,或者负值。如果由 提供的关于 的一些信息也由 提供,那么在 和 之间存在一些冗余(redundancy)(相对于 )。在这种情况下,$\mathbb{I}(X; Z) + \mathbb{I}(Y; Z) > \mathbb{I}(X, Y; Z)$。相比之下,如果当我们同时提供 和 的信息时,我们就会对 有更多的了解,也就是说在 和 之间存在一些协同(synergy)(相对于 )。在这种情况下,$\mathbb{I}(X; Z) + \mathbb{I}(Y; Z) < \mathbb{I}(X, Y; Z)$,因此多元互信息将为负值。
多元互信息和因果关系
多元互信息的符号可以用于区分不同类型的有向图模型,这些模型有时可以使用因果进行解释。例如,考虑一个形式为 的模型,其中 是 和 的"原因"。具体示例如下,假设 表示下雨的事件, 表示天空阴沉的事件, 表示天空多云的事件。以共同原因 为条件会使子节点 和 变得独立,因为如果我们知道天气多云,同时注意到天空阴沉,这并不会改变我们对是否会下雨的信念。结果 ,因此 。
现在考虑一种情况,,其中 是 和 共同作用的效果。在这种情况下,由于解释效应现象(见 4.2.4.2 节),对 的条件作用使得 和 依赖。例如,如果 和 是独立的随机比特, 是 和 的异或操作,则观察到 意味着 ,因此 和 现在是相互依赖的(理论上的信息,而不是因果信息),即使 和 是先验独立的。结果 ,因此 。
最后,考虑一个马尔可夫链 。我们有 ,所以多元互信息必须是正值。
多元互信息和熵
我们也可以使用熵来表述多元互信息。具体来说,我们已知:
以及:
因此,我们可以将式(15)改写为如下形式:
更普遍地说,我们有:
对于大小为 1、2 和 3 的集合,其扩展如下:
我们可以使用默比乌斯反演公式(Möbius inversion formula)来推导出以下对偶关系。对于变量 的集合:
使用熵的链式法则,我们还可以导出三向多元互信息的表达式,如下所示:
源与流
互信息的变分上下界
对于计算困难的分布,我们将讨论使用其变分近似来计算互信息上界和下界的方法。这对表征学习十分有用。
变分上界
假设联合 难以计算,但我们可以从 中采样并计算条件分布 。此外,假设使用 来近似 。然后我们就可以计算互信息的上界,如下所示:
如果 ,那么上下界都具有紧密性。
进一步解释如下:我们有 ,假设已知 ,所以可以很好地计算 。虽然不知道 的值,但我们可以使用一些模型 来确定其上界。我们的模型永远不会比 本身(KL 散度的非负性)做得更好,熵估计误差太大,因此我们的互信息估计将是一个上界。
BA下界
假设联合概率 难以计算,但我们可以评估 的值。此外,假设我们使用 来近似计算 。然后我们可以在互信息上导出以下变分下界:
其中, 是 的微分熵。这被称为 BA 下界,以作者 Barber 和 Agakov 的名字命名。
NWJ下界
BA 下界需要一个可处理的归一化分布 ,我们可以逐点计算该归一化分布。如果我们采用一种巧妙的方式重新参数化这个分布,就可以生成一个不需要归一化分布的下界,记作:
其中, 是归一化常数或配分函数。将其代入上述 BA 下界,我们可以得到:
这是 Donsker-Varadhan 下界(DV 下界)。
我们可以通过使用以下事实来构造一个更易于处理的版本。使用下式,对数函数可以由一条直线构成上界:
如果设置 ,那么我们得到:
这被称为 NWJ 下界(以作者 Nguyen、Wainwright 和 Jordan 的名字命名),或者 生成式对抗性网络 KL 散度,或者 MINE- 分数。
InfoNCE下界
如果转而探索对上述 DV 下界的多样本扩展,我们可以生成以下下界:
其中,期望是来自联合分布 的成对样本。式(43)中的量被称为 InfoNCE 估计。
其直观理解是,互信息是联合分布 和边缘分布乘积 之间的散度。换句话说,互信息是对联合分布采样对与独立采样 和 之间差异的测量。式(43)中的 InfoNCE 界通过尝试对模型进行训练来区分这两种情况,并提供了真实互信息的下界。
尽管这是一个有效的下界,但如果互信息很大,我们可能需要使用较大批次规模的 来估计互信息,因为 。
NO.27.tip: 共轭先验
背景
我们考虑一类具有特殊形式先验模型的贝叶斯推理,称为共轭先验,这简化了后验的计算。形式上,如果后验与先验在同一参数化族中,即 ,那么我们称先验 是似然函数 的共轭先验。换句话说, 在贝叶斯更新下是封闭的。如果 族对应于指数族,那么计算可以以闭合形式执行。在更复杂的设置中,我们不能执行闭合形式推理,但通常可以在更大的计算管道中利用这些结果作为可处理的子程序。
源与流
单变量高斯分布模型
我们将推导单变量高斯分布的后验 。为了简单起见,我们分三个步骤来讨论:仅推理 ,仅推理 ,然后同时推理这两个参数。
给定 时 的后验
如果 是已知常数,则 的似然概率为:
可以证明,共轭先验是另一个高斯分布 。应用高斯分布的贝叶斯规则,我们发现相应的后验由下式给出:
其中, 是经验均值。
如果我们使用精度参数,那么这个结果更容易理解,而精度参数只是方差的逆。具体来说,设 为观测精度, 为先验精度。然后我们可以将后验重新改写为如下的形式:
这些公式非常直观:后验精度 是先验精度 加上 个单位的测量精度 。此外,后验均值 是经验均值 和先验均值 的凸组合。这表明后验均值是经验均值和先验均值之间的折中。如果相对于信号强度,先验的值较小(即相对于 , 较小),我们给予经验均值更多的权重。如果相对于信号强度,先验的值较大(即相对于 , 较大),我们给予先验更多的权重。还要注意的是,后验均值是用 来表示的,因此有 个精度为 的测量值,相当于有一个值为 、精度为 的测量值。
为了进一步理解这些方程,在观察到单个数据点 (因此 )后,考虑后验。于是,后验均值可以记作以下的等价形式:
式(8) 是先验均值和数据的凸组合;式(9) 是向数据 调整的先验均值;式(10) 是向先验均值调整的数据,被称为收缩估计(shrinkage estimate)。如果我们定义权重 ,这更容易理解。于是,就有:
请注意,对于高斯分布,后验均值和后验众数是相同的。因此,我们可以使用上述公式来执行最大后验估计。
给定 时 的后验
如果 是已知常数,则 的似然为:
其中,我们不能再忽视前面的 项。标准共轭先验是逆伽马分布,其定义为:
将似然和先验相乘,我们可以看到,后验也是逆伽马分布:
使用 分布的一个小麻烦是先验的强度被编码在 和 中。因此,在贝叶斯统计学文献中,通常使用逆伽马分布的一种替代参数化形式,称为(缩放的)逆卡方分布(inverse chi-squared distribution):
其中,(称为自由度(degrees of freedom, dof)参数)控制先验的强度, 对先验均值进行编码。有了这个先验,后验变为:
我们看到,后验自由度 是先验自由度 加上 ,后验平方和 是先验平方和 加上数据平方和。
和 的后验:共轭先验
现在假设我们希望对均值和方差进行推理。相应的共轭先验是正态逆伽马(normal inverse gamma)分布:
然而,通常使用正态逆卡方(Normal Inverse Chi-squared, NIX)分布对正态逆伽马分布重新参数化,其定义如下:
可以证明,其后验为:
相应的解释如下。对于 ,后验均值 是先验均值 和最大似然估计 的凸组合;后验的强度 是先验的强度 加上数据点 的数量。对于 ,我们使用平方和:后验平方和 是先验平方和 加上数据平方和 ,加上由于先验均值 和最大似然估计 之间的差异而产生的项;后验的强度 是先验的强度 加上数据点数量 。
的后验边缘为:
后验均值为 。
的后验边缘具有学生分布,因为学生分布是高斯分布的(缩放)混合分布:
后验均值为 。
多元高斯分布模型
我们将推导多元高斯分布的后验 。为了简单起见,我们分三个步骤来讨论:仅推理 ,仅推理 ,然后同时推理这两个参数。
给定 时 的后验
似然具有以下形式:
为了简单起见,我们将使用共轭先验,在这种情况下,共轭先验是高斯分布先验。特别是,如果 ,则我们可以导出 的高斯分布的后验:
给定 时 的后验
我们现在讨论如何计算 。
似然
似然为:
可以证明:
其中:
是经验散布矩阵, 是中心矩阵(centering matrix):
因此,我们可以将似然改写为下式:
接下来,我们将使用这种形式的似然概率。
先验
很明显,先验概率的公式如下所示:
其中, 是逆威沙特分布。遗憾的是,在式(39) 的似然中, 和 以非因子化的方式出现在一起(见第一个指数项),因此式(40) 中的因子化先验与似然不共轭。
上述先验有时被称为条件共轭(conditionally conjugate),因为条件概率 和 都是单独共轭。为了创建完全共轭先验,我们需要使用 和 相互依赖的先验。我们将使用形式为 的联合分布。
查看似然公式(39),我们看到自然共轭先验具有正态逆威沙特(Normal-Inverse-Wishart, NIW)分布的形式,其定义如下:
其中,归一化常数定义为:
正态逆威沙特分布的参数可以解释如下: 是 的先验均值,而 是我们对该先验均值 的信任程度; 是 的先验均值(二者成一定比例),而 是我们对该先验均值 的信任程度。
后验
为了推导后验,让我们首先将散布矩阵重写为以下的形式:
其中, 是平方和(sum of squares)矩阵。
现在,我们将似然与先验相乘,结果为:
其中:
我们可以使用一种称为完成平方(completing the square)的技巧来简化 矩阵。将此应用于上述公式,我们得到:
因此,我们可以将后验重写为以下的形式:
其中:
这个结果实际上是非常直观的:后验均值 是先验均值和最大似然估计的凸组合;后验散布矩阵 是先验散布矩阵 加上经验散布矩阵 加上由于均值的不确定性而产生的额外项(从而产生了自己的虚拟散布矩阵);后验置信因子 和 都随着我们所依赖数据的增加而增大。
后验边缘
我们计算了联合后验:
我们现在讨论如何计算后验边缘 和 。
很容易看出, 的后验边缘为:
对于均值,我们可以证明:
其中,。直观上,这一结果是因为 是高斯分布的无限混合模型,其中每个混合分量都有一个从逆威沙特分布中得出的值 ;通过将这些值混合在一起,我们得到了一个学生 t 分布,该分布比单个高斯分布具有更重的尾部。
后验众数
和 的最大后验估计为:
为了找到该众数,我们首先注意到 只出现在条件分布 中,并且该正态分布的众数等于其平均值,即 。还要注意,这适用于任何 。因此,我们可以将 代入式(64) 中,并推导出 的众数。请注意:
其中, 是与 无关的常数。然后,我们取关于 的导数:
通过将导数设为 0 并求解 ,我们发现, 是使式(65) 最大化的矩阵。
通过检查发现 为正定矩阵,我们得出 为协方差矩阵 的最大后验估计。
总之, 的最大后验估计为:
后验预测
我们现在讨论如何通过对参数进行积分来预测未来的数据。如果 ,其中 ,则可以证明,对于单个观测向量,后验预测分布如下:
其中,。
指数族模型
我们已经看到,如果先验与似然共轭,那么精确的贝叶斯分析会大大简化。由于后验函数必须具有与先验函数相同的形式,因此参数数量也相同,也即似然函数必须具有固定大小的充分统计量,这样我们就可以记作 。这表明,唯一存在共轭先验的分布族是指数族,接下来,我们将展示如何对通用指数族模型进行共轭分析。
似然
回想一下,指数族的似然为:
其中,,。
先验
对照似然的形式,我们可以定义先验:
其中, 是先验的强度, 是先验的均值, 是归一化因子。可以从表示先验信念的虚拟样本(virtual sample)中推导出参数 。
后验
后验由下式给出:
其中:
我们发现,这与之前的先验形式相同,但我们更新了充分统计量和样本容量。
后验均值由先验均值和经验均值(即最大似然估计)的凸组合给出:
其中,。
边缘似然
从式(78) 中我们可以看出,边缘似然由下式给出:
后验预测密度
现在,在给定过去数据 的情况下,我们将推导未来可观测值 的预测密度:
NO.28.tip: 无信息先验
背景
当我们几乎没有或根本没有特定领域的知识时,最好使用非信息性(uninformative)、无信息性(noninformative)或客观性(objective)先验,"让数据自己说话"。遗憾的是,没有唯一的方法来定义这样的先验,它们都编码了某种知识。因此,最好使用术语扩散先验(diffuse prior)、最少信息性先验(minimally informative prior)或默认先验(default prior)。
源与流
设 是具有先验 的随机变量,并且设 是 的一些可逆变换。我们希望选择一个对函数 保持不变(invariant)的先验,这样后验就不依赖于我们如何对模型进行参数化。
例如,考虑比率参数为 的伯努利分布。假设 Alice 使用二项式似然和数据 ,并计算 。现在假设 Bob 使用相同的似然和数据,但根据比率参数 对模型进行参数化。Bob 使用变量变化公式将 Alice 的先验转换为 ,然后计算 。如果随后转换回 参数化,那么 Bob 应该得到与 Alice 相同的结果。
只要使用 Jeffreys 先验(以 Harold Jeffreys 命名),我们就可以实现这一目标。在一维数据中,Jeffreys 的先验为 ,其中 是 Fisher 信息。在多维数据中,Jeffreys 的先验的形式为 ,其中 是 Fisher 信息矩阵(式 (5) 节)。
为了理解为什么 Jeffreys 先验对参数化是不变的,请考虑一维数据的情况。假设 。利用变量的变化,我们可以导出 的相应先验,如下所示:
因此,无论我们使用 参数化还是 参数化,先验都是相同的。
接下来,我们将列举一些 Jeffreys 先验的例子。
单变量高斯均值和方差的 Jeffreys 先验
考虑两个参数都未知的一维高斯分布 ,因此 。根据式 (5),Fisher 信息矩阵为:
因此,。然而,高斯分布的标准 Jeffreys 无信息性先验被定义为独立的无信息先验的乘积,即
事实证明,我们可以使用共轭正态逆卡方先验来模拟这个先验:
这使我们可以很容易地重用高斯共轭分析的结果。
不变性先验
位置-尺度分布族(location-scale family)是由位置 和尺度 进行参数化的概率分布族。如果 是该概率分布族中的随机变量,那么 也是相同概率分布族中的随机变量。
在推断位置参数 时,直观上,我们希望使用平移不变性先验(translation-invariant prior)是合理的,因为平移不变性先验满足这样的性质,即分配给任何区间 的概率质量与分配给任何其他相同宽度平移区间(例如 )的概率质量相同。也就是说,
这可以使用下式来实现:
因为:
这与具有未知均值 和固定方差的高斯分布 Jeffreys 先验相同。这是因为 ,根据式 (5),因此 。
尺度不变性先验
在推断尺度参数 时,我们可能希望使用尺度不变性先验(scale-invariant prior)。尺度不变性先验的性质满足分配给任何区间 的概率质量与分配给任何其他区间 的概率相同,其中 $c>0$。也就是说,
这可以使用下式来实现:
于是:
这与具有固定均值 和未知尺度 的高斯分布 Jeffreys 先验相同。这是因为 ,根据式 (5),因此 。
学习不变性先验
只要已知希望模型满足的某种不变性,那么我们就可以使用这种不变性来编码相应的先验。在某些情况下,可以通过解析方法来完成。当无法采用解析方法来求解时,可以通过求解变分优化问题来学习不变性先验。
参照先验
定义无信息性先验的一种方法是,当在数据集上进行平均时,将其定义为与所有可能的后验相距最远的分布。这是参照先验(reference prior)的基本思想。更准确地说,我们称 是一个参照先验,如果该先验最大化了后验和先验之间的预期 KL 散度:
其中,。这与最大化互信息 相同。
我们可以消除数据集上的积分,请注意:
其中,我们使用了 这一事实。
可以证明,在一维数据中,相应的先验等价于 Jeffreys 先验。在更高的数据维度中,我们可以使用链式法则一次计算一个参数的参照先验。然而,其计算可能会比较复杂。
NO.29.tip: 广义线性模型
背景
广义线性模型是指数族分布的条件版本。更准确地说,该模型具有以下形式:
其中, 是分布的自然参数, 是对数归一化器, 是充分统计量, 是离散项。我们可以得出响应变量的均值和方差如下:
我们将使用 表示从线性输入到输出均值的映射,其中函数 称为链接函数(link function), 称为均值函数(mean function)。这种关系通常记作:
由于线性的假设,广义线性模型的预测能力非常有限(尽管我们总是可以在 上使用基函数展开来提高灵活性)。然而,广义线性模型在统计学文献中的主要用途并不是预测,而是假设检验。这取决于计算后验 的能力。可以利用这一点得出结论,即判断任何输入(例如,代表不同的群组)是否对输出有显著影响。
源与流
一些流行的广义线性模型
我们将给出一些广泛使用的广义线性模型示例。
线性回归
回想一下,线性回归具有以下形式:
因此,
其中,。我们可以将其记作广义线性模型的形式,如下所示:
我们发现 ,因此,
二项式回归
如果响应变量是 次试验中的成功次数,即 ,那么我们可以使用二项式回归(binomial regression),其定义为:
我们发现二元逻辑回归是 时的一种特殊情况。
其对数概率密度函数由下式给出:
其中,。为了将其记作广义线性模型形式,让我们定义:
因此,我们可以将二项式回归写成广义线性模型形式,如下所示:
其中,,并且有
因此,
并且有
泊松回归
如果响应变量是一个整数计数,即 ,那么我们可以使用泊松回归(Poisson regression),其定义为:
其中,
是泊松分布。泊松回归广泛用于生物统计应用,其中 可以表示给定个人或地点的疾病数量,或高通量测序环境中基因组位置的读取次数。
其对数概率密度函数由下式给出:
其中,。因此,在广义线性模型形式中,我们有
其中,,,。因此
并且有
零膨胀泊松回归
在许多形式的计数数据中,即使考虑了预测因素,观察到的0的数量也比模型预测的要多。直观上来说,这是因为可能有很多方法不会产生输出结果。例如,考虑预测产品的销售数据。如果销售额是0,这意味着该产品不受欢迎(因此需求也非常低),还是只是因为该产品销售一空(意味着需求很高,但供应量为零)?类似的问题也出现在基因组学、流行病学等领域。
为了处理这种情况,通常使用零膨胀泊松(Zero-Inflated Poisson, ZIP)模型。该模型的似然是两种分布的混合:0处的尖峰和标准泊松分布。形式上,我们定义
其中, 是拾取尖峰的先验概率, 是泊松速率。我们发现,生成0有两种"机制":一种方法(以概率 )是选择尖峰,另一种方法(以概率 )则仅仅因为泊松速率很低而生成零计数。(后一个事件的概率为 。)
具有非规范链接函数的广义线性模型
我们已经看到输出分布的均值参数是如何由 给出的,其中函数 是链接函数。链接函数可以有若干种选择,接下来我们将展开讨论。
规范链接函数(canonical link function) 满足 的性质,其中 是规范(自然)参数。因此
这就是我们迄今为止的假设。例如,对于伯努利分布,其规范参数是对数几率 ,由logit变换给出:
其逆函数为sigmoid函数或逻辑函数:
然而,我们可以自由使用其他类型的链接函数。例如,我们使用
这被称为probit链接函数。
另一个链接函数是互补对数-对数函数(complementary log-log),它有时用于二元响应的情况:
这可以用于观察到0个事件(用 表示)或一个或多个事件(由 表示)的应用中,其中假设事件由速率为 的泊松分布控制。设 为事件数。泊松假设意味着 ,因此
因此,。当 是协变量函数时,需要确保函数的值是正数,所以我们使用 ,因此有
最大似然估计
广义线性模型可以使用与我们拟合逻辑回归相似的方法来拟合。特别是,负对数似然具有以下形式(忽略常数项):
其中,
其中,。为了简单起见,我们假设 。
我们可以按如下方式计算单个项的梯度:
其中,,并且 是从规范参数映射到均值参数的逆链接函数。(例如,在逻辑回归的情况下,我们有 。)
海森矩阵由下式给出:
其中,
因此,
例如,在逻辑回归的情况下,,。一般而言,我们发现海森矩阵是正定的,因为 ;因此负对数似然是凸函数,广义线性模型的最大似然估计是唯一的(假设对所有的 ,)。
对于较小的数据集,我们可以使用迭代重新加权最小二乘法(Iteratively Reweighted Least Squares, IRLS)算法(这是牛顿法的一种形式)来计算最大似然估计。对于较大的数据集,可以使用随机梯度下降。(在实践中,将随机梯度下降与自动调整步长的方法相结合通常非常有效。)
贝叶斯推理
最大似然估计提供了参数的点估计,但不传达任何不确定性的概念,这对于假设检验以及避免过拟合都很重要。为了计算不确定性,我们将对参数进行贝叶斯推理。为了做到这一点,我们首先需要指定一个先验。选择合适
的先验取决于链接函数的形式。例如,如果将 传递给sigmoid函数,偏移项 上的"平坦"或"无信息性"先验在概率尺度上就不会转化为无信息先验。
一旦我们选择了先验,就可以使用各种近似推理方法来计算后验。对于小型数据集,最简单的方法是哈密尔顿蒙特卡罗,因为只需要记下对数似然和对数先验,然后可以使用自动梯度来计算可以传递给哈密尔顿蒙特卡罗引擎的导数。
对于大型数据集,哈密尔顿蒙特卡罗方法可能很慢,因为该方法是一种全批次处理算法。在这样的设置中,变分贝叶斯、期望传播或者更专业的算法是最佳选择。
NO.30.tip: 线性回归
背景
线性回归(linear regression)是广义线性模型最简单的情况。线性回归指的是以下模型:
其中,是模型的所有参数。(在统计学中,参数和通常使用和表示。)
我们将简要讨论最大似然估计,然后重点讨论贝叶斯分析。
源与流
普通最小二乘法
根据式(1),我们可以得出数据的负对数似然,如下所示:
其中,我们定义了预测响应 。我们证明了最大似然估计由下式给出:
这被称为普通最小二乘(Ordinary Least Squares, OLS)解。
观测噪声的最大似然估计由下式给出:
这正是残差的均方误差,这是一个直观的结果。
共轭先验
我们使用共轭先验推导参数的后验。首先考虑只有未知的情况(因此观测噪声方差参数是固定的),然后考虑一般情况,其中和均是未知的。
噪声方差已知的情况
线性回归的共轭先验具有以下形式:
我们经常使用作为先验均值,作为先验协方差。(假设偏置项包含在权重向量中,但通常使用较弱的先验,因为我们通常不想对输出的总体平均水平进行正则化。)
为了推导后验,让我们首先根据多元高斯分布重写似然,如下所示:
其中,是单位矩阵。然后,可以使用高斯的贝叶斯规则来推导出后验,如下所示:
其中,是后验均值,是后验协方差。
现在,假设,。在这种情况下,后验均值变为
如果我们定义,就会发现这相当于岭回归,用于优化下式:
其中,RSS是残差平方和:
噪声方差未知的情况
我们假设和都是未知的。似然由下式给出:
由于回归权重现在取决于似然中的,因此的共轭先验具有以下形式:
对于噪声方差,共轭先验基于逆伽马分布,其形式为:
将这两者结合在一起,我们发现联合共轭先验是正态逆伽马分布:
这产生以下的后验:
和的表达式类似于已知的情况。的表达式也是直观的,因为该表达式只是更新计数。的表达式可以解释如下:该表达式是先验平方和,加上经验平方和,再加上由于上先验误差所得到的项。
后验边缘如下所示。对于方差,我们有:
对于回归权重,可以证明:
15.2.2.3 后验预测分布
在机器学习中,我们通常更关心预测的不确定性(以及准确率),而不是参数估计。幸运的是,我们可以推导出封闭形式的后验预测分布。具体来说,可以证明,给定个新的测试输入,我们有:
后验预测均值相当于"正态"线性回归,但其中我们插入而不是最大似然估计。后验预测方差有两个分量:由于测量噪声导致的,以及由于的不确定性导致的。后一项根据测试输入与训练数据的接近程度而变化。结果类似于使用高斯先验(具有固定的)的情况,只是预测分布更宽,因为我们考虑了的不确定性。
无信息性先验
对贝叶斯推理的一个常见非议是贝叶斯推理需要使用先验知识。这种现象有时被认为"污染"了人们从数据中所得出的推论。我们可以通过使用无信息性先验来最小化先验的影响。下面将讨论线性回归的各种无信息性先验。
Jeffreys先验
我们知道对于位置参数的Jeffreys先验,其形式为。我们知道对于尺度因子的Jeffreys先验,其形式是。我们可以使用不适当的正态逆伽马分布先验来模拟这些先验,其中,,,。对应的后验由下式给出:
因此,权重的后验分布由下式给出:
其中,是最大似然估计。因此,每个权重的边缘概率具有以下形式:
与频率学派统计学的联系
有趣的是,当使用Jeffreys先验时,后验在形式上等价于最大似然估计的频率采样分布,其形式为:
其中,是在给定(固定)输入的情况下,从真实模型生成的假设数据。在关于频率学派统计学的书籍中,这通常被写成以下等价形式:
采样分布在数值上与式(39)中的后验分布相同,因为。然而,采样分布在语义上大不相同,因为采样分布不以观察到的数据为条件,而是基于从模型中提取的假设数据。更多有关使用无信息性先验时简单线性模型的贝叶斯分析和频率学派统计学分析之间等价性的讨论。
Zellner的g-先验
假设上有一个无信息性先验,这通常是合理的假设,因为只是一个对结果没有太大影响的标量,但对使用无信息性先验可能是危险的,正如我们从岭回归中所知的,先验的强度控制着模型的正则化程度。
一个常见的折衷方案是使用正态逆伽马分布先验,,(以确保),,,其中$g>0$的作用类似于岭回归中的。这被称为Zellner的g-先验。我们发现,先验协方差与成正比,而不是与成正比;这确保了后验对输入的缩放是不变的。
有了这个先验,后验就变成了:
注意,这个先验是以输入为条件的,而不是以输出为条件的;这在条件中是完全有效的,其中所有计算都以为条件,它被视为固定常数输入。
已经提出了各种方法来设置,这些方法包括交叉验证、经验贝叶斯、层次贝叶斯等。
“尖峰和平板”先验
在执行预测时,通常需要能够选择输入特征的子集,以减少过拟合,或者提高模型的可解释性。如果我们确保权重向量是稀疏的(即,具有许多零元素),就可以实现这一点,因为如果,则在内积中就不起作用。
当使用贝叶斯推理时,实现稀疏性的规范方法是使用"尖峰和平板"(spike-and-slab)先验,该方法具有两个分量的混合模型形式,其中一个分量是在0处的"尖峰",另一个分量是和之间的均匀"平板":
其中,是每个系数为非零的先验。因此,相应的系数对数先验为:
其中,控制模型的稀疏性,是权重的范数(norm)。
因此,具有"尖峰和平板"先验的最大后验估计等价于正则化(regularization);这惩罚了非零系数的数量。有趣的是,后验样本也是稀疏的。
相比之下,考虑使用拉普拉斯先验。有趣的是,使用具有"尖峰和平板"先验的后验均值比使用具有拉普拉斯先验的后验众数具有更好的预测准确率。
在实践中,我们经常使用宽的高斯分布来近似均匀的"平板",
当时,第二项在上接近均匀分布。我们可以通过将二元随机变量与每个系数相关联来实现混合模型,以指示该系数是"打开"还是"关闭"状态。
遗憾的是,具有这种离散混合先验的最大后验估计(更不用说完全贝叶斯推理)在计算上非常困难。研究学者已经提出了各种近似推理方法,包括贪婪搜索或马尔可夫链蒙特卡罗方法。
拉普拉斯先验(贝叶斯套索)
为了实现稀疏性,一种具有较低计算成本的方法是,通过最小化带惩罚项的负对数似然并利用拉普拉斯先验执行最大后验估计:
其中,是的范数。这种方法被称为套索,代表"最小绝对收缩和选择算子"(least absolute shrinkage and selection operator)。
我们将讨论具有该先验的后验推理;这被称为贝叶斯套索(Bayesian lasso)。具体来说,我们假设以下先验分布:
(注意,为了确保完全后验是单模态的,将先验条件设置为依赖于是很重要的。)
为了简化推理,将拉普拉斯先验表示为高斯缩放的混合。特别地,可以证明拉普拉斯分布是高斯的无限加权和,其中精度来自伽马分布:
因此,我们可以将贝叶斯套索模型表示为一个层次潜在变量模型,如图15-3a所示。对应的联合分布具有以下形式:
我们还可以创建一个高斯缩放的混合模型来匹配组套索先验,该模型同时将多个系数设置为零:
其中,是组的大小。因此,我们看到每个组有一个方差项,每个方差项都来自一个伽马先验,其形状参数取决于组的大小,其速率参数由控制。
给定这些层次模型,我们可以很容易地推导出一个吉布斯采样算法来从后验分布进行采样。遗憾的是,即使最大后验估计是稀疏的,这些后验样本也不是稀疏的。这是因为先验对每个系数为零的事件赋予了无穷小的概率。
“马蹄”先验
拉普拉斯先验不适用于稀疏贝叶斯模型,因为后验样本不是稀疏的。"尖峰和平板"先验则没有这个问题,但这个方法通常速度太慢。幸运的是,可以设计出既稀疏又计算高效的连续先验(没有离散的潜在变量)。这种类型的一个流行先验是"马蹄"先验(horseshoe prior),它因为其密度函数的形状而得名。
在"马蹄"先验中,我们使用以下高斯缩放混合,而不是对每个权重使用拉普拉斯先验:
其中,是半柯西分布(见2.2.2.4节),是局部收缩因子,是全局收缩因子。柯西分布具有非常粗的尾部,因此可能为0或离0很远,这模仿了之前的"尖峰和平板"先验,但采取连续的方式。
自动相关性确定
使用促进稀疏性的先验进行后验推理的另一种选择是,使用高斯先验进行后验推理,但其中我们使用经验贝叶斯来优化精度。也就是说,我们首先计算,然后计算。也许令人惊讶的是,由于在15.2.8.2节中解释的原因,我们发现结果会导致稀疏的估计。
这种技术被称为稀疏贝叶斯学习(sparse Bayesian learning)或自动相关性确定(Automatic Relevance Determination, ARD)。该技术也被称为NUV估计,代表"具有未知方差的正态先验"(normal prior with unknown variance)。这个技术最初是为神经网络开发的(其中,稀疏性应用于第一层权重),但此处我们将其应用于线性模型。
线性模型的自动相关性确定
我们通过将自动相关性确定应用于线性回归来更详细地解释这个概念。似然为,其中。先验是,其中。边缘似然可以解析计算,如下所示:
其中,。这与"尖峰和平板"先验下的边缘似然非常相似,由下式给出:
其中,。(此处,指的是设计矩阵,而我们只选择中满足的那些列。)不同之处在于,我们将二元变量替换为连续变量,这使得优化问题变得更加简单。
目标是对数边缘似然,由下式给出:
可以使用各种优化算法来优化。
自动相关性确定可以用作正则化的替代方案。尽管自动相关性确定目标不是凸函数,但它往往会给出更稀疏的结果。此外,可以证明,自动相关性确定目标的局部最优值比正则化目标少得多,因此更容易优化。
为什么自动相关性确定会导致稀疏解
一旦我们估计了和,就可以使用高斯的贝叶斯规则来计算参数的后验,得到,其中和。如果我们有,那么,因此解向量将是稀疏的。
现在,我们说明在什么情况下这种稀疏解可能是最优的。为了简单起见,我们假设是固定的。考虑具有两个训练样例的一维线性回归,因此,。我们可以将和绘制为平面中的向量。假设该特征与预测响应无关,因此指向与几乎正交的方向。让我们看看当改变时,边缘似然会发生什么变化。边缘似然由给出,其中。如果是有限的,后验分布将沿着方向拉长。然而,如果,我们有,这是球形的,如果保持不变,后者将更高的概率密度分配给观察到的响应向量,因此这是优选的解。换言之,当较小但不相关时,边缘似然会"惩罚"这些解,因为它们浪费了概率质量。(从贝叶斯奥卡姆剃刀的角度来看)消除冗余维度是更简约的。
理解自动相关性确定稀疏性的另一种方法是在层次贝叶斯模型中进行近似推理。特别是,假设我们将共轭先验放置在每个精度,和观测精度上。由于学生先验的精确推理是难以处理的,我们可以使用变分贝叶斯,使用以下形式的因子后验分布:
自动相关性确定通过点估计来近似。然而,在变分贝叶斯中,我们对进行积分,由此得到的权重上的后验边缘由下式给出:
这是一个高斯缩放的混合模型,可以证明,该混合模型与多变量学生分布相同,具有非对角协方差。需要注意的是,学生分布在0处有一个大尖峰,这直观地解释了为什么后验均值(对于学生分布,等价于后验众数)是稀疏的。
最后,我们还可以将自动相关性确定视为具有非因子先验(non-factorial prior)的最大后验估计问题。直观地说,尽管使用了对角高斯先验分布,但参数之间的依赖性仍然会出现,因为先验精度是在边缘化所有之后估计的,因此依赖于所有特征。有趣的是,我们证明了具有非因子先验的最大后验估计在以下意义上严格优于具有任何可能的因子先验的最大后验估计:非因子目标总是比因子目标具有更少的局部极小值,同时仍然满足非因子目标的全局最优与目标的全局优化相对应的性质——正则化没有局部极小值,因此不具有这种性质。
自动相关性确定算法
可以使用多种算法来优化。一种方法是使用期望最大化,其中我们在期望步骤中计算,然后在最大化步骤中最大化。在变分贝叶斯中,我们同时推理和。
最近,我们发现,这些方法执行的嵌套迭代计算可以通过循环神经网络来进行模拟(见16.3.4节)。此外,通过训练该模型,可以实现比手动设计的优化算法更快的收敛。
相关向量机
假设我们创建一个形式为的线性回归模型,其中,是核函数,并且是个训练点。这被称为核基函数展开(kernel basis function expansion),它将输入从转换为。显然,这个模型具有个参数,因此是非参数化模型。然而,我们可以使用自动相关性确定来选择样本的一小部分。这种技术被称为相关向量机(Relevance Vector Machine, RVM)。
多元线性回归
我们将考虑多元线性回归模型,其形式为:
其中,是回归系数的矩阵,是输入特征的矩阵(每行对应一个输入变量,每列对应一种观察值),是响应矩阵(每行对应一个输出变量,每列对应一种观察值),是残差矩阵,其中。从定义中可以看出,如果给定、以及,则的列是遵循多元正态分布的独立随机变量。所以观察值的似然为:
其共轭先验是矩阵正态逆威沙特分布:
其中,矩阵正态逆威沙特分布被定义为:
其中,,,$\nu_0>N_x-1$是逆威沙特分布的自由度。
的后验分布仍然遵循矩阵正态逆威沙特分布。联合分布的密度为:
我们首先聚合指数中包括的项,使其采用矩阵正态分布的"完成平方"技术。这类似于我们推导多元正态分布的共轭后验时使用的技术。具体来说,即:
其中,
因此,从式(76)可以看出,如果给定,则遵循矩阵正态分布:
通过将边缘化(即去除式(72)中包含的指数项),可以证明的后验分布是逆威沙特分布。实际上,通过将式(76)替换为式(72)中的相应项,可以看出积分出后只剩下和,这表明后验逆威沙特分布的标度矩阵是。
总之,对于给定的观测值,的联合后验分布为:
和的最大后验估计是后验矩阵正态逆威沙特分布的模式。为了推导这一点,请注意,只出现在矩阵正态密度函数的后验分布中,因此最大化后验密度的矩阵,是使的矩阵正态后验最大化的矩阵。因此,的最大后验估计为,这适用于的任何值。通过将插入的联合后验分布,并取的导数,可以发现密度最大化的矩阵是。由于是正定的,因此是的最大后验估计。
总之,的最大后验估计为:
NO.31.tip: 逻辑回归
背景
逻辑回归(logistic regression)是一种使用非常广泛的判别式分类模型,该模型将输入向量 映射到类别标签 上的分布。如果 ,这被称为二元逻辑回归(binary logistic regression);如果 $C>2$,则被称为多项式逻辑回归(multinomial logistic regression;又称为多项逻辑回归、多元逻辑回归),或者多分类逻辑回归(multiclass logistic regression;又称为多类逻辑回归、多类别逻辑回归)。
源与流
二元逻辑回归
在二元情况下(其中 ),模型具有以下形式:
其中, 是权重, 是偏差(偏移量), 是 S 形(sigmoid)函数或逻辑(logistic)函数,定义如下:
设 是样例 的 logits, 是输出的均值。于是,我们可以将对数似然记作负交叉熵:
我们可以通过执行一些简单的代数变换,将这个公式扩展为更明确的形式(这在实现中十分常见)。首先要注意的是:
因此,
多项式逻辑回归
多项式逻辑回归是以下形式的判别式分类模型:
其中, 是输入向量, 是类别标签, 是 权重矩阵, 是 维偏置向量, 是 softmax 函数,其定义为:
如果我们将 logits 定义为 ,将概率定义为 ,并且设 是标签 的独热编码,则对数似然可以写成负交叉熵:
处理类别不平衡和长尾问题
在许多问题中,有些类别比其他类别少得多,这个问题被称为类别不平衡问题(class imbalance)。
最小化 0–1 损失(作为一种限制),0–1 损失可能由最频繁的类别所主导。一个自然的替代方案是考虑平衡误差率(balanced error rate),用于计算分类器 的每一类别误差率的平均值:
其中, 是真实分布。优化这种损失的分类器 必须满足:
其中, 是使用平衡类别时的预测器。因此,为了最小化平衡误差率,我们应该使用类别的条件似然 ,而不是类别的后验 。
我们在这里提出了一种称为 logit 调整 的简单方案,可以实现这种最优分类器。我们假设该模型使用 来计算 logits,其中对于广义线性模型,。在事后版本中,模型以常规方式训练,然后在预测时,我们使用:
其中, 是经验标签先验。在实践中,建议引入调谐参数 $\tau > 0$ 并使用预测器:
或者,我们可以通过使用以下 logit 调整的 softmax 交叉熵损失(logit adjusted softmax cross-entropy loss)来更改训练期间使用的损失函数:
这类似于使用形式为 的预测器进行训练,然后在测试时使用 ,如上所述。
我们还可以将上述损失与参数的先验相结合,并执行贝叶斯推理,我们将在下面进行讨论。(使用非标准似然可以通过广义贝叶斯推理框架来进行调整)
参数先验分布
与线性回归一样,标准的方法是在逻辑回归模型中对权重使用高斯先验。将先验均值设置为 0 是很自然的,以反映输出可能根据输入而增加或减少的概率。但是我们应该如何设置先验方差呢?使用一个大的值来近似均匀分布是很诱人的,但这并不是一个好的建议。为了了解其原因,考虑一个只有偏移项而没有特征的二元逻辑回归模型:
如果我们将先验设置为 的较大值,那么 的隐含先验是一个极值分布,其大部分密度接近 0 或 1。相比之下,如果我们使用较小的值 ,那么我们会得到一个更平坦的分布。
如果我们有输入特征,问题就会变得有点棘手,因为 logits 的大小现在将取决于输入变量的数量和分布。例如,假设我们生成 个随机二元向量 ,每个向量的维数为 ,其中 ,。然后我们计算 ,其中 。我们从 中采样 个值,对于每个值,我们从上述分布采样一个标签向量 。
然后,我们计算阳性标签的比例,。在图 15-5b 中,我们将 的分布绘制为 的函数。可以看到,推导出的先验分布最初是平坦的,但最终会向 0 和 1 的极值倾斜。为了避免这种情况,我们应该标准化输入,并将先验分布的方差按 缩放。我们也可以使用较重的长尾分布,例如柯西分布或学生分布,而不是高斯先验。
后验的拉普拉斯近似
遗憾的是,与线性回归不同,我们无法采用解析方式计算后验,因为没有相应的共轭先验。(这反映了最大似然估计的情况。在最大似然估计中,对于线性回归,存在着闭合形式的解,但是对于逻辑回归,并不存在闭合形式的解。)幸运的是,我们可以使用一系列近似推理方法。
我们使用拉普拉斯近似,然后,拉普拉斯近似使用高斯分布近似后验。高斯的均值等于最大后验估计值 ,并且协方差等于在最大后验估计值处计算的逆海森矩阵 ,即:
我们可以使用标准优化方法寻找到模态,然后可以采用解析方式或使用自动微分来计算模态的海森矩阵。
为了确保有唯一的解,我们使用以原点为中心的(球形)高斯先验 。 的值用于控制先验的强度。如果设置 ,那么我们强制最大先验估计为 ;这将导致预测结果有最大的不确定性,因为所有的点 都将产生形式为 的预测分布。如果我们设置 ,则最大后验估计成为最大似然估计,从而产生最小的不确定性的预测结果。(特别地,对于所有正标记的点,将有 ;对于所有负标记的点,将有 ,因为数据是可分离的。)作为一种折衷(同时为了做一个很好的演示说明),我们选择了 的值。
近似后验预测分布
接下来,我们需要将参数的后验转换为预测的后验,如下所示:
计算该积分的最简单方法是使用蒙特卡罗近似。例如,在二元逻辑回归的情况下,我们有:
其中, 是后验样本。
然而,我们也可以对积分使用确定性近似,这通常速度更快。设 。如果参数上的后验分布是高斯分布,,则 logits 上的预测分布也是高斯分布:
在二元逻辑回归的情况下,我们可以使用 probit 函数 来近似 sigmoid,这样我们能够采用解析方式求解积分:
这被称为 probit 近似。对多个类别的情况进行了推广。这被称为广义 probit 近似,其形式为:
上式忽略了 logits 之间的相关性,因为广义 probit 近似只取决于 的对角元素。尽管如此,即使在神经网络分类器的情况下,广义 probit 近似也能很好地工作。还有另一种确定性近似,即拉普拉斯桥(Laplace bridge)。
因此,我们可以通过对后验 的参数进行采样,并将采样样本代入上述方程,来计算决策边界上后验的蒙特卡罗近似,从而得到 。该方法的结果(使用模糊高斯先验作为参数)。实线是后验均值,阴影区间是一个 95% 可信区间。和以前一样,我们看到,随着远离训练数据,边界位置的不确定性会变高。
我们展示了当存在不平衡的类别时,决策边界会发生什么。我们注意到两件事。首先,后验不确定性增加,因为我们从蓝色类别中获得的数据较少。其次,我们看到决策边界的后验均值向数据较少的类别移动。这源于线性判别式分析,其中可以证明,改变类别先验会改变决策边界的位置,从而使得更多的输入空间被映射到先验更高的类别。
马尔可夫链蒙特卡罗推理
马尔可夫链蒙特卡罗通常被认为是近似推理的“黄金标准”,因为这种方法对后验的形式没有做出明确的假设。我们在此不进行深入解释,但输出是来自后验分布的一组(相关)样本,这给出了以下非参数化的近似:
其中,。一旦有了样本,我们就可以将这些样本代入式 (20),以近似后验预测分布。
一种常见的马尔可夫链蒙特卡罗方法被称为哈密尔顿蒙特卡罗;这可以利用我们计算对数联合概率的梯度 的能力来提高效率。让我们将哈密尔顿蒙特卡罗应用于二维、两个类别的版本的鸢尾花分类问题,其中我们只使用两个输入特征,萼片长度和萼片宽度,以及两个类别,Virginica 和非 Virginica。决策边界是一组点 ,满足 。这些点必须位于以下的直线上:
其他近似推理方法
我们还可以使用许多其他近似推理方法。一种常见的方法是变分推理。变分推理将近似推理转化为优化问题,它通过选择近似分布 并优化变分参数以证据下界(ELBO)进行最大化来实现这一点。在 KL 散度较小的意义上,这具有使 的效果。可以使用几种方法来求解这一问题:使用证据下界的随机估计、使用条件共轭变分推理方法,或者使用创建逻辑函数二次下界的“局部”变分推理方法。
在在线设置中,我们可以使用假设密度滤波来递归地计算高斯近似后验 。
NO.32.tip: Probit回归
背景
我们将讨论 probit 回归,该回归类似于二元逻辑回归,只是 probit 回归使用 而不是 作为均值函数,其中 是标准正态分布的累积分布函数,。因此,对应的链接函数为 ;高斯分布的累积分布函数的逆函数被称为 probit 函数。
高斯分布的累积分布函数 与逻辑函数非常相似。因此,probit 回归和"正则"逻辑回归表现得非常相似。然而,probit 回归有一些优点。特别是,probit 回归作为一个潜在变量模型,有一个简单的解释,即源于经济学研究的选择理论。这也简化了贝叶斯参数推理的任务。
源与流
潜在变量解释
我们可以将 解释为这样一个因子:对于给定的输入 ,该因子与我们对输入积极响应(即生成 )的可能性成一定的比例。然而,通常还有其他未观察到的因子会影响个人的反应。让我们使用高斯噪声 对这些隐藏因子进行建模。假设对积极结果的组合偏好由潜在变量 表示。只有当这个潜在因子是正值而不是负值时,才会选择积极标签。即,
当我们将 边缘化时,我们得到了 probit 模型:
因此,我们可以将 probit 回归视为应用于噪声输入的阈值函数。
我们可以使用同样的方式来解释逻辑回归。然而,在这种情况下,噪声项 来自逻辑分布(logistic distribution),其定义如下:
其中,均值为 ,方差为 。该分布的累积分布函数由下式给出:
很显然,如果我们使用 和 的逻辑噪声,我们就可以得到逻辑回归。然而,处理高斯噪声在计算上更加容易,接下来将展开讨论。
最大似然估计
使用随机梯度下降的最大似然估计
我们可以使用标准梯度方法寻找到 probit 回归的最大似然估计。设 ,,则单个样例 的对数似然的梯度由下式给出:
其中, 是标准正态分布的概率密度函数, 是概率密度函数的累积分布函数。类似地,单个样例的海森矩阵由下式给出:
这可以传递给任何基于梯度的优化器。
使用期望最大化的最大似然估计
我们可以使用 probit 回归的潜在变量解释,推导出一个期望最大化算法来拟合模型。
假设在 上有一个先验分布 ,完全数据对数似然具有以下形式:
期望步骤中的后验分布是一个截断的高斯概率分布(truncated Gaussian):
在式 (7) 中,我们发现, 仅线性地依赖于 ,所以我们只需要计算 ,也就是说仅需要计算后验均值。可以证明,其计算公式为:
其中,。
在最大化步骤中,我们使用岭回归来估计 ,其中 是我们试图预测的输出。具体来说,我们有:
期望最大化算法很简单,但可能比直接梯度法慢得多,如图 15-12 所示。这是因为期望步骤中的后验熵相当高,因为我们只观察到 是正值还是负值,但没有给出关于其大小的似然信息。使用更强的正则化因子可以帮助加快收敛速度,因为这种方法限制了看似合理的 值的范围。此外,还可以使用各种加速技巧,例如数据增强方法。
贝叶斯推理
可以使用 probit 回归的潜在变量公式,来推导用于近似后验 的简单吉布斯采样算法。
其关键思想是使用辅助潜在变量,在给定这个潜在变量的条件下,使得整个模型成为共轭线性高斯模型。潜在变量的完全条件由下式给出:
因此,后验是截断的高斯分布。我们可以从截断高斯 中分两步进行采样:第一次采样 ,然后设置 。
参数的完全条件由下式给出:
也可以使用变分贝叶斯,其速度往往要快得多。
有序probit回归
probit 回归潜在变量解释的一个优点是,可以很容易扩展到响应变量以某种方式排序的情况,例如输出低、中和高。这被称为有序回归(ordinal regression)。其基本思想如下:如果有 个输出值,我们引入 个阈值 并设置
其中,。出于可识别性的原因,我们设置 , 和 。例如,如果 ,这将简化为标准的二元 probit 模型,其中当 $z_n < 0$ 时,;当 时,。如果 ,我们将实数线上的数据划分为 3 个区间:,,。我们可以通过改变参数 来确保每个区间中概率质量下降的相对量正确,从而匹配每个类别标签的经验频率。
由于我们需要对 和 进行优化,并且后者必须服从排序约束,因此寻找到该模型的最大似然估计比二元 probit 回归要困难一些。例如,关于基于期望最大化的方法。也可以推导出该模型的简单吉布斯采样算法。
多项式probit模型
现在考虑响应变量可以采用 个无序分类值的情况,即 。多项式 probit 模型定义如下:
为了了解更多有关该模型及其与多项式逻辑回归之间联系的信息。
如果使用 而不是设置 ,那么我们可以得到一个称为多元 probit(multivariate probit;又称为多变量 probit)的模型,这是对 相关的二元结果进行建模的一种方法。
NO.33.tip: 边界优化
背景
我们将讨论一类称为边界优化(bound optimization)或者 MM 的算法。在最小化的上下文中,MM 代表多数化最小化(majorize–minimize)。在最大化的上下文中,MM 代表少数化最大化(minorize–maximize)。MM 算法有很多例子,例如期望最大化算法、近端梯度法、聚类的均值偏移算法等。
通用算法
我们假设目标是最大化某个函数的相对于其参数 的 。MM 算法的基本方法是构造一个代理函数(surrogate function),代理函数是 的紧下界。
使得 并且 。如果满足这些条件,我们称 最小化 。然后,我们在每个步骤执行以下更新:
这保证了我们在原始目标中单调增加:
其中,第一个不等式成立,因为 是任何 的 的下界;第二个不等式由式 (1) 得出;最后的等式遵循紧密性性质。基于这个结果,如果没有观察到目标的单调增加,那么所采用的数学和/或代码一定存在错误。这是一个功能强大的调试工具。
示例:逻辑回归
如果 是我们想要最大化的凹函数,那么获得有效下界的一种方法是在其黑塞矩阵上使用一个界,即找到一个负定矩阵 ,使得 。在这种情况下,可以证明:
其中,。因此,以下函数是一个有效的下界:
对应的更新变为:
这类似于牛顿更新,区别在于我们使用 而不是 , 是一个固定矩阵,这个固定矩阵在每次迭代时都会变化。这种方法可以在较低的计算成本下为我们提供二阶方法的一些优势。
例如,让我们使用 MM 拟合一个多类别逻辑回归模型。样例 属于类别 的概率为:
由于归一化条件 ,我们可以设置 。(例如,在二元逻辑回归中,其中 ,我们只学习单个权重向量。)因此,参数 对应于大小为 的权重矩阵 ,其中 。
如果我们设 以及 ,那么可以将似然记作:
梯度由以下公式给出:
其中, 表示 Kronecker 乘积(在这种情况下,该乘积只是两个向量的外积)。黑塞矩阵由以下公式给出:
我们可以在黑塞矩阵上构造一个下界:
其中, 是 维单位矩阵, 是取值全为 的 维向量。在二元的情况下,这变成:
这也遵循以下结论:由于 ,因此 。
我们可以使用这个下界来构造一个 MM 算法,以查找最大似然估计。公式更新为:
例如,让我们考虑二元的情况,因此 ,其中 。公式更新为:
上述算法(每一步)比 IRLS(Iteratively Reweighted Least Squares,迭代重加权最小二乘法)算法(即牛顿法)更快,后者是拟合广义线性模型的标准方法。为了理解这一点,请注意牛顿更新具有以下形式:
其中,。可以看出,式 (13) 的计算速度更快,因为我们可以预先计算常数矩阵 。
源与流
期望最大化算法
我们将讨论期望最大化(Expectation Maximization, EM)算法。该算法针对具有缺失数据和/或隐藏变量的概率模型,用于计算最大似然估计或最大后验参数估计,是 MM 算法的一个特例。
期望最大化算法背后的基本思想是在期望步骤(E 步骤)期间估计隐藏变量(或缺失值),然后在最大化步骤(M 步骤)期间使用完全观察到的数据来计算最大似然估计。当然,我们需要迭代这个过程,因为期望值取决于参数,但参数取决于期望值。
我们将证明期望最大化算法是一个边界优化算法,这意味着该迭代过程将收敛到对数似然的局部最大值。收敛速度取决于缺失数据的数量,这会影响边界的紧密性。
接下来,我们将描述一个通用模型的期望最大化算法。设 是样例 的可见数据,而 是隐藏数据。
下界
期望最大化算法的目标是最大化所观测数据的对数似然:
其中, 是可见变量, 是隐藏变量。遗憾的是,这很难优化,因为无法将 (对数)推入求和中。
期望最大化算法通过以下方式解决了这个问题。首先,考虑每个隐藏变量 上的一组任意分布 。观测数据对数似然可以记作:
使用詹森不等式,我们可以将 (这是一个凹函数)推入期望内,以获得以下对数似然的下界:
其中, 是概率分布 的熵,,被称为证据下界,因为该值是对数边缘似然 (也称为证据)的下界。优化这个下界是变分推理的基础。
期望步骤
我们看到下界是 个项的和,每个项都具有以下形式:
其中, 是概率分布 和 之间的 KL 散度。这里我们需要的关键性质是 ,当且仅当 时,。因此,我们可以通过将每个值设置为 来最大化相对于 的下界 。这被称为期望步骤。这确保了证据下界是一个紧下界:
为了了解这与绑定优化之间的联系,让我们定义:
于是,我们有 和 ,这符合要求。
然而,如果不能精确地计算后验 ,我们仍然可以使用近似分布 。这将产生对数似然性的非紧下界。期望最大化算法的这种广义形式被称为变分期望最大化。
最大化步骤
在最大化步骤中,我们需要最大化相对于 的 ,其中 是在迭代 的期望步骤中计算的分布。由于熵项 是相对于 的常数,我们可以在最大化步骤中省略这些常数。因此,只剩下:
这被称为期望的完全数据对数似然(expected complete data log likelihood)。如果联合概率在指数族中,我们可以将其重写为:
其中, 被称为期望的充分统计量。
在最大化步骤中,我们最大化期望的完全数据对数似然,以获得:
在指数族的情况下,最大化可以通过匹配期望充分统计量的矩以闭合形式求解。
从上面的讨论可以看出,期望步骤实际上不需要返回后验分布 的完整集合,而是可以只返回期望的充分统计量的总和 。
期望最大化算法的一个常见应用是对混合物模型进行拟合。
示例:缺失数据多元正态分布的期望最大化算法
当我们有一个完整观察到的数据矩阵时,很容易计算多元正态分布的最大似然估计:我们只计算样本的均值和协方差。在本节中,我们将考虑缺失数据或部分观测(partially observed data)到的数据情况。例如,我们可以将 的条目视为调查问卷的答案,其中一些答案可能是未知的。存在许多类型的缺失数据。在本节中,为了简单起见,我们做出了随机缺失(Missing At Random, MAR)假设。在随机缺失的假设下,可见数据的对数似然具有以下形式:
其中, 是样例 中的可见变量, 是隐藏变量, 是所有变量。遗憾的是,这个目标很难最大化。因为我们无法将对数运算移动到期望值内。幸运的是,我们可以很容易地应用期望最大化运算,接下来将展开阐述。
期望步骤
假设我们有来自上一次迭代的参数 ,那么,我们可以计算第 次迭代的期望完全数据对数似然,如下所示:
其中:
(为了简洁起见,我们省略对 和 的期望条件。)我们发现,需要计算 和 ;这些都是期望的充分统计量。
于是:
其中,我们基于隐藏和可见索引 和 将 和 划分为块。因此,期望的充分统计量为:
为了计算 ,我们使用结论 。因此:
最大化步骤
通过求解 ,我们可以证明最大化步骤等效于将这些期望的充分统计量插入通常的最大似然估计方程中,从而得到:
因此,我们看到期望最大化并不等同于简单地使用变量的期望值替换变量并应用标准最大似然估计公式,这将忽略后验方差并且将导致不正确的估计。相反,我们必须计算充分统计量的期望值,并将其插入最大似然估计的一般公式中。
初始化
为了启动算法,我们可以根据数据矩阵中完整观察到的行来计算最大似然估计。如果不存在这样的行,我们可以使用观察到的边缘统计量来估计 的对角项。然后我们准备启动期望最大化算法。
作为该程序的一个例子,让我们考虑一个缺失值插值问题,其中有 个 维数据样例,假设这些样例来自高斯分布。在我们生成的合成数据中, 的观测值是随机缺失的。首先,我们使用期望最大化算法拟合参数。将得到的参数称为 。现在可以使用我们的模型通过计算 来进行预测。使用学习参数获得的结果几乎与使用真实参数一样好。理所当然地,性能会随着数据的增加而提高,或者随着缺失数据的减少而提高。
示例:使用学生似然的稳健线性回归
我们将讨论如何使用期望最大化算法来拟合线性回归模型,为了实现鲁棒性,该模型使用学生分布来表示其似然,而不是更常见的高斯分布。更准确地说,似然为:
乍一看,实现方法可能并不直观,因为没有缺失数据,也没有隐藏变量。然而,事实证明,我们可以引入“人为的”隐藏变量,使问题更容易解决。这是一个常见的处理技巧。其中的关键是,我们可以将学生分布表示为高斯缩放的混合模型。
可以将学生分布的高斯缩放混合模型应用于我们的问题,方法是将潜在缩放 与每个样例联系起来。因此,完全的数据对数似然由下式给出:
忽略不涉及 的项,并考虑期望值,我们有:
其中,。我们发现,这是一个加权最小二乘目标,每个数据点的权重为 。
我们现在讨论如何计算这些权重。可以证明:
其中, 是标准化残差。因此:
所以,如果残差 很大,则该点将被赋予低权重 ,这是显而易见的,因为这个点可能是一个异常值。
期望最大化算法的扩展
期望最大化算法有许多变体和扩展。接下来,我们将讨论其中的一些扩展。
变分期望最大化算法
假设在期望步骤中,我们选择 。因为我们在函数空间上进行优化,所以这被称为变分推理(见 10.1 节)。如果分布族 足够丰富,足以包含真正的后验,,那么我们可以使 KL 散度为零。但一般来说,出于计算原因,我们可能会选择一个限制性更强的类别。例如,即使真正的后验是相关的,我们也可以使用 。
在期望最大化算法的期望步骤中,使用受限后验分布族 称为变分期望最大化(variational EM)算法。与常规期望最大化算法不同,变分期望最大化算法本身不能保证增加实际对数似然,但算法确实单调增加了变分下界。我们可以通过改变变分分布族 来控制这个下界的紧密性。在 的极限中,对应于精确推理,我们化简为与正则期望最大化算法相同的行为。
硬期望最大化算法
假设我们在变分期望最大化算法的背景下使用退化后验分布近似,对应于点估计,,其中 。这相当于硬期望最大化(hard EM)算法,我们在期望步骤中忽略了 的不确定性。
这种退化方法的问题是非常容易过拟合,因为潜在变量的数量与数据样例的数量成比例。
蒙特卡罗期望最大化算法
处理棘手的期望步骤的另一种方法是对期望的充分统计量使用蒙特卡罗近似。也就是说,我们从后验分布 抽取样本,然后计算每个完整向量 的充分统计量,最后对结果进行平均。这被称为蒙特卡罗期望最大化(Monte Carlo EM, MCEM)算法 [WT90; Nea12]。
抽取样本的一种方法是使用马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)近似方法。然而,如果我们必须等待马尔可夫链蒙特卡罗在每个期望步骤内收敛,则该方法会变得非常缓慢。另一种可替代的方法是使用随机近似,只在期望步骤中执行“简洁”采样,然后进行部分参数更新。这被称为随机近似期望最大化(stochastic approximation EM)算法,并且往往比蒙特卡罗期望最大化算法工作得更好。
广义期望最大化算法
有时我们可以精确地执行期望步骤,但不能精确地执行最大化步骤。然而,我们仍然可以通过执行“部分”最大化步骤来单调增加对数似然,在该步骤中,我们只增加期望的完全数据对数似然而不是最大化该似然。例如,我们可以遵循几个梯度步骤。这被称为广义期望最大化(Generalized EM, GEM)算法。我们可以执行一个牛顿–拉弗森步骤:
其中,$0 < \eta_t \le 1$ 是步长,并且
如果 ,我们称之为梯度期望最大化(gradient EM algorithm)算法。然而,可以使用更大的步长来加快算法,我们提出的拟牛顿期望最大化(quasi-Newton EM algorithm)算法。该方法还用 BFGS 近似代替了式 (50) 中的黑塞矩阵,该项可能不是负定的(对于非指数族模型)。这确保了整个算法是上升算法。然而,请注意,当最大化步长不能以闭合形式计算时,期望最大化算法在使用基于梯度的求解器直接优化边缘似然方面失去了一些吸引力。
ECM算法
ECM 算法代表“期望条件最大化”(Expectation Conditional Maximization)指的是在最大化步骤中,如果各个参数是相关的,则按顺序对这些参数进行优化。ECME 算法代表“期望条件最大化选择其一”(ECM Either,是 ECM 的一种变体,在一个或多个条件最大化步骤中,我们像通常一样最大化期望的完全数据对数似然(Q 函数),或者最大化观测的数据对数似然。对观测的数据对数似然进行最大化可能运算速度更快,因为这种方法忽略了期望步骤的结果,并直接优化了感兴趣的目标。这方面的一个标准示例是拟合学生分布。对于固定的 ,我们可以像往常一样更新 ,但为了更新 ,我们将形式为 的标准更新替换为 。
在线期望最大化算法
当处理大型或者流式数据集时,能够在线学习很重要,有两种主要的在线期望最大化(online EM)算法方法。第一种方法称为增量期望最大化(incremental EM)算法,优化下界 ,每次一个 。然而,这需要为每个数据样例存储期望的充分统计量。
第二种方法称为逐步期望最大化(stepwise EM)算法,基于随机梯度下降。这种方法优化了每个步骤中 的局部上界。
NO.34.tip: 贝叶斯优化
背景
我们讨论贝叶斯优化(Bayesian optimization)或 BayesOpt 方法,这是一种基于模型的黑盒优化方法,专门为计算成本很高的目标函数 而设计(例如,需要运行模拟,或者训练和测试特定的神经网络架构的场合)。
在实际应用中,函数 的计算成本往往很高,我们希望尽可能减少调用函数的次数(即,对函数 进行尽可能少的查询 )。这表明,我们应该根据迄今为止收集的数据 ,建立一个代理函数(surrogate function;又称响应曲面模型(response surface model)),我们可以使用该函数来决定下一步要查询的点。这里存在一个固有的权衡:应该选择我们认为 较大的点 (我们遵循文献中的惯例,并假设试图最大化 ),还是选择 不确定但通过观察函数值可能有助于我们改进代理模型的点。这是"探索-利用"(exploration-exploitation)困境的又一个例子。
在特殊情况下,我们正在优化的域是有限的,因此 ,贝叶斯优化问题类似于有关游戏机算法文献中的最佳拉杆臂识别(best arm identification)问题。一个重要的区别是,在游戏机算法问题中,我们关心所采取的每一个行为的成本,而在优化中,我们通常只关心找到最终解决方案的成本。换句话说,在游戏机算法问题中,我们希望最大限度地减少累积的遗憾,而在优化中,我们想要最大限度地降低简单的遗憾或最终的遗憾。
另一个相关主题是主动学习(active learning)。这里的目标是使用尽可能少的查询来识别整个函数 ,而在贝叶斯优化中,目标只是识别函数的最大值。
源与流
基于序列模型的优化
贝叶斯优化是一种称为基于序列模型的优化(Sequential Model-Based Optimization, SMBO)策略的实例。在这种方法中,我们在查询某个点的函数和基于新数据更新对代理的估计之间进行交替。更准确地说,在每次迭代 中,我们都有一个标记的数据集 ,该数据集记录了所查询的点 ,以及相应的函数值 ,其中 是可选的噪声项。我们使用这个数据集来估计真函数 上的概率分布,我们将用 来表示这一点。然后,我们使用采集函数(acquisition function) 选择下一个要查询的点 ,该函数计算查询 的期望效用。当观察到 之后,我们更新对函数的信念,然后重复该步骤。
贝叶斯优化
- 从随机查询 或空间填充设计中收集初始数据集
- 通过计算 初始化模型
- for 直到收敛 do
- 选择下一个查询点
- 计算函数值,
- 扩充数据集,
- 通过计算 更新模型
代理函数
我们将讨论表示和更新函数后验 的方法。
高斯过程
在贝叶斯优化方法中,使用高斯过程(Gaussian Process, GP)作为代理是非常常见的。高斯过程将在第18章中做详细解释,但其基本思想是,高斯过程将 表示为高斯分布:,其中 和 是可以从训练数据 推导出的函数。高斯过程需要指定一个核函数 ,该核函数测量输入点 之间的相似性。直觉上,如果两个输入相似,此时 较大,那么相应的函数值也可能相似,所以 和 应该呈正相关。这允许我们在标记的训练点之间对函数进行插值。在某些情况下,这种方法还可以让我们对其进一步扩展进行外推。
当我们的训练数据很少时,高斯过程工作得很好,并且支持闭式贝叶斯更新。然而,对于 个样本,精确更新的时间复杂度为 ,如果我们执行许多函数求值,这将变得非常慢。研究人员已经提出来各种方法可以将计算复杂度减少到 时间,其中 是我们选择的参数,但这会牺牲一些准确性。
此外,高斯过程的性能在很大程度上取决于是否有一个好的内核。我们可以通过最大化边缘似然来估计核参数 。然而,由于样本量较小(根据假设),我们通常可以通过使用近似贝叶斯推理方法边缘化 来获得更好的性能。
贝叶斯神经网络
高斯过程的一个自然替代方案是使用参数模型。如果我们使用线性回归,那么可以有效地执行精确的贝叶斯推理。如果我们使用非线性模型,例如深度神经网络,那么我们需要使用近似推理方法。
其他模型
我们可以自由使用其他形式的回归模型。比如使用随机森林的集成,这样的模型可以很容易地处理条件参数空间,尽管自然(需要获得不确定性估计)可能很慢。
采集函数
在贝叶斯优化方法中,我们使用采集函数(也称为评价函数(merit function))来评估我们可以查询的每个可能点的预期效用:
其中 是函数在 点的未知值, 是效用函数。不同的效用函数产生不同的采集函数,如下所述。为了鼓励探索,对于选择已经被查询的点,我们通常选择适当的函数,使其效用较小(或者在无噪声观测的情况下为0)。
改进的概率
让我们将 定义为迄今为止观察到的最佳值(称为现有价值(incumbent))。(如果观测结果有噪声,则一种合理的替代方法是使用最高平均值 )。然后,我们定义了一些新点 的效用为 。当新的价值高于现有价值时,将给予奖励。相应的采集函数由预期效用 给出。这被称为改进的概率(Probability of Improvement, PI)。如果 是一个高斯过程,那么这个量可以使用闭合形式计算,如下所示:
其中, 是 分布的累积分布函数,并且
期望的改进
改进的概率存在的问题是,所有的改进都被认为是同样好的,因此该方法倾向于非常积极地进行利用。一种常用的替代方案是考虑改进的量,通过定义 以及:
该采集函数被称为期望的改进(Expected Improvement, EI)准则。在高斯过程代理的情况下,该采集函数具有以下闭式表达式:
其中, 是 分布的概率密度函数, 是累积分布函数,。第一个项鼓励利用(评估具有高均值的点),第二个项鼓励探索(评估具有较高方差的点)。如果我们不能解析计算预测方差,但可以采样后验分布样本,那么我们可以计算期望的改进的蒙特卡罗近似值:
置信区间的上界
另一种方法是在某个置信水平 下计算函数的置信区间上界(upper confidence bound, UCB;又称为置信上界)算法,然后定义采集函数如下:
这被称为高斯过程-置信区间上界(GP-UCB)。
汤普森采样
我们将讨论在多拉杆臂游戏机背景下的汤普森采样(Thompson sampling)。其中状态空间是有限的,,并且采集函数 对应于拉杆臂 是最佳拉杆臂的概率。我们可以将其推广到实值输入空间 ,使用以下公式:
我们可以通过对 进行采样来计算该积分的单样本近似值。然后,我们可以选择最佳操作行为,如下所示:
换句话说,我们贪婪地对采样代理进行最大化。
对于连续空间,汤普森采样比在游戏机情况下更难应用,因为我们不能直接从采样函数中计算最佳"拉杆臂" 。此外,当使用高斯过程时,与对参数化代理模型的参数进行采样相比,对函数进行采样存在一些微妙的技术困难。
熵搜索
由于我们在贝叶斯优化中的目标是寻找到 ,因此尝试直接最小化我们对 位置的不确定性是有意义的,我们将其表示为 。因此,我们将效用定义如下:
其中, 是最优位置上的后验分布的熵。这被称为信息增益准则。与主动学习中所使用的目标相比,不同之处在于,这里我们想要获得关于 的信息,而不是关于所有 的函数 的信息。相应的采集函数由下式给出:
这被称为熵搜索(entropy search)。
遗憾的是,计算 很困难,因为计算需要输入空间上的概率模型。幸运的是,我们可以利用互信息的对称性将式(9)中的采集函数重写如下:
其中,我们可以使用汤普森采样来近似来自 的期望。现在我们只需要对输出空间 的不确定性进行建模。这被称为预测式熵搜索(predictive entropy search)。
知识梯度
到目前为止,我们所考虑的采集函数都是贪婪的,因为这些采集函数只向前看一步。我们提出了知识梯度(knowledge gradient)采集函数,通过考虑如果我们查询 ,随后更新后验,然后通过最大化新的信念来利用我们的知识,可能会得到进一步的改进,从而向前看两步。更准确地说,让我们定义如果再查询一个点,我们可以找到的最佳值:
我们将知识梯度采集函数定义如下:
可以将其与式(3)中的期望的改进函数进行比较。因此,我们选择点 ,通过观察 给我们提供知识,然后我们可以利用这些知识,而不是直接试图找到具有更好值的更好点。
优化采集函数
采集函数 通常是多模式的,因为该函数中所有先前查询过的点的值都是0(假设无噪声观测)。因此,最大化该函数本身可能是一个困难的子问题。
在连续设置中,通常使用多启动 BFGS 或网格搜索方法。我们也可以使用交叉熵方法,或者使用高斯混合模型,再或者使用变分自动编码器作为 上的生成模型。在离散的组合设置中(例如,当优化生物序列时),有的使用正则化进化,有的则使用近端策略优化。还存在许多其他的可能组合。
其他问题
在使用贝叶斯优化时,还有许多其他的问题需要解决,接下来,我们将简要讨论其中一些问题。
并行(批)查询
在某些情况下,我们希望在多个点上并行地查询目标函数,这被称为批量贝叶斯优化(batched Bayesian optimization)。现在我们需要对一组可能的查询进行优化,这在计算上甚至比常规情况更困难。
条件参数
贝叶斯优化方法通常应用于超参数优化。在许多应用中,只有当其他超参数具有特定值时,一些超参数才是明确定义的。例如,假设我们试图自动调整分类器,如在 Auto-Sklearn 系统或 Auto-WEKA 系统中所描述。如果该方法选择使用神经网络,则还需要指定层数和每层隐藏单元的数量;但如果该方法选择使用决策树,则应该指定不同的超参数,例如最大树深度。
我们可以通过使用树或有向无环图定义搜索空间来形式化这些问题,其中在每个叶子节点上定义不同的参数子集。将高斯过程应用于此设置需要非标准核。或者,我们可以使用其他形式的贝叶斯回归,例如随机森林的集成,该方法可以很容易地处理条件参数空间。
多保真度代理
在某些情况下,我们可以构造具有不同精度水平的代理函数,每个代理函数可能需要不同的计算时间。特别地,设 是 处的具有保真度 的真函数的近似。目标是通过在 值的序列处观察 来求解 ,使得总成本 低于某个预算。例如,在超参数选择的上下文中,保真度 可以控制我们运行参数优化器的时间,或者验证集的大小。
除了选择用于实验的保真度外,如果试验(查询)的廉价代理结果表明该试验不值得运行直到完成,我们还可以选择提前终止昂贵的试验(查询)。或者,我们可以选择恢复先前中止的运行,以收集更多的数据,例如冻融算法(freeze-thaw algorithm)。
约束条件
如果我们想最大化受已知约束限制的函数,我们可以简单地将约束构建到采集函数中。但如果约束是未知的,除了估计函数外,我们还需要估计可行集的支持区间。有人提出了加权期望的改进准则,定义为:,其中 是具有伯努利观测模型的高斯过程,该模型指定 是否可行。当然,还存在其他可行的方法。例如,有人提出了一种基于预测式熵搜索的方法。
NO.35.tip: 随机优化
背景
我们将讨论随机目标的优化,其形式如下:
其中, 是我们正在优化的参数, 是随机变量,例如外部噪声。
随机梯度下降
假设我们有一种计算目标函数梯度的无偏估计 的方法,即
于是,我们可以在梯度下降过程中使用该估计:
其中, 是学习率(learning rate)或步长(step size)。这被称为随机梯度下降。
源与流
选择步长
在使用随机梯度下降时,为了实现收敛,在选择学习率时需要特别小心。我们可以使用学习率调度(learning rate schedule),而不是选择单一的恒定学习率。在学习率调度中,我们会随着时间的推移调整步长。理论上,随机梯度下降实现收敛的一个充分条件是,如果学习率调度满足 Robbins-Monro 条件:
下面列出了一些学习率调度的常见示例:
在分段常数调度中, 是一组时间点,在这些时间点上,我们将学习率调整到指定值。例如,我们可以设置 ,这将使我们通过的每个阈值(或里程碑)的初始学习率降低 倍。可以看出 和 的情况。这被称为阶跃衰减(step decay)。有时,通过估计训练或验证损失何时稳定下来,自适应地计算阈值时间,这被称为高原衰减(reduce on-plateau)。指数衰减通常过快。常见的选择是多项式衰减,当 时,这对应于平方根调度(square-root schedule)。
方差缩减
由于随机梯度下降依赖于梯度的随机估计,因此可能收敛较慢。对于在每个步骤中生成的参数估计,研究人员已经提出了各种方法来减少这些参数估计的方差,这可以加速收敛。
预处理随机梯度下降
在许多情况下,梯度大小沿着每个维度可能存在较大差异,对应于损失函数的表面沿着某些方向是陡峭的,而沿着其他方向是平缓的,类似于谷底。在这种情况下,可以通过条件矩阵(conditioning matrix) 对梯度向量进行缩放来获得更快的收敛,如下所示:
这被称为预处理随机梯度下降。
用于优化"有限和"目标的随机梯度下降
在最简单的情况下,用于计算期望值的分布 不取决于被优化的参数 。在这种情况下,我们可以将梯度移动到期望算子内部,然后对 使用蒙特卡罗采样来近似梯度:
例如,考虑经验风险最小化(Empirical Risk Minimization, ERM)问题,该问题需要最小化以下目标:
其中, 是第 个标记样例, 是预测函数。这种目标被称为"有限和"(finite sum objective)。我们可以将其记作经验分布 的预期损失:
由于期望值取决于数据,而不是参数,因此我们可以在每次迭代时使用来自完整数据集的 个数据点的迷你批次来近似梯度:
然后可以将这些噪声梯度传递给随机梯度下降。当数据集很大时,这种方法比全批次(full batch)梯度下降要快得多,因为在更新模型之前,该方法不需要评估所有 个样例的损失。
用于优化分布参数的随机梯度下降
现在假设随机性取决于我们正在优化的参数。例如, 可以是从随机策略 中采样的行为,或者 可以是在随机变分推理中从推理网络 采样的潜在变量。在这种情况下,梯度的计算公式为:
第一项可以通过蒙特卡罗采样来近似:
其中,。请注意,如果 与 无关,那么该项将消除。
现在考虑第二项,该项取分布本身的梯度:
我们不能再使用基本的蒙特卡罗采样来近似这个积分。然而,还有各种其他的方法来近似。
得分函数估计器
近似式 (16) 的最简单方法是利用对数导数技巧(log derivative trick),该技巧是以下恒等式:
由此,我们可以将式 (16) 改写如下:
这被称为得分函数估计器(Score Function Estimator, SFE)。(术语"得分函数"指的是对数概率分布的梯度)得分函数估计器也被称为似然比梯度估计器(likelihood ratio gradient estimator),或 REINFORCE 估计器。我们现在可以很容易地使用蒙特卡罗进行近似:
其中,。我们只要求采样分布是可微的,而不要求目标函数 本身是可微的。因此,该方法可用于黑盒随机优化问题,例如变分优化、黑盒变分推理、强化学习等。
控制变量法
利用得分函数进行估计可能具有高方差。减少这种情况的一种方法是使用控制变量法,其中我们将 替换为:
在上式中, 是与 相关的基线函数(baseline function),并且 是一个系数。由于 ,我们可以使用 来计算 的无偏梯度估计。该方法的优越性在于,这种新的估计可以导致较低的方差。
Rao-Blackwellization
假设 是一个离散分布。在这种情况下,我们的目标变为 。现在,我们可以使用 来简单地计算梯度。当然,如果 可以取指数级的多个值(例如,我们在字符串空间上进行优化),那么这个表达式是难以处理的。然而,假设我们可以将这个求和划分为两个集合,一个是高概率值的小集合 ,另一个是所有其他值的大集合 。于是,我们可以在 上枚举,并在 上使用得分函数估计器:
为了计算第二项的期望值,我们可以使用应用于来自 的样本的拒绝采样。该程序是 Rao-Blackwellization 的一种形式,与标准得分函数估计器相比,这种方法减少了方差。
重新参数化的技巧
即使在使用控制变量法时,得分函数估计器也可能具有高方差。在本节中,我们将推导出一个低方差估计器,如果 相对于 是可微的,则可以应用该估计器。另外,我们还要求,可以通过首先从独立于 的某个噪声分布 中采样,然后使用确定性和可微函数 将其转换为 ,以从 计算样本。例如,我们可以采样 并计算,而不是采样 :
其中,。这允许我们将随机目标改写如下:
由于 与 无关,我们可以将梯度算子移动到期望内,从而可以使用蒙特卡罗近似:
其中,。这被称为重新参数化梯度(reparameterization gradient)或路径导数(path-wise derivative),并被广泛用于变分推理。
示例
作为一个简单的例子,假设我们定义了某种任意函数,例如 ,然后将其期望值定义为 ,其中 ,。假设我们要计算:
由于高斯分布是可重新参数化的,因此我们可以对 进行采样,然后使用自动微分来计算这些梯度项,之后进行平均。
然而,在高斯分布的特殊情况下,我们也可以直接计算梯度向量。有Bonnet 定理,该定理表明:
类似地,Price 定理表明:
我们可以证明这两种方法在数值上是等价的,正如理论所表明的结论。
全导数
为了计算式 (23) 中期望内的梯度项,我们需要使用全导数(total derivative),因为函数 通过噪声样本 直接依赖于 。回想一下,对于形式为 的函数,相对于 的全导数可以通过链式法则进行计算:
因此:
其中, 是噪声转换的大小为 的雅可比矩阵。
"稳着地"估计器
我们考虑变分推理中出现的特殊情况。证据下界目标(对于单个潜在样本 )具有以下形式:
其中, 是变分后验的参数。则梯度变为:
第一项是 通过生成的样本 对目标的间接影响。第二项是 对目标的直接影响。第二项在期望中为零,因为该项是评分函数,但对于有限数量的样本,该项可能是非零的,即使 是真正的后验。我们建议去掉第二项以创建一个较低的方差估计器。这可以通过使用 来实现,其中 是 的"断开"副本,不影响梯度的值。在伪代码中,该方法如下所示:
我们称之为"稳着地"(Sticking The Landing, STL)估计器。请注意,"稳着地"估计器并不总是比没有停止梯度项的"标准"估计器好。我们建议使用估计量的加权组合,其中对权重进行优化,以减少固定计算量的方差。
Gumbel softmax技巧
在处理离散变量时,我们不能使用重新参数化技巧。然而,我们通常可以将离散变量放松为连续变量,这样就可以使用重新参数化技巧,如下所述。
考虑一个具有 个比特的独热向量 ,因此 ,。这可以用来表示 元分类变量 。设 ,其中 ,因此 。或者,我们可以使用 来参数化分布,其中 。我们将使用 来表示。
我们可以通过以下计算来从该分布中采样独热向量 :
其中, 从 Gumbel 分布中采样。我们可以通过首先采样 ,然后计算 来采样这样的样本。这被称为 Gumbel 最大技巧(Gumbel-max trick),它为我们提供了分类分布的可重新参数化表示。
遗憾的是, 的导数在任何地方都是 0,除了在从一个标签到另一个标签的转换边界处,该转换边界处的导数是未定义的。然而,假设我们使用 替换 ,并使用连续松弛 替换离散的独热向量 ,其中 是 维单纯形,那么可以记作:
其中, 是一个温度参数。这被称为 Gumbel softmax 分布或具体分布(concrete distribution)。当 时,该分布平滑地接近离散分布。
我们现在可以使用 代替 ,这允许我们采用重新参数化的梯度(相对于 )。
随机计算图
我们可以将包含确定性和随机分量的任意函数表示为随机计算图(stochastic computation graph)。然后,我们可以推广自动微分算法,利用得分函数估计和重新参数化来计算复杂嵌套函数的蒙特卡罗梯度。
直通式估计器
我们将讨论如何对信号的量化版本的梯度进行近似。例如,假设我们有以下阈值函数,该函数对其输出进行二值化:
上式并没有一个明确定义的梯度。然而,我们提出的直通式估计器(straight-through estimator)作为近似。其基本思想是,在计算向后传递时,将 (其中, 是 相对于输入的导数)替换为 。 在实践中,我们有时使用 hard tanh 函数代替 ,其定义如下:
这样可以确保反向传播的梯度不会变得太大。
NO.36.tip: 自然梯度下降
背景
我们讨论自然梯度下降(Natural Gradient Descent, NGD),这是一种用于优化(条件)概率分布 参数的二阶方法。其关键思想是通过测量诱导分布之间的距离来计算参数更新,而不是直接比较参数值。
例如,考虑比较两个高斯分布, 和 。参数向量之间的(平方)欧几里得距离分解为 。然而,预测分布的形式为 ,因此需要测量 相对于 的变化。两个单变量高斯分布,其均值相差 。两个单变量高斯分布共享相同的小方差 ,,这两个单变量高斯分布共享相同的大方差。很显然,当方差很小时, 的值更重要(就对分布的影响而言)。因此,我们看到这两个参数相互作用,而欧几里得距离无法捕捉到这一点。当我们考虑更复杂的模型(例如深度神经网络)时,这个问题会变得更糟。通过对这种相关性进行建模,自然梯度下降可以比其他梯度方法更快地收敛。
自然梯度下降的关键是根据 KL 散度来测量两个概率分布之间的距离概念。我们可以用 Fisher 信息矩阵来近似。特别地,对于任何给定的输入 ,我们有:
其中, 是 Fisher 信息矩阵。
我们可以使用 来计算当前分布和更新分布之间的平均 KL 散度,其中 是平均 Fisher 信息矩阵:
自然梯度下降使用逆 Fisher 信息矩阵作为预处理矩阵,即我们执行以下形式的更新:
其中:
称为自然梯度。
源与流
自然梯度下降的解释
自然梯度下降作为信赖域方法
我们证明,可以将标准梯度下降解释为优化目标的线性近似,并对参数变化的 范数进行惩罚,即如果 ,则优化:
现在,让我们将平方距离替换为基于 Fisher 信息矩阵的平方距离,。这相当于白化坐标系(whitened coordinate system)中欧几里得距离的平方 ,因为:
新目标变成:
求解 ,得出更新:
这与自然梯度方向相同。因此,我们可以将自然梯度下降视为一种信赖域方法,其中我们对目标使用一阶近似,并在约束中使用 Fisher 信息矩阵距离。
在上面的推导中,我们假设 是一个常数矩阵。在大多数问题中,该常数矩阵会在空间中的每个点发生变化,因为我们在一个被称为黎曼流形(Riemannian manifold)的弯曲空间中进行优化。对于某些模型,我们可以有效地计算 Fisher 信息矩阵,即使使用目标的一阶近似,也能够捕获曲率信息。
自然梯度下降作为高斯-牛顿方法
如果 是一个指数族分布,其自然参数由 计算,那么我们可以证明自然梯度下降与广义高斯-牛顿(Generalized Gauss-Newton, GGN)方法相同。此外,在在线设置中,这些方法等效于使用扩展卡尔曼滤波器执行顺序贝叶斯推理。
自然梯度下降的优点
使用 Fisher 信息矩阵而不是黑塞矩阵作为预处理矩阵有两个优点。首先, 总是正定的,而 在鞍点上可以有负的特征值,这在高维空间中很普遍。其次,很容易从迷你批次在线近似 ,因为 是梯度向量的外积的期望值(相对于经验分布)。这与基于黑塞的方法形成了对比,基于黑塞的方法对迷你批次近似引入的噪声更敏感。
此外,与信赖域优化的联系清楚地表明,自然梯度下降以对预测最重要的方式更新参数。这使得该方法能够在参数空间的无信息区域中采取更大的步长,这有助于避免陷入停滞,同时也有助于解决参数高度相关时出现的问题。
我们提出具有不寻常的、高度耦合参数化的二维高斯分布:
目标是交叉熵损失:
该目标的梯度由下式给出:
假设 ,于是 Fisher 矩阵是一个常数矩阵:
我们将 空间中的最陡下降与自然梯度法进行了比较。自然梯度法相当于 空间中的最大下降。两种方法都从 开始。全局最优值为 。我们看到,自然梯度方法(蓝点)收敛到这个最优值的速度要快得多,并且采用最短的路径,而最陡的下降则采用非常迂回的路径。我们还看到,白化参数空间中的梯度场呈现为"球形",这使得下降更加简单和快速。
最后,请注意,无论我们如何对分布进行参数化,自然梯度下降始终保持不变。因此,即使对于高斯的标准参数化,我们也会得到相同的结果。如果我们的概率模型更复杂,例如深度神经网络。
近似自然梯度
自然梯度下降的主要缺点是计算(逆)Fisher 信息矩阵的计算成本。为了加快计算速度,有几种方法对 的形式进行了假设,这样就可以有效地求逆。例如,使用对角近似进行神经网络训练,使用低秩加块对角近似,还有假设梯度的协方差可以通过具有低树宽的有向高斯图模型来建模(即 的 Cholesky 因子分解是稀疏的)。
有人提出了 KFAC 方法。KFAC 表示"Kronecker 因子近似曲率"(Kronecker factored approximate curvature)。这将深度神经网络的 Fisher 信息矩阵近似为块对角矩阵,其中每个块是两个小矩阵的 Kronecker 乘积。该方法在神经网络的监督学习以及神经策略网络的强化学习上显示出良好的结果。Kronecker 因子近似曲率近似可以使用的平均场分析来证明。此外,有人证明了如果深度神经网络被过度参数化(充当插值器),则 Kronecker 因子近似曲率方法将收敛到深度神经网络的全局最优。
一种更简单的方法是通过使用经验分布代替模型的分布来近似 Fisher 信息矩阵。特别是,定义 , 和 。然后我们可以按如下公式计算经验 Fisher:
这种近似因计算简单而被广泛使用。特别地,我们可以使用平方梯度向量来计算对角线近似。(这与 AdaGrad 类似,但只使用当前梯度,而不是梯度的移动平均值;后者在执行随机优化时是更好的方法。)
遗憾的是,经验 Fisher 不如真正的 Fisher 有效。其原因是,当我们到达参数空间的平坦部分时,梯度向量为零,经验 Fisher 将变得奇异,因此算法将陷入这个稳定期。然而,真正的 Fisher 将期望值置于输出之上,即该方法将 边缘化。如果我们改变参数,这将允许该方法检测输出中的微小变化。这就是为什么自然梯度法比标准梯度法更能"逃离"稳定期的原因。
另一种策略是使用 的精确计算,但使用截断共轭梯度方法近似求解 ,其中每个共轭梯度步骤使用黑塞向量乘积的有效方法。这被称为无黑塞优化(Hessian free optimization)。然而,这种方法可能很慢,因为计算单个参数更新可能需要多次共轭梯度迭代。
指数族的自然梯度
我们假设 是以下形式的预期损失:
其中, 是一个具有矩参数 的指数族分布。这是变分优化和自然进化策略的基础。
结果表明,矩参数的梯度与自然梯度 相同。这遵循链式法则:
其中,,并使用式 (19) 记作:
因此:
仍然需要计算相对于矩参数的(规则)梯度。具体实现细节将取决于 的形式和 的形式。接下来,我们将讨论一些解决该问题的方法。
高斯分布情况下的解析计算
我们假设 。我们现在展示如何解析计算相关的梯度。
根据 2.4.2.5 节, 的自然参数为:
矩参数为:
为了简单起见,我们导出标量情况的结果。设 ,。通过使用链式法则,矩参数的梯度为:
仍然需要计算相对于 和 的导数。如果 ,则根据 Bonnet 定理,我们得到:
根据 Price 定理,我们得到:
其中,当 时,;否则,。
在多变量情况下,结果如下所述:
因此,我们看到自然梯度依赖于损失函数 的梯度和黑塞矩阵。
一般情况下的随机近似
一般来说,很难采用解析方式计算自然梯度。然而,我们可以计算蒙特卡罗近似。为了理解这一点,我们假设 是以下形式的预期损失:
根据式 (21),自然梯度由下式给出:
对于指数族分布,上述公式右侧的两项都可以写成期望值,因此可以通过蒙特卡罗方法进行近似。为了理解这一点,请注意:
如果 是可重新参数化的,那么我们可以应用重新参数化技巧将梯度移动到期望算子内部。这样我们就从 中采样出 ,然后计算梯度并求平均值,之后可以将得到的随机梯度传递给随机梯度下降。
熵函数的自然梯度
我们将讨论如何计算指数族分布的熵的自然梯度,这在进行变分推理时很有用。自然梯度的计算公式为:
其中,根据式 (37),我们得到:
由于 ,因此:
其中, 是基础度量值。由于 是 的函数,我们有:
由于 ,我们有:
因此:
如果我们假设 ,也就是通常的情况,那么得到:
NO.37.tip: 熵
背景
我们将讨论分布 的熵(entropy),这个熵的概念只是概率分布和均匀分布之间 KL 散度的移位和缩放版本。
定义
个状态上分布为 的离散随机变量 ,其熵的定义为:
我们可以使用任何底数的对数,但通常使用以 2 为底的对数,在这种情况下,单位称为比特;或者使用以 为底的对数,在这种情形下,单位称为奈特。
熵等于一个常数减去均匀分布的 KL 散度:
如果 是均匀分布,则 KL 为零,并且我们看到熵达到其 的最大值。
对于二元随机变量的特殊情况,,我们可以记作 和 。因此熵变为:
这被称为二元熵函数(binary entropy function),也被记作 。
源与流
连续随机变量的微分熵
如果 是一个具有概率密度函数 的连续随机变量,我们将微分熵(differential entropy)定义为:
假设这个积分存在。
例如,可以证明 维高斯分布的熵是:
在一维高斯分布的情况下,该式变为:
请注意,与离散情况不同,微分熵可以是负值。这是因为概率密度函数可能大于 1。例如,假设 ,于是有:
如果设置 ,那么我们有 比特。
理解微分熵的一种方法是认识到所有实数只能表示为有限精度。可以证明,连续随机变量 的 比特量化的熵大约为 。例如,假设 。于是,在 的二进制表示中,二进制点右侧的前 3 比特必须为 0(因为数字 )。描述 到 个比特的精度只需要 比特,这与上面计算的 完全一致。
连续熵也缺乏 KL 散度的重新参数化独立性。特别地,如果我们变换随机变量 ,那么熵就会随之变换。为了理解这一点,请注意变量的变化实际上表明:
因此,连续熵变换如下:
对于变换的雅可比行列式,我们在其对数的连续熵中选取一个因子。即使是简单地重新缩放随机变量,也会改变连续熵的值,例如当我们仅仅改变单位时。
典型集
对于概率分布的典型集(typical set),该集合中的元素具有这样的信息内容:信息内容接近于来自分布的随机样本的期望信息内容。更准确地说,对于支撑集 的分布 , 的 -典型集合 是所有长度为 的序列的集合,并满足:
如果我们假设 ,那么可以将中间的项解释为熵的 -样本经验估计。渐近均分性质(Asymptotic Equipartition Property, AEP)表明,当 时,这将在(概率上)收敛到真正的熵。因此,典型集的概率接近 1,同时也是对 所生成内容的简明总结。
交叉熵与困惑度
衡量模型 与真实分布 接近程度的标准方法是使用 KL 散度,由下式给出:
其中, 是交叉熵:
并且, 是熵,是独立于模型的常数。
在语言建模中,通常会报告一种称为困惑度(perplexity)的替代性能度量。困惑度被定义为:
我们可以按照如下方法计算交叉熵的经验近似值。基于从 采样的数据,假设我们使用该数据的经验分布来近似真实分布:
在这种情况下,交叉熵由下式计算而得:
相对应的困惑度的计算公式为:
在语言模型的情况下,我们在预测下一个单词时通常以前一个单词为条件。例如,在二元模型中,我们使用形式为 的二阶马尔可夫模型。我们将语言模型的分支因子(branching factor)定义为任何给定单词后可能出现的单词的数量。例如,假设模型预测每个单词具有相等的可能性,且与上下文无关,因此 ,其中 是词汇表中的单词数量。那么困惑度就是 。如果某些符号比其他符号更有可能,并且模型正确地反映了这一可能性,那么所得到的困惑度将低于 。然而,我们有 ,所以我们永远无法将困惑度降低到 以下。
NO.38.tip: 支持向量机
背景
支持向量机(Support Vector Machine,SVM)的基本模型是定义在特征空间上间隔最大的线性分类器。它是一种二类分类模型,当采用了核技巧之后,支持向量机可以用于非线性分类。不同类型的支持向量机解决不同的问题。
- 线性可分支持向量机(也称为硬间隔支持向量机):当训练数据线性可分时,通过硬间隔最大化,学得一个线性可分支持向量机。
- 线性支持向量机(也称为软间隔支持向量机):当训练数据近似线性可分时,通过软间隔最大化,学得一个线性支持向量机。
- 非线性支持向量机:当训练数据不可分时,通过使用核技巧以及软间隔最大化,学得一个非线性支持向量机。
在本章中,假设输入空间和特征空间是不同的。通常假设输入空间为欧氏空间,特征空间为希尔伯特空间。此时给定某个输入 ,通过某种映射(可能为线性映射,也可能为非线性映射)到特征空间的表示为 。此时在特征空间中学习线性支持向量机(而不是在输入空间中学习线性支持向量机)。欧氏空间与希尔伯特空间的不同如下:
- 欧氏空间是有限维度的,希尔伯特空间是无穷维度的;
- 欧氏空间 希尔伯特空间 内积空间 赋范空间。
越抽象的空间具有的性质越少,在这样的空间中能得到的结论就越少。不过反过来,如果发现了赋范空间中的某些性质,那么前面那些空间也都具有这个性质。我们生活在三维空间,把它拓展到 维空间就是欧氏空间,这是我们比较熟悉的空间,具有一切美好的性质。当我们不局限于有限维度,就来到了希尔伯特空间。从有限到无限是一个质变,很多美好的性质便消失了,一些非常有悖常识的现象会出现。如果再进一步去掉完备性,就来到了内积空间。如果再进一步去掉“角度”的概念,就来到了赋范空间。在这里,起码我们还有“长度”和“距离”的概念。
源与流
线性可分支持向量机
原始问题
给定一个特征空间上的训练数据集 ,其中 ,,。 为第 个实例; 为 的类标记:
- 若 时,则称 为正例;
- 若 时,则称 为负例。
假设训练数据集线性可分,希望在特征空间中找到一个分离超平面,它能将所有的正例划分到超平面的一侧、所有的负例划分到超平面的另一侧。由于超平面可以用方程 表示,它由法向量 和截距 决定,可以用 来表示,于是需要求得分离超平面的参数 。
当训练数据集线性可分时,理论上存在无穷多个分离超平面可以将两类数据正确分开。线性可分支持向量机提出了间隔最大化这样的约束,最终求得的分离超平面只有唯一的一个。
给定线性可分训练数据集 ,假设通过间隔最大化学习得到的分离超平面为:。定义分类决策函数:。该分类决策函数也称为线性可分支持向量机。
对于线性可分支持向量机,通常可以将一个样本距离分离超平面的远近来表示分类预测的可靠程度:一个样本距离分离超平面越远,则该样本的分类越可靠;一个样本距离分离超平面越近,则该样本的分类就不那么确信。
(给定超平面 ,样本 距超平面的距离为:。 的符号与样本标记 的符号是否一致表示分类是否正确。)
- 时,即 位于超平面上方,将 划分为正类。若 ,则分类正确。
- 时,即 位于超平面下方,将 划分为负类。若 ,则分类正确。
所以可以用 来表示分类的正确性以及确信度(符号决定了正确性,范数决定了确信度)。
给定训练数据集 ,给定超平面 ,定义超平面 关于样本点 的函数间隔为:。定义超平面 关于训练集 的函数间隔为超平面 关于 中所有样本点 的函数间隔之最小值:。
是关于某个样本点的间隔, 是关于训练集的间隔。
函数间隔存在一个重要的缺陷:当成比例地改变 和 (比如将它们改变为 和 ,超平面 不变,但是函数间隔却变为原来的 100 倍。)因此我们引入几何间隔。
对于给定的训练数据集 和超平面 ,定义超平面 关于样本点 的几何间隔为:。定义超平面 关于训练集 的几何间隔为超平面 关于 中所有样本点 的几何间隔之最小值:。
是关于样本点的间隔, 是关于训练集的间隔。
支持向量机的目标是:求解能够正确划分训练数据集,且几何间隔最大的分离超平面。这里的几何间隔最大化又称为硬间隔最大化。
这一目标可以用数学语言描述为约束的最优化问题:
根据几何间隔和函数间隔的关系,问题转化为:
函数间隔 并不影响最优化问题的解(假设将 按比例地改变为 ,此时函数间隔变成 。这一变化对求解最优化问题的不等式约束和最优化目标函数都没有影响),因此令 。同时注意到 等价于 。于是最优化问题改写为:
这是一个凸二次规划问题。
下面给出线性可分支持向量机学习算法——最大间隔法的算法。
- 输入:线性可分训练数据集 。
- 输出:最大几何间隔的分离超平面和分类决策函数。
- 算法步骤如下。
- 构造并且求解约束最优化问题: 求得最优解 。
- 由此得到分离超平面:,以及分类决策函数 。
可以证明若训练数据集 线性可分,最大间隔分离超平面存在且唯一。
假设已经求得最大间隔分离超平面为 。把训练数据集中与 距离最近的样本称为支持向量。支持向量就是那些使得约束条件等号成立的样本:即 。
- 支持向量中的正例位于超平面 。
- 支持向量中的负例位于超平面 。
超平面 、 称为间隔边界。、 和最大间隔分离超平面 平行,且没有任何实例点落在 、 之间。在 、 之间形成一条隔离带,隔离带的宽度为 。
在决定分离超平面时,只有支持向量起作用:
- 如果改变了支持向量,则最大间隔分离超平面也随之改变。
- 如果去掉了间隔边界 、 之外的任何数量的样本,则最大间隔分离超平面是不变的。
所以支持向量在确定最大间隔分离超平面中起着决定性作用(如图 7.1 所示)。这也是支持向量机名称的由来。
对偶问题
我们将求解线性可分支持向量机的最优化问题作为原始最优化问题。通过应用拉格朗日对偶性转化为对偶问题,这就是线性可分支持向量机的对偶算法。在这一过程中可以方便地引入核函数,从而将支持向量机算法推广到非线性分类问题。
原始问题:
定义拉格朗日函数:
其中 为拉格朗日乘子向量。
原始问题的对偶问题是极大极小问题:。
先求 。通过拉格朗日函数的偏导数为零,则有:
求得 ,。
再求极大值。将上面得到的 , 代入拉格朗日函数:
于是待求的问题为:
假定已经求得对偶最优化问题的 的解为 ,则
由于 不是零向量(若它为零向量,则 也为零向量,没有实际应用价值)。则存在某个 使得 。根据 (拉格朗日函数极小值条件),此时必有 。同时考虑 ,得到:
于是最大间隔分离超平面为:
分类决策函数为:
上式称为线性可分支持向量机的对偶形式。可以看到 只依赖于 对应的样本点 ,因此我们将训练数据集里面对应于 的样本点对应的实例 称为支持向量。
对于 的样本点,根据 (拉格朗日函数极小值条件),有:,即 一定在间隔边界上。这与原始问题给出的支持向量的定义是一致的。
下面给出线性可分支持向量机学习算法的对偶算法。
- 输入:线性可分训练数据集 。
- 输出:最大几何间隔的分离超平面和分类决策函数。
- 算法步骤如下。
- 构造并且求解约束最优化问题: 求得最优解 。
- 计算
- 同时选择 的一个正的分量 ,计算
- 由此得到最大几何间隔分离超平面:,以及分类决策函数 。
线性支持向量机
对于线性不可分训练数据,线性支持向量机不再适用。但是可以想办法将它扩展到线性不可分问题。
设训练集为 ,其中 ,,。假设训练数据集不是线性可分的。这意味着某些样本点 不满足函数间隔大于等于 1 的约束条件。对每个样本点 引进一个松弛变量 ,修改最优化目标和约束如下。
- 约束条件修改为:。表示函数间隔加上松弛变量大于等于 1。
- 优化目标修改为:。表示对每个松弛变量 ,支付一个代价 ,这里 称为惩罚参数。
- 值大时,对误分类的惩罚增大,此时误分类点显得更重要。
- 值小时,对误分类的惩罚减小,此时误分类点显得不那么重要。
对应于硬间隔最大化,这里称为软间隔最大化。于是线性不可分的线性支持向量机的学习问题就是求解凸二次规划问题:
这称为线性支持向量机的原始问题。可以证明 的解是唯一的, 的解不是唯一的, 的解存在于一个区间内。
假设求解软间隔最大化问题得到的分离超平面为:,相应的分类决策函数为 。 称为线性支持向量机。
对于线性支持向量机的对偶问题,定义拉格朗日函数为:
原始问题是拉格朗日函数的极小极大问题;对偶问题是拉格朗日函数的极大极小问题。
先求 对 的极小。根据偏导数为 0:
得到:
再求极大问题。将上面三个等式代入拉格朗日函数:
于是得到对偶问题:
设 是对偶问题的一个解。若存在 的某个分量 ,,则线性支持向量机的原始问题的解可以按照下式得到:
于是分离超平面为:。分类决策函数为:。
下面给出线性支持向量机学习算法的对偶算法。
- 输入
- 训练数据集 。
- 惩罚参数 。
- 输出:软间隔最大化分离超平面和分类决策函数。
- 算法步骤如下。
-
求解约束最优化问题: 求得最优解 。
-
计算
-
同时选择 的某个分量 ,计算
可能存在多个符合条件的 。这是由于原始问题中,对 的解不唯一。实际计算时,可以取在所有符合条件的样本点上的平均值。
-
由此得到软间隔最大化分离超平面:,以及分类决策函数 。
-
对偶问题的解 中对应于 的样本点 的实例点 称为支持向量(软间隔的支持向量),可能存在下列情形。
- 若 ,则松弛量 ,支持向量恰好落在了间隔边界上。
- 因为根据 ,得到:
- 当 ,则 ,根据拉格朗日函数极值条件,必须有 ;
- 当 ,则 ,于是 可能为任何正数。
- 若 ,且 ,则支持向量落在间隔边界与分离超平面之间,分类正确。
- 若 ,且 ,则支持向量落在分离超平面上。
- 若 ,且 ,则支持向量落在分离超平面误分类一侧。
根据 的定义,它就是使得函数间隔加上 大于等于 1。即线性可分时,支持向量位于间隔边界: 上;现在支持向量位于 上。
非线性支持向量机
对于给定的训练集 ,其中 ,,,如果能用 中的一个超曲面将正负实例正确分开,则称这个问题为非线性可分问题。
设 是输入空间, 为特征空间(希尔伯特空间)。若存在一个从 到 的映射 ,使得所有的 ,函数 ,则称 为核函数。即核函数将输入空间中的任意两个向量 映射为特征空间中对应的向量之间的内积。
通常我们不关心这个映射的具体表达形式,而是直接给出 。
考虑到在线性支持向量机的对偶形式中,只涉及输入实例和实例之间的内积,故将内积 替换成核函数 。则对偶问题的目标函数成为:
分类决策函数变成:
在给定核函数 的情况下,可以利用求解线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式地在特征空间进行的,这样的技巧称为核技巧。(在实际应用中,往往依赖经验直接选择核函数,然后验证该核函数确实是有效的核函数。)给出常用的一些核函数如下。
-
多项式核函数:
- 对应的支持向量机是一个 次多项式分类器。
- 此时分类决策函数成为
-
高斯核函数:
- 对应的支持向量机是高斯径向基函数分类器(radial basis function)。
- 此时的分类决策函数成为
-
sigmoid核函数:。
最后我们总结非线性支持向量机学习算法。
- 输入
- 训练数据集 。
- 惩罚参数 。
- 输出:分类决策函数。
- 算法步骤如下。
- 选择适当的核函数 ,求解约束最优化问题: 求得最优解 。
- 计算
- 同时选择 的某个合适的分量 ,计算
- 构造分类决策函数 。
当 是正定核函数时,该问题为凸二次规划问题,解是存在的。
支持向量回归
支持向量机不仅可以用于分类问题,也可以用于回归问题。给定训练数据集 ,其中 ,,。对于样本 通常根据模型输出 与真实值 之间的差别来计算损失,当且仅当 时损失才为零。
支持向量回归(Support Vector Regression,SVR)的基本思路是:允许 与 之间最多有 的偏差。仅当 时,才计算损失。当 时,我们认为预测正确。
用数学语言描述 SVR 问题:
其中 为罚项常数, 为损失函数 ,如图 7.2 所示。 定义为:
线性回归中,损失函数为 。
更进一步,引入松弛变量 ,则新的最优化问题为:
这就是 SVR 原始问题。类似地,引入拉格朗日乘子,,定义拉格朗日函数:
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题
先求极小问题:根据 对 偏导数为零可得:
再求极大问题(取负号变极小问题):
KKT 条件为:
由 KKT 条件可得: 当且仅当 时, 非零; 当且仅当 时, 非零。 约束 与 不能同时成立(若同时成立,则得出 ),因此 中至少一个为零。
假设最终解为 ,在 中,找出 的某个分量 ,则有:
更进一步,如果考虑使用核技巧,给定核函数 ,则 SVR 可以表示为:
SVM的优缺点
支持向量机(Support Vector Machine,SVM)本质上是非线性方法,在样本量比较少的时候,容易抓住数据和特征之间的非线性关系(相比线性分类方法如 logistic regression),因此可以解决非线性问题、可以避免神经网络结构选择和局部极小点问题、可以提高泛化性能、可以解决高维问题。
SVM 对缺失数据敏感,对非线性问题没有通用解决方案,必须谨慎选择核函数来处理,计算复杂度高。主流的算法是 ,这样对大规模数据就显得很无力了。不仅如此,由于其存在两个对结果影响相当大的超参数(如果用 RBF 核,是核函数的参数 gamma 以及惩罚项 ),这两个超参数无法通过概率方法进行计算,只能通过穷举试验来求出,计算时间要远高于不少类似的非线性分类器。
NO.39.tip: 结构时间序列模型
背景
我们将讨论时间序列预测(time series forecasting),这是在给定到目前为止数据的情况下,计算未来观测的预测分布问题,即计算 。该模型还可以选择性地以已知的未来输入为条件,以获得 。目前有很多方法可以求解这个问题我们将重点关注结构时间序列(Structural Time Series, STS)模型,该模型是根据线性高斯状态空间模型定义的。
许多经典的时间序列方法,例如 ARMA(AutoRegressive Moving Average,自回归移动平均)方法,可以表示为结构时间序列模型。然而,结构时间序列方法具有更大的灵活性。例如,我们可以创建非线性、非高斯,甚至是层次扩展模型,如下文所述。
概述
结构时间序列模型的基本思想是将观测到的标量时间序列表示为 个单独分量(component)的总和:
其中,。例如,我们可能有一个季节性分量,它导致观测值上下波动,还有一个增长分量,它导致观察值随着时间的推移而变大。每个潜在过程 都由一个线性高斯状态空间模型建模,该模型也称为动态线性模型。由于这些模型均是线性的,我们可以将这些模型组合成一个单独的线性高斯状态空间模型。特别是,在标量观测的情况下,该模型具有以下形式:
其中, 和 是分块结构矩阵,每个分量对应一个分块。然后,向量 将每个分量的所着相关片段相加,以生成总体均值。注意,矩阵 和 是固定稀疏矩阵,两个矩阵均可以从模型相应分量的形式中推导出来,如下所述。因此,唯一的模型参数是方差项 和 ,以及可选的回归系数 。我们可以将其推广到向量值观测的情况,如下所示:
源与流
结构化构建块
我们将讨论常见的结构时间序列模型的构建块。
局部水平模型
最简单的潜在动力过程被称为局部水平模型(local level model)。局部水平模型假设观测值 是由具有(潜在)均值 的高斯分布产生的,该高斯分布根据随机游走随时间进行如下的演变:
我们还假设 。因此,任何未来步骤的潜在均值都服从分布 ,这意味着方差随时间增长。我们也可以使用自回归(AR)过程,即 ,其中 ,从而具有平稳分布 ,因此不确定性增长到有限的渐近值,而不是无限制地增长。
局部线性模型
许多时间序列呈现出向上或向下的线性趋势(至少在局部是这样的趋势)。我们可以通过让水平值 在每一步中变化 (表示直线在 间隔内的斜率)来对此进行建模:
斜率本身也遵循随机游走:
并且 。这被称为局部线性趋势(local linear trend)模型。
我们可以通过定义以下动力学模型将这两个过程结合起来:
对于发射模型,我们有:
我们也可以使用斜率的自回归模型。即
其中, 是 将恢复到的长期斜率。这被称为半局部线性趋势(semilocal linear trend)模型,这种模型比较适用于长期预测。
在统计学界,将动力学记作 ,将观测结果记作 ,其中 和 。
添加协变量
我们可以很容易地将协变量 包含到模型中,以提高预测准确率。如果使用线性模型,则我们有
注意,在预测未来时,我们需要某种方法来预测未来的输入值 。一个简单的方法就是假设未来的输入与现在相同,即 。
对季节性进行建模
许多时间序列也表现出季节性(seasonality),即周期性波动。这可以通过创建一个由一系列周期项 组成的潜在过程来建模。为了对周期性进行建模,我们确保在 个步骤的完整周期内,这些项的总和(平均值)为零:
例如,对于 ,我们有 。我们可以通过将最后的 个季节叠加到状态向量中,将其转换为一阶模型。
将各种潜在过程结合起来
我们可以将各种潜在过程(局部水平、线性趋势和季节周期)组合成单个线性高斯状态空间模型,因为稀疏图结构可以由稀疏矩阵编码。更准确地说,转移模型变成:
定义了模型之后,我们可以使用卡尔曼滤波器来计算 ,然后通过在潜在空间中向前滚动来及时进行向前预测,然后预测输出:
这可以以闭合形式进行计算。
模型拟合
一旦指定了模型的形式,我们就需要学习模型参数 ,因为 和 固定在结构块指定的值上,并且 。常见的方法基于最大似然估计和贝叶斯推理。后一种方法被称为贝叶斯结构化时间序列(Bayesian Structural Time Series, BSTS)建模,通常使用以下共轭先验:
或者,如果存在大量协变量,我们可以对回归系数 使用稀疏性促进先验分布(例如,“尖峰”和“平板”分布)。
预测
一旦在历史数据集上估计了参数,我们就可以对新的时间序列进行推理,使用卡尔曼滤波器计算 。在给定当前后验的情况下,我们可以及时"向前滚动",通过计算 来预测未来 步之后的观测值。如果参数不确定,我们可以从后验 中进行采样,然后对预测进行蒙特卡罗平均。
时间序列干预的因果影响
我们讨论了在给定一些准实验(quasi-experimental)时间序列数据的情况下,如何估计干预的因果效应。(术语"准实验性"是指在干预下收集数据,但不使用随机分配。)例如,假设 是某家公司在时间 的网页点击率(Click Through Rate, CTR)。该公司在时间 发起广告活动,并观察干预前的结果 和干预后的结果 。(这是一个中断时间序列(interrupted time series)的例子,因为"自然"过程在某个时刻受到了干扰。)
一个自然的问题是:如果公司没有开展广告活动,网页点击率会是什么?这是一个反事实(counterfactual)的问题。如果我们可以预测这个反事实时间序列 ,那么我们就可以将实际值 与预测值 进行比较,并使用比较结果来估计干预的因果影响(causal impact)。
为了预测反事实结果,我们使用结构时间序列(STS)模型。结构时间序列模型是线性高斯状态空间模型,其中箭头根据时间箭头(arrow of time)具有自然的因果解释;因此结构时间序列是一种结构方程模型,同时也是一种结构因果模型。结构因果模型的使用使得我们能够在给定观测数据的情况下推理噪声变量的潜在状态;然后,我们可以将时间"回滚"到干预点,在那里,我们使用孪生网络方法进行反事实推理,通过在新版本的模型中"在时间上向前滚动",来探索一条与实际路径不同的"岔路"。
计算反事实预测
为了更详细地解释该方法,请考虑孪生网络。干预发生在时间 之后,总共有 个观察结果。我们观察干预前的两个数据点 和干预后的两个点 。我们假设观测是由随时间演变的潜在状态 产生的。这些状态受外生噪声项的影响,这些噪声项可以表示任何一组未建模的因素,例如经济状态。此外,我们还有外生协变量 。
考虑用于估计在时间步长 之后发生的干预的因果影响的孪生网络状态空间模型。我们有 个实际观测值,表示为 。由于我们假设 来自不同的分布(即干预后分布),因此我们将传入弧切割为 。然而,在图底部所示的反事实世界中(带有波浪符号),我们假设分布与过去相同,因此信息沿着链不间断地流动
为了预测如果我们没有进行干预(一个使用 表示的事件)会发生什么,我们复制干预后发生的模型部分,并使用模型进行预测。目标是计算反事实分布 ,其中 表示当动作为 时的反事实结果。我们可以按下式计算这种反事实分布:
其中,
对于线性高斯状态空间模型, 可以使用卡尔曼滤波计算,并且 可以使用马尔可夫链蒙特卡罗方法或变分推理计算。
我们可以使用来自上述后验预测分布的样本来计算每个时间步长的处理效果(treatment effect)分布的蒙特卡罗近似值 ,其中索引 指向后验样本。我们还可以使用 来近似累积因果影响的分布。(这些量中存在不确定性,既有关于控制模型真实参数的认识不确定性,也有由于系统和观测噪声引起的随机不确定性。
方法的有效性所需的假设
方法的有效性基于以下三个假设:
- 可预测性:我们假设在现有数据的情况下,我们的模型可以充分预测结果。我们可以通过使用回溯(backcasting)来检查可预测性,在回溯中,我们对部分历史数据进行预测。
- 无影响性:我们假设干预不会改变未来的协变量 。我们可以通过将每个协变量作为结果变量来运行该方法,从而验证无影响性。
- 稳定性:我们假设,如果没有进行干预,处理前阶段的结果模型将在处理后阶段继续适用。我们可以通过观察如果处理在时间上提前,是否可以预测效果来检查稳定性。
与综合控制的比较
使用其他"捐赠"(donor)时间序列 的线性组合本质上类似于合成控制(synthetic control)的概念。然而,我们并不局限于捐赠时间序列的凸组合。事实上,当我们有许多协变量时,我们可以使用"尖峰"和"平板"先验或马蹄先验来选择相关的协变量。此外,即使我们只观察结果序列 ,而没有任何其他平行时间序列,结构时间序列方法也可以应用。
Prophet
Prophet(先知)是 Facebook 上一个流行的时间序列预测库。该时间序列预测库拟合以下形式的广义加性模型:
其中, 是趋势函数, 为季节性波动(使用应用于正弦基集的线性回归建模), 为由稀疏"假日效应"组成的可选集合, 是由(可能滞后的)协变量组成的可选集, 为回归系数, 则为残差噪声项(假设为独立同分布的高斯分布)。
Prophet 是一个回归模型,而不是自回归模型,因为该模型在给定时间戳 和协变量 的情况下,预测时间序列 ,但不以过去对 的观测为条件。为了对时间的依赖性进行建模,假设趋势函数是具有 个变化点的分段线性趋势,这些变化点在时间上均匀分布。也就是说,该模型具有以下形式:
其中, 是增长率, 是偏移量,,其中 是第 个变化点的时间, 是变化的幅度, 使函数连续。 上的拉普拉斯先验确保了最大后验参数估计是稀疏的,因此跨变化点边界的差异通常为 0。
NO.40.tip: 随机变量的收敛
背景
概率论最重要的一方面就是关注随机变量序列的趋势,这部分内容称为大样本理论或极限理论或渐近理论。最基本的问题是:关于随机变量序列 的极限性质可以作何论断?因为统计与数据挖掘涉及大量数据,自然而然地,也会关心当收集到越来越多的数据时会发生什么样的情况。
在积分理论中,如果对任意 , 对充分大的 都成立,则称实数序列 收敛于极限 。在概率论中,极限的概念更加深奥,回忆积分理论中的介绍,假设对所有 有 ,则 。考虑该例子的概率模型,假设 为独立同分布随机序列,服从 分布,因为所有变量具有相同的分布,所以可以尝试着称 “收敛于” ,但这种描述并不十分精确,因为对所有 ,(两个连续随机变量相同的概率为 )。
还有另外一个例子,假设 ,从直觉上判断,当 很大时, 集中在 附近,所以很希望称 收敛于 ,但是对所有 ,。很明显,需要其他工具来讨论更严格意义下的随机变量的收敛。
- 大数定律说明样本均值 依概率收敛于期望 ,意味着 以很高的概率趋于 。
- 中心极限定理说明 依分布收敛于正态分布,意味着对很大的 ,样本均值渐进服从正态分布。
源与流
收敛的类型
两种主要的收敛类型定义如下:
定义 令 为随机变量序列, 为另一随机变量,令 表示 的 CDF, 表示 的 CDF。
如果对任意 ,当 时有 则称 依概率收敛于 ,记为 。
如果对 的所有连续的点 ,有 则称 依分布收敛于 ,记为 。
当求 服从点分布时,需要改变一下符号,如果 且 ,则记 ,类似地,如果 ,则记为 。
这里再介绍另外一种形式的收敛,这种收敛对证明概率中的收敛很有用。
定义 如果当 时有 则称 均方意义下收敛于 (也称 收敛),记为 。
同上面类似,如果 服从在 点的点分布,则用 代替 。
定理 如下关系成立:
(a) 意味着 。
(b) 意味着 。
(c) 如果 且对于实数 有 ,则 。
通常情况下,除特殊情况 (c) 外,反方向并不成立。
证明 从证明 (a) 开始,假设 成立,对固定 ,利用马尔可夫不等式
(b) 的证明。这部分证明有些复杂,读者可以跳过这一段。对固定 并令 为 的连续点,则
另外,
从而
对 取极限得
上式对所有 都成立,在上式中对 求极限并利用 在 处连续可得 。
(c) 的证明,对固定
下面来说明反向并不成立。
依概率收敛不能推出均方意义下收敛 令 ,,则 。因此,,但是对所有 有 ,所以 在均方意义下不收敛。
依分布收敛不能推出依概率收敛 令 ,,其中 ;因此,,即对所有 , 与 同分布,所以对所有 ,,也就是说,,但是 ,也即 不依概率收敛于 。
注意 有人也许认为如果 ,则 ,这是不正确的[^1]。令 为随机变量,定义为 且 ,则 ,因此 ,而 ,因此 。
某些收敛性质在变换规则下也成立。
定理 令 为随机变量, 为连续函数。
(a) 如果 且 ,则 ;
(b) 如果 且 ,则 ;
(c) 如果 且 ,则 ;
(d) 如果 且 ,则 ;
(e) 如果 且 ,则 ;
(f) 如果 则 ;
(g) 如果 则 ;
(c) 和 (e) 就是 Slutsky 理论, 且 通常都不能得出 。
大数定理
接下来讨论的议题可以称为是概率论中最伟大的成果,它就是大数定律。大数定律指出大量样本的均值近似于分布的均值,例如,无数次投掷硬币出现正面的概率趋近于 ,下面对该定理简要描述。
令 为 IID 样本,令 且 。回忆前面已经讨论过的内容:样本均值定义为 ,,。
定理(弱大数定律)(the weak law of large numbers (WLLN))如果 为 IID 样本,则 。
证明 假设 ,该假设并不是必需的,但有利于简化证明,利用切比雪夫不等式可得,
当 时,上式趋于 。
中心极限定理
大数定律指出 的分布会聚集在 附近,这还不能描述 的概率性质,为此,还需要中心极限定理。
假设 为均值为 方差为 的 IID 序列,中心极限定理(CLT)指出 近似服从均值为 方差为 的正态分布,这一结论是非常卓越的,因为除了 的分布的均值和方差需要存在的条件外,没有其他别的条件。
定理(中心极限定理 (CLT)) 令 为均值为 方差为 的 IID 序列,令 ,则 其中,,换句话说,下式成立:
含义:有关 概率陈述可以利用正态分布来近似,注意这仅仅是概率陈述上的近似,而并不是随机变量本身。
除了 外,还有其他几个符号可以表示 的分布收敛于正态分布,他们表达的含义本质上是一样的,具体形式如下:
中心极限定理说明 近似服从 ,然而,却得
,后面将介绍可以用 的函数
去估计 。这又产生了另外一个问题:如果用 去代替 ,中心极限定理还成立吗?答案是肯定的。
定理 假设跟 CLT 相同的条件,则
我们或许要问,正态近似的精度有多大呢?答案将在 Berry-Essèen 定理中给出。
定理(Berry-Essèen 定理) 假设 ,则
中心极限定理也存在多元的情形。
定理(多元中心极限定理) 令 为 IID 随机向量,其中,
其均值为
方差矩阵为 ,令
其中,,则
Delta方法
如果 的极限分布为正态分布,则 Delta 方法提供了求 极限分布的方法,其中 为任意光滑函数。
定理(Delta 方法) 假设 为可微函数满足 ,则 换言之,
例 令 为具有有限均值和有限方差的 IID 序列,根据中心极限定理,,令 ,即 ,其中,,因为 ,由 Delta 方法得 。
Delta 法也存在多元的形式。
定理(多元 Delta 方法) 假设 为随机向量序列满足
令 且
令 表示 在 处的值并假设 的元素均是非零的,则有
NO.41.tip: bootstrap方法
背景
令 为我们感兴趣的分布函数 的某一特征,表示为 的函数。比如, 是分布的期望。令 为观测数据,可认为它是随机变量 的实现。在本章中,我们用 表示 服从密度函数为 的分布,其对应的累积分布函数为 。令 表示整个数据集。
如果 是观测数据的经验分布函数,则 的一个估计为 。比如,当 是一元总体均值,则其估计就是样本均值,。
统计推断的问题通常是根据 或某个 提出来的,这里 是依赖于数据和它们的未知分布函数 的统计函数。举例来说,一个一般的检验统计量可以是 ,其中 为估计量 标准差的函数。
随机变量 的分布可能难以处理或根本就是未知的,该分布也可能依赖于未知分布 。Bootstrap 方法提供了关于 的分布的一种近似,其是由观测数据的经验分布函数(本身是 的估计)所导出的 。
令 表示一伪数据 bootstrap 样本,这里我们称其为伪数据集。 的元素是独立同分布于 的随机变量。Bootstrap 的策略就是考察 的分布,也就是在 中使用 所得到的随机变量。在某些特殊情况下,我们有可能通过解析方法推导或估计
例(简单描述) 假设有 个一元数据点,也就是 ,是从均值为 的分布 中观测到的独立同分布样本。在每个观测点, 给予其 的密度。假设我们想要 bootstrap 的估计是样本均值 ,也就是可以写成 或者 ,其中 不依赖于 。
令 为从 中抽取出的独立同分布的元素,对于 总共有 种可能结果。令 表示这个样本的经验分布函数,其相应的估计为 。因为 不依赖于数据的顺序,则总共只有 10 种不同的结果。下表列出了这些结果。
表 9.1 由 所可能得到的 bootstrap 伪数据集(忽略顺序),相应的 ,在 bootstrap 实验中每一种结果的概率 ,以及 1000 次 bootstrap 迭代所观测到的相对频率
| 观测频率 | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | |||
| 1 | 1 | 2 | |||
| 1 | 2 | 2 | |||
| 2 | 2 | 2 | |||
| 1 | 1 | 6 | |||
| 1 | 2 | 6 | |||
| 2 | 2 | 6 | |||
| 1 | 6 | 6 | |||
| 2 | 6 | 6 | |||
| 6 | 6 | 6 |
在上表中, 表示以原始观测为条件抽取 的 bootstrap 实验中 的概率分布。为与 区分,当涉及到该条件概率或矩的时候,我们用星号来表示,如 。
Bootstrap 的基本原则就是视 和 是等同的。在这个例子中,这就意味着我们基于 的分布来进行推断,该分布归纳在上表的列 和 中。所以,举例来说,利用 的分布的分位数,我们可以得到对于 的一简单 bootstrap (大约 93%)置信区间为 。点估计仍然通过原始观测数据来获得,即 。
源与流
非参数bootstrap
通常对于一个实际问题的样本容量,可能的 bootstrap 伪数据集的个数是非常大的,所以完全列举这些概率是不现实的。作为替代,我们可从观测数据的经验分布函数即 中随机抽取 个独立的 bootstrap 伪数据集,将他们定义为 。 的经验分布函数可用于近似 的分布并进行推断。这样避免了完全列举 bootstrap 伪数据,却产生了模拟误差,但我们可通过增大 使这个误差任意地小。Bootstrap 使得我们的分析和推断不需要进行参数假设,它为那些不大可能得到解析方案的问题提供了解决方法,并且可以给出比应用传统标准参数理论所得到的结果更加精确的回答。
例 9.2(简单描述,续) 我们继续研究例中的数据,在那个例子中观测数据的经验分布函数 在 1, 2, 和 6 上分别置予 的密度。非参数 bootstrap 通过从 中独立同分布地抽取 和 来构成 。换言之就是从 中等概率可放回地抽取 。然后每一个 bootstrap 伪数据集 观测得到的 可能值的相对频率。这些相对频率可用于近似 ,反过来 bootstrap 思想说明我们可用 来近似 的抽样分布。
对于这个简单描述中的问题,所有可能的 bootstrap 伪数据集空间可以完全地列举出来,因此 可通过推导精确地给出。因此,对于该问题我们可以不使用模拟方法。然而,在实际的应用中,样本容量可能太大以至于不可能完全列举出 bootstrap 的样本空间。因此,在真实的应用问题中,通常只有一小部分伪数据集会被抽取到,得到的只是对于估计量可能值的一个子集。
对于 bootstrap 方法的一个基本要求是被重抽样的数据本身是一个独立同分布的样本。如果样本不是独立同分布的, 对于 的分布近似则不再成立。
参数化bootstrap
前面所描述的典型的非参数 bootstrap 方法是从 中抽取独立同分布的 来生成伪数据集 。当数据可以被模型化或者本身就是来自于一参数分布的时候,即 ,我们可采用 的另一种估计。假设观测数据是用来获得 以估计 ,则我们可通过抽取 来生成参数化 bootstrap 伪数据集 。当模型已知或者可以很好地表示真实情况的时候,参数化 bootstrap 将会成为一个强有力的工具,它能够对那些难以处理的问题给出推断,并且其产生的置信区间会比用标准极限理论所得到的精确很多。
然而,在这些情形下,到底 bootstrap 基于什么模型实现往往是事后决定的。举例来说,一确定性的生物学种群模型,基于生物学参数以及初始种群大小,可以预测种群数量随时间的变化。假设我们在不同的时间点上用不同的方法获取动物的数量,我们可用观测到的数量与模型预测的数量进行比较,从而判断模型参数是否产生良好的拟合效果。之后我们可以再建立第二个模型,认为观测值是来自于对数正态分布,其期望等于由生物学模型所得到的预测值,并且方差是预先决定的一系数。这样就形成了一个参数和数据之间方便的联系——如果可以说近似地说明有效。我们通过从对数正态分布抽取 bootstrap 伪数据来对第二个模型使用参数化 bootstrap 方法。在这种情况下,观测数据的抽样分布很难被认为是服从对数正态模型的。
只有在迫不得已的情形下才使用这样的依赖于自组织误差模型的方法进行分析。使用方便但不适当的模型经常是相当诱人的。如果模型不能够很好地拟合数据的生成机制,参数化 bootstrap 方法就会得到错误的推断结果。然而,在没有其他合适的推断方法可用的场合下,我们也可一试。
bootstrapping回归
考虑如下典型多重回归模型,,其中假设 是均值为零、方差为常数的独立同分布随机变量,这里, 和 分别是 维的预测值和参数。一种简单的但错误的 bootstrap 方法描述如下:我们从响应值集合中重抽样来构成一个新的伪数据集,也就是对于每一个观测值 对应一个伪数据 ,从而可得到一个新的回归数据集。然后可以由这些伪数据来计算 bootstrap 参数向量估计 。重复重抽样和估计的步骤进行很多次后, 的经验分布可用于推断 。这样做之所以错误的原因是 不是独立同分布的——它们具有不同的条件均值。因此,用这种方法生成 bootstrap 回归数据集是不恰当的。
为了确定一个正确的 bootstrap 方法,我们必须要找到合适的独立同分布的变量。上述模型中的 是独立同分布的。因此,更恰当的策略是如下所描述的 bootstrap 残差法。
我们先由观测数据拟合回归模型,然后获得响应 和残差 。从拟合残差集合中有放回随机抽取得到 bootstrap 残差集合 (注意实际上 不是独立的,尽管通常来说它们近似独立),生成一个伪响应 bootstrap 集合,。拟合 对 的回归方程从而获得 bootstrap 参数估计 。重复多次该过程可得到 的经验分布函数,然后我们用它进行推断。
对于设计好的实验或者 值是预先固定的数据,这种方法是最适合的。对于其他模型,如自回归模型、非参数回归和广义线性模型的简单 bootstrap 方法,其核心都是 bootstrap 残差的策略。
Bootstrap 残差依赖于选定模型对观测数据适当的拟合,以及残差具有常数方差的假设。如果我们对这些条件的成立没有足够信心的话,则可能需要其他的 bootstrap 方法。
假设数据是从观察研究中得到的,其中响应变量和预测量都是从一群个体中随机选出并测量得到的。在这种情形下,我们可将数据对 视作是从响应–预测变量联合分布中得到的随机变量 的观测值。为了完成 bootstrap,随机有放回地从观测数据 中抽取样本 。对所得到的伪随机数据集拟合回归模型以获得 bootstrap 参数估计 。多次重复这些步骤,然后如第一种方法中介绍的进行推断。这种情形的 bootstrap 方法有时也被称作成对 bootstrap。
如果对回归模型的适当性、残差方差的稳定性,或者其他回归假设有疑问的话,成对 bootstrap 对不满足这些假设的情形要比 bootstrap 残差方法更加稳健。在预测变量不是固定的情形下,成对 bootstrap 更加直接地匹配了原始数据的生成机制。
NO.42.tip: 经典决策树算法
背景
决策树是一种流行而强大的机器学习算法。它是一种非参数化的有监督学习方法,可用于分类和回归任务。它通过学习样本数据集创建一个模型,获得一些决策规则来预测目标变量的值。对于分类模型来说,目标值在本质上是离散的;而对于回归模型来说,目标值由连续值表示。与人工神经网络等算法不同,决策树相对来说更容易理解和解释,因为它共享内部决策逻辑。尽管许多数据科学家认为这是一个老方法,而且由于过拟合问题,他们可能对其准确性有一些怀疑,但最近的基于树的模型,特别是随机森林、梯度提升和 XGBoost 等建立在决策树算法之上的机器学习模型获得了巨大的成功,使古老的决策树模型焕发新春!因此,决策树背后的概念和算法是非常值得了解的。本章首先介绍一些经典的决策树算法,包括 CART、ID3 和 C4.5 算法。
经典决策树应用的一般流程
经典决策树算法诞生在 20 世纪 90 年代之前,那时网络环境还不发达,所处理的样本数据集主要是小规模数据,特征数并不多,因此数据的特征工程并不必要。当时的主要任务是处理一些特征数据的缺失,针对分类数据和连续数据进行区别化处理以及相互转换,包括连续数据的离散化等。
获得规整的样本数据集之后,就需要利用各类决策树算法进行决策树模型的构建。决策树算法的差异主要体现在:
- 选择特征属性的策略;
- 选择属性分割点策略;
- 不同类型特征属性的处理方法;
- 如何终止决策树的构建过程;
- 如何优化模型以避免过拟合;
- 如何降低决策树模型的复杂度等方面。
获得决策树模型之后,接下来要利用这些模型对未知样本数据进行推理和预测。在这个过程中,为降低模型复杂度或提高模型泛化能力,需要进行剪枝优化等处理。
源与流
CART算法
CART(Classification And Regression Trees)即分类和回归树,是第一种比较经典的决策树算法,由 Leo Breiman、Jerome Friedman、Richard Olshen 和 Charles Stone 于 1984 年正式提出,可用于分类或回归预测建模问题。
CART 算法总是创建一棵二元树(二叉树),这意味着每个非终端节点有两个子节点。CART 的构建过程与人类的决策方式非常相似,因此,人们很容易理解和接受 CART 决策过程得出的结果。这种直观的可解释能力是 CART 以及决策树方法非常重要的一个原因。CART 另一个非常吸引人的地方是,它允许多样化的输入数据类型,这与许多线性组合方法(如逻辑回归或支持向量机)不同。可以混合连续数值变量,如价格或面积,也可以混合标称分类或枚举变量,如房屋类型或位置。这种灵活性使得 CART 成为各种应用中的首选工具。CART 使用代价复杂度剪枝(Cost Complexness Pruning,CCP)方法,将不可靠的分支从决策树移除,以提高准确率。
从 CART 算法的名字中可以看出,它支持构建分类(决策)树和回归(决策)树。所谓分类树,是指目标变量是标称分类或枚举值数据类型,用于确定目标变量可能属于的“类别”。所谓回归树,是指目标变量是连续的数值数据类型,用来预测目标变量的值。
基尼不纯度、基尼增益与基尼指数
训练决策树模型包括迭代地将当前数据分成两个分支。如何分割以及如何定量评估分割的优劣是待解决的核心问题。
因此,更高的基尼增益等价于更好的分割,更低的基尼指数等价于更好的分割。例如,很容易验证,在上述数据集中:
这就是 CART 决策树中用来挑选最佳分割的度量。例如,很低的数据集。完美分割的基尼增益为 0.5 而基尼指数为 0.333 而基尼指数选取最佳分割。
CART 分类决策树的原理
CART 分类决策树的算法流程
-
输入
输入为训练数据集 和停止计算的条件。其中,训练数据集 包含多条记录,每个记录由多个属性构成。每个属性的数据类型均为离散的,例如二值类型、标称值或枚举值类型等。停止计算的条件可以是节点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值,或没有更多特征属性等。 -
输出
输出为 CART 分类树。 -
CART 分类决策树的生成流程
CART 算法从根节点开始,用训练集递归地建立 CART 分类决策树。- 设训练数据集为 ,计算数据集现有的所有属性特征对该训练集的基尼增益。对每一个属性特征 ,对其所有可能取值的每个值 ,根据 中的样本实例对 的测试为“是”或“否”,将数据集 分割成 和 两个子集。利用基尼增益公式计算 时的基尼增益。
- 假设有 个属性特征,对于每一个属性特征 ,可能取值数量为 ,则总共需要计算的基尼指数次数为
- 在所有可能的属性特征 以及它们所有可能的切分点 中,选择基尼增益最大的特征 及其对应的切分点作为最优切分点,依据该最优切分点切割,生成两个子节点,左子节点为 ,右子节点为 。
- 对两个子节点递归调用步骤 1~2,直至满足停止条件。
- 生成一棵完整的二叉 CART 分类决策树。
-
CART 分类决策树的优化
使用决策树模型拟合数据时容易产生过拟合,解决办法是对决策树进行剪枝处理。剪枝有两种思路:预剪枝(pre-pruning)和后剪枝(post-pruning)。 -
CART 分类决策树模型的使用 决策树算法是一种通过对历史样本数据进行测算实现对新数据的分类和预测的算法。整个决策过程从根节点开始,从上到下进行,根据数据的分类在每个决策节点给出不同的结果。使用决策树的过程和人眼比对的过程类似:先比对根节点,根据比对结果走向决策树的不同子节点;再再子节点处进行比对,直到比对到叶子节点,即得到结果。对生成的CART分类决策树做预测的时候,如果测试集里的某个样本A落到了某个叶子节点,且该叶子节点里存在多个类别的训练样本,则概率最大的训练样本是样本A的类别。
决策树回归
决策树回归(regression tree),顾名思义,就是用树模型做回归问题,每一个叶子节点都输出一个预测值。预测值一般是该叶子节点所含训练集样本的输出的均值。决策树也可以应用于回归。
回归树中,CART 使用均方误差或者平均绝对误差作为选择特征及其分割点的依据。在回归问题中,CART 使用均方误差或者平均绝对误差作为选择特征及其分割点的依据;在回归问题中,CART 使用均方误差或者平均绝对误差作为选择特征及其分割点的依据;CART 算法是第一个同时支持分类和回归的决策树算法。在分类问题中,CART 使用基尼指数或基尼增益作为选择特征及其分割点的依据;在回归问题中,CART 使用均方误差或者平均绝对误差作为选择特征及其分割点的依据。
除了 CART 算法外,随机森林、GBDT、XGBoost、LightGBM 等都支持对回归问题的处理。与构建决策树类似,构建回归树时需要考虑的问题是,选择哪一个属性对当前的数据集进行划分。与分类决策树不一样的地方在于,需要预测的属性是连续的,因而在叶子节点选择什么样的预测模型也很关键。
CART 回归决策树的特征和分割点选择准则
CART 分类树采用基尼指数最小化准则或基尼增益最大化原则,而 CART 回归树采用均方误差(Mean Squared Error,MSE 或 L2)最小化准则作为特征和分割点的选择方法。
事实上,对于回归树来说,常见的三种不纯度测量方法是:最小二乘法、中位数为 median()〕。
- 均方误差最小化方法,即最小二乘法。这种方法类似于线性模型中的最小二乘法。分割的选择是为了最小化每个节点中观测值和平均值之间的误差平方和。该方法将节点的预测值设置为 。
- 最小平均绝对误差(Mean Absolute Error,MAE 或 L1)。这种方法最小化一个节点内平均数与中位数的绝对偏差。与最小二乘法相比,它的优点是对离群值不那么敏感,并提供一个更稳健的模型。缺点是在处理包含大量零值的数据集时不敏感。该方法将节点的预测值设置为 median()。
- 最小半泊松偏差(half Poisson deviance)。该方法将节点的预测值设置为 。
CART 回归决策树的原理
CART 回归树和 CART 分类树最大的区别在于输出:如果输出的是离散值,则它是一棵分类树;如果输出的是连续值,则它是一棵回归树。
对于回归树,每一个节点都可以被认为是一个回归值。一个节点有回归值,也有分割选择的属性。最底层的节点回归值可能才是最理想的回归值。这样给定一组特征,就知道最终怎么去回归以及回归得到的值是多少了。
在本章中,介绍 CART 回归决策树时,使用最小二乘法。直觉上,回归树构建过程中,分割是为了最小化每个节点中样本实际观测值和平均值之间的残差平方和。
给定一个数据集 ,其中 是一个 维的向量,即 含有 个特征,记为变量 ,是自变量,每个特征记为 , 是因变量。回归问题的目标就是构造一个函数 以拟合数据集 中的样本,使得该函数的预测值与样本因变量实际值的均方误差最小,即
用 CART 进行回归,目标也是一样的,即最小化均方误差。假设一棵构建好的 CART 回归树有 个叶子节点,这意味着 CART 将 维输入空间 划分成了 个单元 ,同时意味着 CART 至多会有 个不同的预测值。CART 最小化均方误差公式如下:
其中, 表示第 个叶子节点的预测值。
想要最小化 CART 回归树总体的均方误差,只需要最小化每一个叶子节点的均方误差即可,而最小化一个叶子节点的均方误差,只需要将预测值设定为叶子中含有的训练集元素的均值,即
所以,在每一次分割时,需要选择分割特征变量(splitting variable)和分割点(splitting point),使得模型在训练集上的均方误差最小。
这里采用启发式的方法,遍历所有的分割特征变量和分割点,然后选出叶子节点均方误差之和最小的那种情况作为划分。选择第 个特征变量 和它的取值 ,作为分割变量和分割点,则分割变量和分割点将父节点的输入空间一分为二:
CART 选择分割特征变量 和分割点 的公式如下:
采取遍历的方式,我们可以求出 和 。先任意选择一个特征变量 ,再选出在该特征下的最佳划分 ;对每一个特征变量都这样做,得到 个特征的最佳分割点,从这 个值中取最小值即可得到令全局最优的 。上式中,第一项 得到的 值就是 ,同理,第二项中 。根据这个 就可以创建一个节点,然后形成两个子区间。之后分别对这两个子区间继续上述过程,就可以继续创建回归树的节点,直到满足结束条件才停止对区间的划分。
最小二乘回归树生成算法的主要思路为在训练数据集所在的输入空间中,递归地将每个区域划分为两个子区域并决定两个子区域上的输出值,构建二叉决策树。其输入为训练数据集 ,输出为回归树 。具体的算法流程如下:
- 选择最优切分变量 与切分点 ,求解式 (8)。遍历变量 ,对固定的切分变量 扫描切分点 ,选择使式 (8) 达到最小值的对 。
- 用选定的对 划分区域并决定相应的输出值。
- 继续对两个子区域调用步骤 1 和 2 直至满足停止条件。
- 将输入空间划分为 个区域 ,生成决策树:
其中
ID3算法
在决策树学习中,ID3(Iterative Dichotomiser 3)是由 Ross Quinlan 发明的一种算法,以 Hunt 算法为基础,用于从数据集生成决策树。ID3 是 C4.5 算法的前身。ID3 算法只能处理特征属性均为离散数据类型的数据集且不支持剪枝。
ID3 算法以原始集合 为根节点。在算法的每次迭代中,根据集合 的每一个未使用的特征属性进行遍历,根据该属性的所有取值,计算按该属性分割后的熵 或信息增益 。然后,从中选择熵值最小(或信息增益最大)的属性。之后,根据该属性的所有取值对集合 进行分割,以产生数据的子集。需要指出的是,ID3 算法生成的树可能是多元树,即一个节点的子节点可能会多于两个,具体数量依赖于该节点所对应的属性的所有可能的取值。该算法继续对每个子集进行递归,只考虑以前从未选择过的属性,因为此时每个子集中,已经选择过的属性的数据都是纯的。
ID3 算法与 CART 算法的不同之处主要表现在:
- ID3 只能处理特征属性为离散数据类型的数据集;
- ID3 不支持剪枝;
- ID3 生成的树是一个多元树,集合 按照属性 进行分割后,子集的数量(子节点的数量)与属性 的取值有关。所有属性 的取值都是分割点,因此,每个子集里的样本数据的属性 的取值都是相同的。因此,针对子集的后续分割将不再考虑已经选择过的属性。
- 选择特征属性依据信息熵和信息增益。
ID3 算法主要用于分类决策树。ID3 不保证最优解,它可能收敛于局部最优解。它采用贪心的策略,在每次迭代中选择局部最佳属性来分割数据集。在搜索最优决策树的过程中,可以通过使用回溯来提高算法的效率,但代价是可能需要更长的时间。
ID3 对训练数据可能会出现过拟合。为了避免过拟合,应该优先选择较小的决策树,而不是较大的决策树。ID3 在连续数据上比在离散数据上更难使用。如果任何一个给定属性的值是连续的,那么在这个属性上有更多的地方可以拆分数据,寻找最佳的拆分值会很耗时。
信息熵与信息增益
在信息论中,随机变量的熵是指该变量的可能结果中固有的“信息”或“不确定性”的平均水平。信息熵的概念是由克劳德·香农(Claude Shannon)在 1948 年发表的论文《通信的数学理论》中提出的,为了纪念他,有时也称为香农熵。熵衡量的是数据集 的不确定性的水平。信息熵的概念是由克劳德·香农(Claude Shannon)提出的。
给定一个离散随机变量 和样本数据集合 , 有 个取值,可能的取值为 ,各自发生的概率分别为 ,则 的熵正式定义为:
在信息理论和机器学习中,信息增益是 KL 散度(Kullback-Leibler divergence)的同义词,即一个变量的单变量概率分布与这个变量基于给定的另一个变量的条件分布的 KL 散度的条件期望值。然而,在决策树的上下文中,它与互信息(mutual information)同义,即一个随机变量或信号的信息量。
对于离散随机变量 和样本数据集合 ,给定另一个随机变量 ,它代表样本数据集合 的另一个属性,它的取值可能是 ,这样根据随机变量 的取值,样本集合 被划分为 个子集合
由此得到的信息增益由如下公式计算:
其中 是给定取值 时 的条件熵:
C4.5 算法
C4.5 是由 Ross Quinlan 开发的,是对他的早期的 ID3 算法的扩展。C4.5 生成的也是分类决策树。2011 年,Weka 机器学习软件的作者将 C4.5 算法描述为“一个具有里程碑意义的决策树程序,可能是迄今为止在实践中应用最广泛的机器学习主力算法”。C4.5 算法在 2008 年的论文《数据挖掘十大算法》(Springer LNCS)中排名第一。
C4.5 是 ID3 的继承者,相对于 ID3 算法,C4.5 算法的改进主要有:
- 增加了对连续特征属性的处理,通过排序连续属性值并挑选阈值,将连续特征属性划分为高于阈值的属性和小于或等于阈值的属性;
- 增加了对属性值缺失的训练数据的处理;
- 挑选特征属性依据信息增益率,而不是信息增益;
- 创建树后进行修剪,试图通过用叶子节点进行替换来删除那些没有帮助的分支。
信息增益率
使用信息增益其实有一个缺点,那就是它偏向于具有大量取值的特征属性。也就是说在训练集中,如果某个特征属性所取的不同值的个数越多,那么越有可能拿它作为分割属性。
例如一个训练集 中有 10 个样本,某一个特征属性 分别取 1~10 这十个数,如果用 进行分割将会分成 10 个子集合,那么对于每一个类,根据如下的信息增益公式:
由于 ,,因此,,该属性划分所得到的信息增益最大,但是很显然,这种划分没有意义。极端的情况下,如果特征属性 是连续值,也会出现类似情况。因此,选择信息增益最大的属性作为分割点,存在明显的不足。正是基于此,C4.5 采用了信息增益率这样一个概念。
对于离散随机变量 和样本数据集合 ,给定另一个随机变量 ,它代表样本数据集合 的另一个属性,它的取值可能是 ,这样根据随机变量 的取值,样本集合 被划分为 个子集合 ,。其中,
则信息增益率定义如下:
采用信息增益率替代信息增益来寻找最优分割特征。信息增益率的定义是信息增益 和特征熵 的比值。对于特征熵,特征的取值越多,特征熵就倾向于越大。
连续属性的处理
对于连续值的问题,需要将连续值离散化。在这里只做二类划分,即将连续值划分到两个区间,分割点取两个临近值之间的任意值。给定样本集 和连续属性 ,假定 在 上出现了 个不同的取值,将这些值从小到大排序,记为 。 和 是相邻的取值,则 在区间 中取任意值所产生的划分结果相同,通常取 。因此,对连续属性 ,我们可考察包含 个候选分割点的集合。然后就可以像离散属性那样来考察这些分割点,选取最优的分割点进行样本集合的划分。
当决策树的节点数量比较多、连续型属性数量比较多、连续型属性中任一属性取值又比较多时,算法的计算量是相当大的,这将会在很大程度上影响决策树的生成效率。这是 C4.5 算法的缺点。
缺失值的处理
对于缺失值的问题,我们需要解决三个问题:第一是在有缺失值的情况下如何选择划分的属性,也就是如何得到一个合适的信息增益率;第二是选定划分属性后,如何处理该属性缺失特征的样本;第三是决策树构造完成后,如果测试样本的某些属性值出现缺失,该如何确定该测试样本的类别。Ross Quinlan 在 C4.5: Programs for Machine Learning 中提供了解决方案。
选择特征属性时
在 C4.5 算法中,选择信息增益率最大的属性作为最优的划分属性。当样本存在属性值缺失时,这些样本不会产生任何信息增益。因此,当计算该属性的信息增益时,其信息增益等于无缺失值样本所占的比例乘以无缺失值样本子集的信息增益。具体定义如下:
其中 表示无缺失值样本所占的比例, 表示原数据集, 表示不含缺失值的数据子集。
我们以天气与打网球的数据集为例来具体讲述缺失值属性的信息增益的计算过程,如表所示。
表 存在缺失值的天气数据
| 实例 (instance) | 天气 (Outlook) x1 | 温度 (Temperature) x2 | 湿度 (Humidity) x3 | 风力 (Wind) x4 | 是否打网球 (PlayTennis) y |
|---|---|---|---|---|---|
| s(1) | — | 热(Hot) | 高(High) | 弱(Weak) | 不打网球(No) |
| s(2) | 晴朗(Sunny) | 热(Hot) | — | 强(Strong) | 不打网球(No) |
| s(3) | 阴天(Overcast) | 热(Hot) | 高(High) | 弱(Weak) | 打网球(Yes) |
| s(4) | 下雨(Rain) | 温和(Mild) | 高(High) | — | 打网球(Yes) |
| s(5) | 下雨(Rain) | — | 正常(Normal) | 弱(Weak) | 打网球(Yes) |
| s(6) | 下雨(Rain) | 凉爽(Cool) | 正常(Normal) | 强(Strong) | 不打网球(No) |
- 天气 = ?
- 晴朗:1,2,7,8,9,10,11,
- 阴天:1,3,7,10,12,13,
- 下雨:1,4,5,6,7,10,14,
策树的构造。与以上第一步计算的不同之处有以下两点:
- 在计算样本中的正负样本比例时,未缺失的样本为 1,缺失值的样本为 。
- 在计算某类样本所占比例时,每个未缺失样本数量为 1,每个缺失值样本数量为 。
由此我们可以继续向下选择划分属性,构造出最终的决策树。
待预测样本出现缺失值的处理
利用决策树进行预测时,如果遇到测试特征属性 的节点,而对于该预测样本,其特征属性 出现缺失,那么所有的可能性都会被探讨。因此,对于每个可能的子节点都要进行预测。我们保留每个子节点的分布,并将其加入。最后,选择用于预测的类是具有最大概率值的类。
我们将具有“天气”属性缺失值的测试样本 代入决策树节点中进行测试。其中,子节点中的灰色数字代表预测为正类的样本,黑色数字代表预测为负类的样本。在将 加入各个子节点后,统计其概率分布,依次为 、、,因此标记“阴天”的分支连接的子节点概率最大,故 应该路由到“阴天”分支对应的子节点。
以上即为 C4.5 中对缺失值的完整处理过程。
决策树的评估
决策树作为一种有监督的无参数机器学习算法,有着与一般机器学习应用一样的流程和评价指标,这里做一些必要的介绍。
决策树模型被构建出来之后,需要建立对应的评估方法来衡量决策树模型的优劣。一般来说,决策树算法将数据集分为两部分:训练集用来建立模型,测试集用来评估模型。
对于二分类问题,我们可以将样本分为正样本(positive)和负样本(negative)两大类。同时,引入 TP、TN、FP、FN 四个计算指标来进行模型评估指标的计算。这四个计算指标中,第一个字母代表模型判断结果是否正确(T 为正确,F 为错误),第二个字母代表模型判断的结果(P 代表正类,N 代表负类)。那么,它们的概念可以归纳如下:
- TP:模型判断的结果正确,且样本为正样本的数量;
- TN:模型判断的结果正确,且样本为负样本的数量;
- FP:模型判断的结果错误,且样本为负样本的数量;
- FN:模型预测的结果错误,且样本为正样本的数量。
接下来,我们介绍混淆矩阵(confusion matrix)的概念。混淆矩阵是用来进行模型评估的一种规范格式,其形式为 大小的矩阵。它的每个元素(第 行第 列)代表第 列对应的真实类别被预测为第 行对应的预测类别的样本数量。二分类模型对应的混淆矩阵如表所示。
表 混淆矩阵
| 真实类别 \ 预测类别 | 预测为正类 | 预测为负类 |
|---|---|---|
| 真实为正类 | TP | FN |
| 真实为负类 | FP | TN |
建立在二分类混淆矩阵的基础上。
- 准确率(accuracy):模型所有预测正确的样本数占总样本数量的比重。公式表示为:
- 精确度(precision):模型所有正确预测为正类的样本占所有预测为正类样本数量的比重。公式表示为:
- 召回率(recall):模型所有正确预测为正类的样本占所有真实为正类样本数量的比重。公式表示为:
对于准确率指标,它的值代表了总的预测正确率,但它对于样本分布不均衡的情况却并不能体现出效果。举个例子,数据集中含有 95% 的正类样本,5% 的负类样本,我们将所有样本预测为正类样本,也可以得到 95% 的准确率。此时,准确率就失去了意义,需要考虑其他更合适的评估指标。对于精确度指标,它解决了总体数据不均衡造成的问题。精确度代表同一类别中预测正确的数量占预测为该类别的比重,体现了各类别的预测精度。对于召回率,它的计算主要是针对原数据集中各类样本而言的。同时,召回率与精确度互相影响:一般召回率高,精确度越低;精确度高,召回率就会低。在实践中,我们可以通过观察它们的分布情况尽量同时得到较高的精确度和召回率。
NO.43.tip: 决策树剪枝
背景
剪枝是机器学习和搜索算法中的一种数据压缩技术,通过去除树上非关键和冗余的部分来减少决策树的复杂度。剪枝降低了最终分类器的复杂度,通过减少过拟合来提高预测精度。
采用严格的停止标准往往会产生对训练集过拟合的大决策树。采用宽松的停止标准往往会产生小的、拟合度不足的决策树。为了解决这一难题,Breiman 等人在 1984 年开发了一种允许决策树对训练集过拟合的过程,然后通过删除对泛化精度无贡献的子分支,将过拟合的树剪成一棵较小的树。多种研究中已经表明,剪枝方法可以提高决策树的泛化性能。
剪枝的另一个关键动机是 Bratko 和 Bohanec 提出的“用准确性换取简单性”。当目标是产生一个足够准确、紧凑的概念描述时,剪枝是非常有用的。因为在这个过程中,初始决策树被看作一个完全准确的决策树,所以修剪后的决策树的准确性表明了它与初始树的接近程度。剪枝应该减少树的大小,且不降低交叉验证集所测量的预测精度。有多种剪枝技术,它们在优化决策树性能方面有所不同。大多数剪枝技术对节点进行自上而下或自下而上的遍历。如果剪枝操作提高了某个标准,那么某个节点就会被修剪。
Breiman 和 Gelfand 等人认为剪枝算法在决策树的建立中处于最重要的位置。1984 年,Breiman 在 CART 决策树中使用代价复杂度剪枝(Cost-Complexity Pruning,CCP)方法,该方法将目标函数加入复杂度的衡量标准,然而其复杂度过高。随后,1986 年,Quinlan 提出错误率降低剪枝(Reduced Error Pruning,REP)和悲观错误剪枝(Pessimistic Error Pruning,PEP)算法。REP 和 PEP 算法是自下而上进行的,它基于训练数据的误差评估,因此不用单独找剪枝数据集,但训练数据也会使错分误差偏向于训练集,因此需要加入修正值 。同年,Niblett 和 Bratko I. 提出最小错误剪枝(Minimum Error Pruning,MEP)算法,MEP 算法是自下而上进行的,它与 PEP 方法相近,但是对类的计数处理是不同的。然而,这些剪枝算法并不能解决决策树中的生成规则。规则可以提供强大的生成规则。规则可以提供高度非线性函数,2008 年提出的 RuleFit 的算法就是从树木中提取规则。随着系数学习和优化算法的发展,2017 年,决策树的各种决策树剪枝算法的成熟,2016 年 Jonathan 等人提出了一种最优剪枝方法,从一系列剪枝方法进行剪枝后得到的树的集合里,找出最优剪枝的决策树。
剪枝过程大致可以分为两种类型:
- 预剪枝(pre-pruning):通过替换决策树生成算法中的停止准则(例如,最大树深度或信息增益大于某一阈值)来实现树的简化。预剪枝方法被认为是更高效的方法,因为它们不会反映整个数据集,而是从一开始就保持小树。预剪枝方法有一个共同的问题,即视界限制效应。一般不希望停止准则过早终止诱导。
- 后剪枝(post-pruning):是简化树的常见方法,用叶子代替中间节点和子树以提高复杂度。后剪枝不仅可以显著减小树的大小,还可以提高未见过的样本数据的分类精度。可能会出现在测试集上的预测准确率变差的问题,但树的分类准确率总体上会提高。
源与流
代价复杂度剪枝
CCP 算法的基本原理
代价复杂度剪枝方法在 1984 年 Breiman 的经典 CART 算法中首次提到并使用,是一种后剪枝方法。
假设对于一棵 CART 决策树, 是决策树误差(代价), 是一个返回树 的叶子集合的函数。 是一个正则化参数,表示两者的平衡系数,其值越大,树越小,反之树越大。
一棵树的好坏用下式衡量:
其中, 表示每个叶子节点所产生的错误分类的误差之和。, 表示叶子节点 所处理的样本记录数, 表示总的样本记录数。 表示误分类比例。
对一棵子树 进行剪枝的过程如图 3.1 所示。对于待剪枝的决策树 ,将一棵以节点 为根节点的子树 替换为一个叶子节点,得到子树 ,那么 就是剪枝节点为子树 替换为一个叶子节点,得到子树 降低决策树复杂度的同时带来的代价变化。
从式(1)和式(2)可以得出:
令 ,则
也就是说,如果误差增加, 也随之增加。
CCP 算法的完整流程如下。
假设 ,CART 算法构建的原始决策树为 且已经使 最小化。
- 初始化。
- 步骤 1:从决策树 选择分支节点 ,将以分支节点 为根节点的子树替换为叶子节点之后的决策树记为 ,通过评估子树 和决策树 的误差,选择使下式最小化的分支节点 :
- 步骤 2:假设选出的分支节点为 ,那么 ,新得到的决策树为 。
- 步骤 3:从决策树 选择分支节点 ,将以分支节点 为根节点的子树替换为叶子节点之后的决策树记为 ,最小化下式:
这样,每一个步骤都会生成一个剪枝后的决策树和对应的 值。即一系列的决策树 ,且有 。一系列的 值,且有 。
错误率降低剪枝
REP 算法的基本原理
错误率降低剪枝法属于后剪枝算法,由 Quinlan 提出,是一种简单的剪枝方法。
在该方法中,可用的数据被分成两个样例集合:一个训练集用来形成学习到的决策树,一个分离的验证集用来评估这个决策树在后续数据上的精度,确切地说是用来评估修剪决策树的效果。这种方法的动机是:即使学习器可能会被训练集中的随机错误和巧合规律所误导,但验证集不大可能表现出同样的随机波动,所以验证集可以用来对过拟合训练集中的虚假特征提供防护检验。
其思路是自底向上,从已经构建好的完全决策树中找出一个子树,然后用子树的根节点代替这棵子树,作为新的叶子节点。叶子节点所表示的类别通过大多数原则确定,这样就构建出一个简化版决策树。然后使用交叉验证数据集来测试简化版本的决策树,看其错误率是不是降低了。如果错误率降低了,则可以用这个简化版的决策树来代替完全决策树,否则还采用原来的决策树。遍历所有的子树,直到针对交叉验证数据集无法进一步降低错误率为止。这虽然是一种有点朴素的修剪方法,但其具有速度快和简单的优点。
该剪枝方法考虑将决策树上的每个分支节点作为修剪的候选对象,决定是否修剪这个分支节点由如下步骤组成:
- 删除以此节点为根的子树;
- 使其成为叶子节点;
- 赋予该叶子节点关联的训练数据的类别为属于此叶子节点的所有样本数据中最常见的分类;
- 当修剪后的树对于验证集合的性能不会比原来的树差时,才真正删除该节点。
训练集合的过拟合使得验证集合数据能够对其进行修正,反复进行上面的操作,自底向上地处理节点,删除那些能够最大限度地提高验证集合的精度的节点,直到进一步修剪有害为止(有害是指修剪会降低验证集合的精度)。
REP 是最简单的后剪枝方法之一,不过由于使用了独立的测试集,与原始决策树相比,修改后的决策树可能偏向于过度修剪,这是因为训练数据集中存在的特性在剪枝过程中都被忽略了,当剪枝数据集比训练数据集小得多时,这个问题特别值得注意。尽管 REP 有这个缺点,不过 REP 仍然可作为一种基准来评价其他剪枝算法的性能。由于验证集合没有参与决策树的创建,所以用 REP 剪枝后的决策树对于测试样例的偏差要好很多,能够解决一定程度的过拟合问题。
悲观错误剪枝
PEP 算法的基本原理
悲观错误剪枝(PEP)是 Quinlan 为了克服 REP 方法需要独立剪枝数据集的缺点而提出的一种后剪枝算法,也属于后剪枝的一种。最小错误剪枝算法的主要思想是通过分别计算剪枝前与剪枝后的期望错误率 ,若剪枝后的 变小,则剪枝,否则不进行剪枝。这里介绍了从一棵错误率分离的剪枝数据集。(1997 年 Floriana Esposito 对 PEP 算法做了适当修改,这里介〔?〕悲观错误剪枝根据剪枝前后的错误率来判定子树的修剪。由于我们还是用生成决策树时的训练样本,因此对于每个节点剪枝后的错误分类率一定是会上升的。该方法引入了统计学上连续修正(continuity correction)的概念来弥补 REP 中的缺陷,在评价子树的训练错误公式中添加了一个常数,以提高对未来样本数据的预测可靠性。
用 表示节点 覆盖的样本总数,即 中不属于节点 所标识类别的样本数。以节点 为根的子树 覆盖了 个样本,节点 中类别 的样本个数为 ,用 表示节点 覆盖的错误样本个数, 为子树 的所有内部节点(非叶子节点)的集合, 为子树 的所有叶子节点的集合,。假设 表示子树 引起的分类错误, 表示只由节点 构成子树时的分类错误率,即节点 作为叶子节点时的分类错误率,则
表示节点 上的分类错误率,也就是对以节点 为根的子树 进行剪枝后所得的分类错误率。 表示子树 上的分类错误率,计算方式如下:
把一棵子树(具有多个叶子节点)的分类用一个叶子节点来替代的话,在训练集上的错误分类率肯定会上升,但是在新数据上则不一定。于是我们需要为子树的误判计算加上一个经验性的惩罚因子。对于叶子节点 ,它覆盖了 个样本,其中有 个错误,那么该叶子节点的错误率为
这个 0.5 就是惩罚因子,对于子树 ,如果它有 个叶子节点(即 ),那么该子树的错误分类率估计为
可以看到,一棵子树虽然具有多个子节点,但由于加上了惩罚因子,所以子树的错误分类率未必能占到便宜。剪枝后分支节点变成了叶子节点,其误判个数 也需要加上一个惩罚因子,变成 。值 0.5 称为二项概率分布近似的连续性修正因子,变成 。值 0.5 称为二项概率分布近似的连续性修正因子,〔?〕则可以参考文献 [13]。
假设 表示子树 的错误分类率的标准差。由于可将误差近似看成二项式分布,根据 (其中 为每次实验成功的概率,),可得
如果
则子树 就会被剪掉。式(7)就是剪枝的标准。当然并不一定非要大于一个标准差,也可以给定任意的置信区间,通过设定一定的显著性因子,就可以估算出错误分类次数的上下界。
最小错误剪枝
MEP 算法的基本原理
1986 年 Niblett 和 Bratko 提出了最小错误剪枝算法。最小错误剪枝采用自底向上的方式对决策树进行剪枝,也属于后剪枝的一种。最小错误剪枝的主要思想是通过分别计算剪枝前与剪枝后的期望错误率 ,若剪枝后的 变小,则剪枝,否则不进行剪枝。Niblett 与 Bratko 所提出的期望错误率 的计算方法如下:
其中, 为样本数, 为决策树分类的类别总数, 个样本中假设属于类 的样本数目最大,设其样本数为 。但需要注意的是,这个公式需要假设每个类别的概率是相等的。
剪枝的流程如下:
- 对于树中的每个中间节点,计算对它进行剪枝后,即该节点成为叶子节点后的期望错误率 ;
- 若该节点未被剪枝,则计算该节点下的加权期望错误率 ;
- 比较 与 ,若 ,则不进行剪枝;若 $E_k<E_k'$,则需要进行剪枝。
以上剪枝算法的特点
上面介绍的四种剪枝算法是常用的剪枝算法,它们的特点如下:
- 是否需要独立剪枝集:CCP 使用交叉验证方式而不需要独立剪枝集,REP、PEP、MEP 均需要独立剪枝集。
- 剪枝方式:CCP、REP 和 MEP 采取自底向上的剪枝方式,而 PEP 则采取自顶向下的剪枝方式。
- 误差估计:CCP 的误差估计使用交叉验证或标准误差,REP 利用剪枝集,PEP 使用连续性校正,MEP 采用基于 的概率估计。
- 计算复杂度(假设 表示非叶子节点数):CCP 为 ,REP 为 ,PEP 为 ,MEP 为 。
事实上,上述剪枝算法的误差估计都是基于期望错误率最小原则,选择期望错误率最小的子树剪枝。对树中的内部节点计算其剪枝/不剪枝可能出现的期望错误率,比较后加以取舍。
NO.44.tip: 随机森林
背景
随机森林(random forest)或随机决策森林是由多棵决策树组成的、用于分类、回归和其他任务的集成学习(ensemble learning)方法。一个随机森林是由多棵决策树组成的。其工作原理是随机选择在同一训练集的不同数据样本上创建决策树,从每棵树上得到预测,并通过投票的方式选择最佳解决方案。随机森林的目的是降低方差。对于分类问题,按照多棵分类树投票决定最终分类结果;对于回归问题,由多棵树的预测值的均值决定最终预测结果。这被称为"投票"加"平均"原理。
随机森林是一种有监督学习算法,灵活且容易使用。森林中包含的树越多,森林就越健壮。生长得很深的决策树往往会学习到高度不规则的模式,甚至过拟合其训练集。而随机森林纠正了决策树对其训练集过拟合的习惯。随机森林通常优于决策树,但其准确性稍低于梯度提升树。
1995 年,何天琴利用随机子空间法创建了第一个随机决策森林算法,建立了由超平面分割树组成的森林,只要随机限制森林对所选定的特征属性敏感,就可以随着森林的变大而获得更好的精度,且不会受到过度训练的影响。只要随机强制对某些特征维度不敏感,其他分割方法也会有类似的效果。需要说明的是,更大规模的森林模型几乎是单调地使预测变得更准确,这与人们普遍认为的分类器的复杂度增长到一定程度上会被过拟合所限制的观点形成了鲜明的对比。
对随机森林的正式介绍最早是在 Leo Breiman 等人的一篇论文中给出的,他们将"Random Forests"注册为商标(截至 2019 年,由 Minitab 公司拥有)。该扩展结合了套袋思想和随机选择特征,建立由无关树构成的森林。他们使用袋外误差作为泛化误差的估计,通过置换方法测量变量的重要性。
源与流
随机森林的基本原理
随机森林在企业中经常被用作"黑箱"模型,因为它可以在广泛的数据中产生合理的预测。
机器学习模型的目标是对它从未见过的新数据进行良好的泛化。当决策树模型容量很大时,就会出现过拟合。决策树基本上是通过紧密拟合来记忆训练数据的。问题在于,模型不仅学习训练数据中的实际关系,还会学习或记忆任何存在于这些训练数据中的噪声。
如果学习到的参数(如决策树的结构)会随着训练数据的变化而有很大的变化,那么这个模型就会有高方差。如果它对训练数据做出了假设,例如,线性分类器做出了样本数据服从线性分布的假设,那么它就不具有适应非线性关系的灵活性,更无法很好地泛化到新数据上。在这种情况下,模型就会有高偏差。在高方差模型的训练数据上得到的模型会有偏差,模型可能连非线性关系都没有能力拟合,更无法很好地泛化到新数据上。
当我们不限制决策树的最大深度时,决策树可以完美地对所有的观测值进行分类,但树被深地学习不同偏差与方差下的数据分布,模型的预测能力是不足的。如果将决策树的最大深度限制为 2,即只做一次分割,分类将不再是 100% 正确的,这就是我们降低决策树的方差,但代价是增加了偏差,作为限制决策树深度优化预测性能的原理。
多次决策树组合成单一的集成模型,形成随机森林。
构造随机森林的步骤
构造随机森林的 4 个步骤如下:
-
一个容量为 的样本集合,做有放回的抽取 次,每次抽取 1 个,最终形成了 个样本训练集。用这样选择出的 个样本训练生成一个决策树。这里 的值是一个超参数。一般地,。
-
假设每个样本有 个特征属性,在构建决策树时,只从这 个特征属性中选取 个特征属性,且满足条件 。一般地, 可以取分类中所有预测因子总数的平方根。对于回归问题, 可以取所有预测因子的总数除以 3。在森林生长过程中, 的值保持不变。
-
按照普通决策树构建方法,例如基于信息增益、信息增益率或基尼指数等,以这 个属性为基础构建决策树。注意整个决策树形成过程中没有进行剪枝。
-
按照步骤 1~3 建立大量的决策树,这样就构成了随机森林。
这种方法在不增加偏差的情况下降低了方差,从而带来了更好的性能。这意味着,即使单个树模型的预测对训练集的噪声非常敏感,但对于多个树模型,只要这些树并不相关,这种情况就不会出现。但是,简单地在同一个数据集上训练多个树模型会产生强相关的树模型(甚至是完全相同的树模型)。因此,需要对训练集进行一些采样,使得后续产生的决策树模型不会是随机相关。套袋法采样就是这样一种降低树模型之间关联性的方法,后文将做详细介绍。
随机森林里各个决策树的构建过程中,进行节点分割时,不是所有的特征属性都参与,而是随机选择某几个特征属性参与比较。这样做是为了使每棵决策树之间的特征属性的相关性减少,同时提升每棵决策树的分类精度,从而提升整个随机森林的性能。特征属性的选择通常有两种策略:
-
Forest-RI(随机输入特征属性选择)策略。随机森林可以使用套袋法结合随机特征属性选择来建立。生成 棵决策树的随机森林的一般过程如下。对于每次迭代 ,训练集 是对数据集 进行放回采样得到的。每个 都是 的一个套袋内样本集合,因此一些样本可能会在 中出现不止一次,而其他样本可能会被排除在外。设 为每次迭代的特征属性数,。为了构建决策树分类器 ,在每个节点上随机选取 个属性作为该节点分割的候选属性,采用常见的决策树分裂属性选择指标,如基尼指数、信息增益或信息增益率等,确定最终的分割属性。接下来确定下一个节点的分割属性时,再次随机选取 个属性作为该节点分割的候选属性。允许树长到最大尺寸,不进行修剪。
-
Forest-RC(随机线性组合)策略。另一种形式使用输入特征属性的随机线性组合,不是随机选择一个原始特征属性子集,而是创建新的属性(或特征),这些特征属性是现有特征属性的线性组合。也就是说,通过指定 ,即要组合的原始属性的数量来生成一个新属性。为了构建决策树分类器 ,在给定的节点上,随机选取 个属性,并随机选取 个系数,该系数为 上均匀分布的随机数。共产生 个线性组合而成的属性值,在这些组合上进行搜索,以获得最佳分割。当只有少量属性可用时,这种形式的随机森林是有用的,这样可以减少各个分类器之间的相关性。
选择最优的随机特征属性数量
如何选择最优的随机特征属性数量 ?要解决这个问题,主要依据是袋外错误率。随机森林有一个重要的优点:没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立无偏估计。
应用套袋法(bootstrap aggregating)时,会创建两个独立的集合:一个是套袋内样本集合,是通过无权重放回采样选择的"袋内"数据;另一个是袋外集合,即 OOB(Out Of Bag)集合,是所有在采样过程中没有被选择过的数据。当这个过程重复进行时,就会建立起随机森林,产生许多套袋内样本集合和 OOB 集合。对于每个决策树,数据被分成袋内与袋外两组。
套袋过程可以根据模型的需要进行定制。为了保证模型的准确性,套袋内训练样本的大小应该接近或等于原始数据集的大小。(对于一个具有 个样本的训练集,我们有放回地抽取 个样本进行训练,那么每个样本不被抽到的概率为 ,当 越来越大时, 趋于 。也就是森林形成的过程中有三分之一的数据是没有被用到的。)
由于每一个 OOB 集合都不是用来训练模型的,所以它是对模型性能的很好的测试。
OOB 错误率是指每个训练样本的袋外平均预测误差。OOB 错误率的具体计算方法取决于模型,但一般计算方法如下:
-
对于每一个 OOB 集合中的样本,找出所有没有被该实例样本训练过的决策树集合。
-
取随机森林对该样本的预测结果(即步骤 1 中得到的这些决策树对该样本的预测值的多数票),与该样本的真实值进行比较,计算出该样本的 OOB 错误率。
-
对每个 OOB 数据集中所有样本的 OOB 错误率进行统计,求平均值得出随机森林的 OOB 错误率。
OOB 错误率应用于剪枝。OOB 错误率会在多次迭代后趋于稳定。OOB 错误率是随机森林泛化误差的一个无偏估计,它的结果近似于需要大量计算的 K 折交叉验证。
例如,对于处理分类问题的随机森林,假设随机森林生成了 500 棵树,对于一个样本 ,它在 200 棵树中属于袋外集合。使用这 200 棵树对样本 进行预测时,有 160 棵树将其预测为类 1,另外 40 棵树将其预测为类 2。在这种情况下,随机森林最终预测结果是类 1。这种情况下的预测正确概率是 0.8,即 160/200,所以该样本 的 OOB 错误率为 0.2。
套袋法
套袋法[bagging 或 bootstrap aggregating(引导聚集算法)]又称装袋法,是机器学习领域的一种集成学习算法,最初由 Leo Breiman 于 1994 年提出。套袋法可与其他分类、回归算法结合,在提高其准确率、稳定性的同时,通过降低结果的方差避免过拟合的发生。
bootstrap 这个奇怪的名字来源于文学作品 The Adventures of Baron Munchausen(《吹牛大王历险记》),这部作品中的一个角色用提着鞋带的方法把自己从湖底提了起来。因此采用意译的方式也叫作自助法,顾名思义,从样本自身中再生成很多可用的同等规模的新样本,不借助其他样本数据。这种方法在样本比较小的时候很有用,这种情况下我们希望留出一部分样本用作验证,而按照传统方法做训练集-验证集分割的话,样本就更小了,偏差会更大,这是我们不希望的。而自助法不会降低训练样本的规模,又能留出验证集(因为训练集有重复的,但是这种重复又是随机的),因此有一定的优势。
套袋法是以可重复的随机采样为基础的,每个样本是初始数据集的有放回采样。在可重复采样生成多个训练子集时,存在于初始训练集 中的所有样本都有被抽取的可能,但在重复多次后,总有一些样本是没有被抽取的,每个样本未被抽取的概率为 。
随机森林是套袋法的一个典型应用。因此,随机森林在生成每棵决策树时,无权重放回随机抽取的样本,每棵决策树会有大概 的样本未抽取到,这些样本就是每棵树的袋外样本(OOB 样本)。以这些为验证集的方式叫作袋外估计(out-of-bag estimate),可以计算出袋外错误率以指导随机森林的生成过程。
套袋法与随机森林的比较如下:
- 两者的收敛性相似,但是随机森林的起始性能相对较差,特别是只有一个基学习器时。
- 随着基学习器数量的增加,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率常优于套袋法,因为套袋法是"确定性"决策树,而随机森林使用"随机性"决策树。
- 其实套袋模型不止有随机森林,还可以集成 KNN 模型、决策树模型等。但是一般的 KNN 模型不适合做集成学习,因为很难随机让泛化能力变强。
套袋法的算法流程
套袋法是每个分类器对原始数据的随机抽取进行学习,最后进行投票的方法。例如,给定包含 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中。这样,我们可以采样出 个含 个训练样本的采样集(这个过程称为自助),然后基于每个采样集训练出一个基分类器(这个过程称为聚集),然后将这些基分类器进行集成,获得套袋器。在对预测输出进行集成时,通常对分类任务使用简单投票法,对回归任务使用简单平均法,这就是套袋法的基本流程。
输入:训练集 ;基学习算法 ;训练轮数
过程:
- for do
- end for
输出:
套袋法的偏差和方差
套袋法训练多个分类器取平均,其函数如下:
对于套袋法来说,每个基模型的权重等于 且期望近似相等(子训练集都是从原训练集进行子采样),故可以进一步简化得到:
根据上式,整体模型的期望近似于基模型的期望,这也就意味着整体模型的偏差和基模型的偏差近似。同时,整体模型的方差小于或等于基模型的方差(当相关性为 1 时取等号),随着基模型数()的增多,整体模型的方差减少,从而防止过拟合的能力增强,模型的准确率得到提高。但是,模型的准确率一定会无限逼近于 1 吗?并不一定,当基模型数增加到一定程度时,方差公式中第二项的改变对整体方差的作用很小,防止过拟合的能力达到极限,这便是准确率的极限了。另外,套袋法中的基模型一定要为强模型,否则就会导致整体模型的偏差度低,即准确率低。
简单来说,套袋法主要关注降低方差,而降低方差可以降低过拟合的风险,所以套袋法通常在弱分类和复杂模型上表现得很好。
套袋法的优缺点
套袋法的优点:
- 许多弱的学习器聚集在一起,通常比单个学习器在整个数据集上的表现要好,而且过拟合程度较低。
- 消除了高方差、低偏差数据集的变异。
- 可以并行进行,因为每个单独的基学习器在组合之前都可以单独处理。
套袋法的缺点:
- 对于具有高偏差的数据集,套袋法也会将高偏差带入其中。
- 丧失了模型的可解释性。
- 根据数据集的不同,计算成本可能会很高。
随机森林的参数设置与调优
我们通常将随机森林作为一个黑盒子,输入数据然后给出预测结果,无须担心模型是如何计算的。这个黑盒子本身有几个影响精度和性能的参数,在使用时需要关注和调整。随机森林算法中需要设置的主要参数如下:
- 随机森林中决策树的数量(ntree)。
- 随机森林内部各个子树随机选择属性的个数(mtry)。
一般来讲,决策树的数量越多,算法的精度越高,但程序的速度会有所下降。内部各个子树随机选择属性的个数是影响算法精度的主要因子,随机森林内决策树的强度和相关度与随机选择属性的个数相关,如果随机选择属性的个数足够小,树的相关性趋向于减弱,另外,决策树模型的分类强度随着随机选择属性的个数的增加而提高。
随机森林的优缺点
随机森林的优点:
- 由于采用了集成算法,随机森林的精度比大多数单个算法要好,所以准确性高。
- 在测试集上的表现良好。由于两个随机性(样本随机和特征随机)的引入,使得随机森林不容易陷入过拟合。
- 在工业上,由于两个随机性的引入,使得随机森林具有一定的抗噪声能力,对比其他算法具有一定的优势。
- 由于使用决策树的组合,使得随机森林可以处理非线性数据,其本身属于非线性分类(拟合)模型。
- 能够处理高维度的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据无须规范化。
- 训练速度快,可以运用在大规模数据集上。
- 可以处理含有缺失值的特征(单独作为一类),无须额外处理。
- 由于有袋外数据,可以在模型生成过程中取得真实误差的无偏估计,且不损失训练数据量。
- 由于每棵树可以独立、同时生成,容易做成并行化方法。
- 由于实现简单、精度高、抗过拟合能力强,当面对非线性数据时,适于作为基准模型。
随机森林的缺点:
- 当随机森林中的决策树个数很多时,训练时需要的空间和时间会比较大。
- 在某些噪声较大的样本集上,随机森林容易陷入过拟合。
- 不能很好地处理非平衡数据。
- 在随机森林的构建过程中,训练集是随机选取的,使用自助法随机采样时,由于原训练集中含有的少数类占比低,因此被选中的概率就很低。这使得 个随机选取的训练集集中少数类数量比原有的数据集更少或没有,反而加剧了数据集的不平衡性,使得基于此数据集训练出来的决策树的规则没有代表性。
- 由于数据集中少数类占比低,使得训练出来的决策树不能很好地体现少数类的特点,只有将少数类的数量加大,使数据集中的数据达到一定程度的平衡,才能使得算法稳定。
- 需要对连续性变量进行离散化。
NO.45.tip: 提升法与堆叠法
背景
集成学习(ensemble learning)让人相信"群众的智慧"这一理念,它表明一个更大的群体的决策通常比单个个体的决策要好。集成学习方法使用多种学习模型来获得比使用任何单独的学习模型更好的预测性能。机器集成学习由一组具体的备选模型组成,但通常允许这些备选模型之间存在更灵活的结构。有监督学习算法执行的任务是在一个假设空间中搜索合适的模型或对特定的问题进行良好的预测。即使假设空间中包含了对特定问题非常好的假设,也可能很难找出一个好的假设。集成学习将多个假设结合起来,形成一个(希望是)更好的假设。术语"集成"通常用来描述使用相同的基础学习器生成多个假设的方法,而多分类器系统则广泛得多,它包括不同类别的基础学习器。
评估一个集成学习方法的预测能力,通常比评估单个模型的预测能力需要更多的计算。从某种意义上说,集成学习方法可以被认为是通过执行大量的额外计算来补偿差的学习算法的一种方式。决策树等快速算法通常用于集成学习方法(例如,随机森林),尽管较慢的算法也可以从集成学习技术中获益。集成学习方法也被用于无监督学习场景,例如共识聚类或异常检测等。
经过训练的集成学习模型代表单一的假设,但这个假设不一定包含在它所建立的模型的假设空间中。因此,可以证明集成学习方法在它们所能代表的功能上具有更大的灵活性。理论上,这种灵活性使它们比单个模型更容易过拟合训练数据,但在实践中,一些集成学习方法(尤其是套袋法)往往能克服对训练数据的过拟合而导致的问题。
从经验上讲,当模型之间存在显著的多样性时,集成学习方法往往会产生更好的结果。因此,许多集成学习方法试图增强它们所结合的模型之间的多样性。虽然可能并不直观,但与非常谨慎的算法(如基于熵的决策树)相比,更多的随机算法(如随机决策树)可以用来产生更强的集成学习模型。
虽然集成学习模型中的基础分类器的数量对预测的准确性有很大的影响,但如何确定基础分类器的数量是一个关键但比较困难的问题。大多数情况下是通过统计测试来确定适当的基础分类器的数量。最近,一个理论框架提出,集成学习方法存在一个理想的基础分类器的数量,多于或少于这个数量的基础分类器都会降低集成学习方法的精度。这就是所谓的"集成构建中的收益递减法则"。他们的理论框架表明,使用与类标签相同数量的独立的基础分类器可以获得最高的准确率。
常见的集成学习方法有贝叶斯最优分类器(bayes optimal classifier)、套袋(bagging)法、提升(boosting)法、桶模型(bucket of models)以及堆叠(stacking)模型。贝叶斯模型组合(Bayesian model combination)、贝叶斯参数平均(Bayesian model averaging)以及堆叠(stacking)模型。下面重点介绍提升法和堆叠法。
源与流
提升法
Kearns 和 Valiant 首先提出了强可学习(strongly learnable)和弱可学习(weakly learnable)的概念,并曾经提出过这样一个问题:一组弱学习器能否创造出一个强学习器?弱学习器一般是指一个分类器,它的分类结果只比随机分类好一点点;强学习器指分类器的分类结果与真实分类非常接近。Robert Schapire 在 1990 年的一篇论文中对 Kearns 和 Valiant 的问题做出了肯定的回答。最先构造出一种多项式级的算法,这就是最初的提升算法。该论文在机器学习理论方面产生了重大的影响。一年后,Freund 开发了效率更高的提升算法。关于这些早期提升算法的实践上的缺陷,那就是都是要求事先知道弱学习器的下限。1995 年,Freund 和 Schapire 改进了提升算法,提出了 AdaBoost(Adaptive Boosting)算法,该算法的效率和 Freund 于 1991 年提出的提升算法几乎相同,但不需要任何关于弱分类器的先验知识,因而更容易应用到实际问题当中。
提升算法是过去 30 年中开发的最有前途的数据分析方法之一,其基本思想是反复应用简单的分类器,并结合其解决方案的结果,以获得更好的预测结果。提升法通过训练每个新的模型实例来更注重先前模型错误分类的实例来增量构建集成模型。在某些情况下,提升法已被证明可比套袋法更好的准确性,但它也往往更容易过拟合训练数据。
影响提升法的两个核心问题是:
- 在每一轮中如何改变训练数据的权值或概率分布?提高上一个弱分类器分错的样本的权值,减小前一轮中分类正确的样本的权值,让误分类的样本在后续受到更多的关注。
- 如何将弱分类器组合成为一个强分类器?通过加法模型将弱分类器进行线性组合。比如 AdaBoost 通过加权多数表决的方式,即增大错误率较小的分类器的权值,同时减小错误率较大的分类器的权值;提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
我们首先介绍 AdaBoost 算法以了解提升法的精髓。
AdaBoost 算法
AdaBoost 是 Adaptive Boosting 的简称,是由 Yoav Freund 和 Robert Schapire 提出的一种机器学习算法,他们的工作获得了 2003 年哥德尔奖。AdaBoost 算法可以和许多其他类型的学习算法一起使用,以提高性能。其他学习算法("弱学习器")的输出被组合成一个加权和,代表提升分类器的最终输出。AdaBoost 是自适应的,即后续的弱学习器会被调整,以支持那些被之前的分类器错误分类的实例。各个学习器可以很弱,但只要每个学习器的性能比随机猜测好,就可以证明最终的模型收敛到一个强学习器。
以决策树为弱学习器的 AdaBoost 通常被称为最好的开箱即用的分类器。AdaBoost 算法的每个阶段收集的关于每个训练样本分类的相对"难度"的信息被反馈给树生长算法,这样以后树就会倾向于关注更难分类的样本。
机器学习中的问题常常受到维度灾难问题的影响,评估每个特征不仅会降低分类器的训练和执行速度,事实上还会降低预测能力。与神经网络和 SVM 不同,AdaBoost 训练过程只选择那些已知能提高模型预测能力的特征,减少了维度,并可能提高执行速度,因为不相关的特征不需要计算。
原理
假设有一个数据集 ,其中每个样本 是一个 维向量,。在第 次迭代后,AdaBoost 提升分类器是弱分类器的线性组合,其形式为:
其中,类取值将是 的符号。在第 次迭代时,我们希望通过增加另一个弱学习器 ,再加一个权重 ,将其扩展为一个更好的提升分类器:
所以,剩下的就是确定哪种弱分类器是 的最佳选择,以及它的权重 应该是多少。我们将 的总误差 定义为其在每个数据点上的指数损失之和:
定义 (当 时),且 ,则:
然后对 进行归一化处理,即:
然后将此归一化后的值作为 的新值。
我们可以将这个和值分成按 正确分类的数据点(所以 )和分类错误的数据点(所以 ):
由于该等式右侧唯一依赖于 的部分是 ,因此我们看到最小化 的 是最小化 的 (假设 ),即加权误差最小的弱分类器。
为了确定使带有 的总误差 最小化的期望权重 ,我们对其进行微分:
将其设为零并求解(具体的推导过程在此省略):
我们计算出弱分类器的加权错误率为:
由此可知:
这样就得出了 AdaBoost 算法。在每次迭代时,选择分类器 ,使总加权误差 最小化,用它来计算误差率 和权重 ,最后改进提升分类器 为:
在分类问题中,AdaBoost 算法通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。AdaBoost 算法的伪代码如下。
输入: 训练数据集 ,,,一组弱分类器 (例如决策树)。
输出: 最终分类器 。
过程:
- 初始化训练数据的权值分布:
训练 个弱分类器 。
(a) 使用具有权值分布 的训练数据集学习($1 \leq m < L$),取下一个弱分类器:
(b) 计算 <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.0315em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">m</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> 在训练数据集上的分类误差率:
累加每个样本的预测误差。 (c) 计算 <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.0315em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">m</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> 的系数:
(d) 更新训练数据集的权值分布:
然后归一化,得到:
(e) 构建新的基本分类器:
如果 <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>,则 <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.07153em;">C</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0715em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0037em;">α</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0037em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0315em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>。然后继续利用下一个弱分类器,重复步骤 (a) ~ (e),直到遍历所有的弱分类器。
- 继续得到最终的分类器:
提升法的分类、优点和挑战
提升法的重点是迭代组合弱学习器,以建立一个能够预测更准确结果的强学习器。提升算法创建和聚集弱学习器的方式可能有所不同,四种流行的提升法包括:
- 自适应提升或 AdaBoost。 Yoav Freund 和 Robert Schapire 被认为是 AdaBoost 算法的创造者。这种方法以迭代的方式运行,识别错误分类的数据点,并调整其权重以最小化训练误差。该模型以一种连续的方式持续优化,直到产生最强的预测器。它采用指数损失函数,上一节已经对此做了详细介绍。
- 梯度提升。 在 Leo Breiman 的基础上,Jerome H. Friedman 开发了梯度提升法,其工作原理是依次将预测器添加到一个集合体中,每个预测器都会纠正其前辈的错误。然而,梯度提升不是像 AdaBoost 那样改变数据点的权重,而是对前一个预测器的剩余误差进行训练。它采用残差或绝对损失函数。由于结合了梯度下降算法和提升法,所以使用了梯度提升这个名称。
- 极端梯度提升或 XGBoost。 XGBoost 是梯度提升的一种实现方式,旨在提高计算速度和规模。XGBoost 允许在训练过程中进行并行学习。
- 自然梯度提升或 NGBoost。 它利用自然梯度将不确定性估计引入梯度增强中,是一种用于概率预测的模块化提升算法。该算法由基学习器、参数概率分布和评分规则组成。
提升法的主要优点包括:
- 易于实施。 提升法以一种连续的方式将多个弱学习器结合起来,在观察的基础上反复改进。在 Python 中,sklearn 的集合方法(sklearn ensemble)可以很容易地实现流行的提升方法,包括 AdaBoost、XGBoost、LightGBM 等,而且提升法可以使用几个超参数调整选项来改善拟合,不需要对数据进行归一化。
- 减少偏差。 提升法可以帮助减少高偏差,常见于浅层决策树和逻辑回归模型。
- 计算效率。 由于提升算法在训练过程中只选择能提高其预测能力的特征,因此可以帮助降低维度,并提高计算效率。
提升法也存在一些争议,主要在于提升法是否能帮助减少过拟合或加剧过拟合。
- 过拟合。 研究中存在一些争议,主要在过拟合确实发生的情况下,预测不能被泛化到新的数据集上,所以提升模型的计算成本很高。尽管 XGBoost 试图解决其他类型的提升计算中的巨大计算量。提升中的顺序训练很难扩大规模。由于每个估计器都是建立在其前辈的集合上。
- 可扩展性问题。 与套袋法相比,提升法的训练速度会更慢,因为大量的参数也会影响模型的行为。
梯度提升法的原理
提升法的主要思想是将新的模型依次加入集合中。在每个特定的迭代中,新的弱基础学习器模型被训练成与到目前为止所学的整个集合的误差相关。第一项突出的提升技术是纯粹算法驱动的,这使得对其属性和性能的详细分析相当困难。这导致了一些猜测:为什么这些算法要么优于其他所有的方法,要么由于严重过拟合而不适用。
梯度提升(gradient boosting = gradient descent + boosting)的思想起源于 Leo Breiman 的观点,即提升可以解释为一个合适的代价函数上的优化算法,随后 Jerome H. Friedman、Llew Mason、Jonathan Baxter、Peter Bartlett 和 Marcus Frean 也提出了更为普遍的函数梯度提升观点,即通过迭代选择一个指向负梯度方向的函数(弱假设),在函数空间上优化代价函数。这种函数梯度的提升观点使得提升算法在回归和分类之外的许多机器学习和统计学领域得到了发展。损失函数描述的是模型的不可靠程度,损失函数的结果越大,说明模型越容易出错(其实这里有一个方差、偏差均衡的问题,但是我们暂不考虑)。如果模型能够让损失函数在其梯度下降的方向上下降,则说明模型在不断改进,而最好的方式就是让损失函数在其梯度的方向上下降。
在梯度提升机(Gradient Boosting Machine,GBM)中,学习过程连续拟合新的模型,提供对响应变量更准确的估计。这种算法的原理是构建新的基础学习器,使其与损失函数的负梯度最大程度地相关,从而与整个集合相关。损失函数可以任意选择,但如果误差函数是经典的平方误差损失,学习过程将导致连续的错误拟合。一般来说,损失函数的选择是由研究者设定的,到目前为止,既有广泛适用的损失函数,也有可实现特定任务的损失函数。这种高度的灵活性使得 GBM 对于任何特定的数据驱动的任务都可以高度可定制的。它的实现相对简单,这使得人们可以尝试不同的模型设计。此外,GBM 不仅在实际应用中,而且在各种机器学习和数据挖掘的挑战中也获得了成功。
梯度提升法是非常经典而又重要的提升方法,它与 AdaBoost 一样都是将弱分类器合成强分类器。它们的主要区别是:
- 梯度提升法通过变量的残差来改变错误分类的权重,而 AdaBoost 则直接修改分类错误的训练权重。
- 梯度提升法中的分类器一般是完整的决策树,但是 AdaBoost 一般使用二层决策树,可以参见 5.1.1 节的例子。
与其他提升方法一样,梯度提升法以迭代的方式将弱学习器组合成一个强学习器。在最小二乘回归的环境中最容易解释,其目标是通过最小化均方误差 (其中 为样本的实际观测值, 为样本的预测值)一个模型 预测 的值。
现在,考虑一个有 个阶段的梯度提升算法。在梯度提升的每个阶段 (),假设有一些不完美的模型 。对于早期阶段(即 较小时),这个模型可能只是返回 ,即 的平均值。为了提升 ,算法应该增加一些新的估计器 。因此,
即
与其他提升法一样,每个 都试图修正其前一个模型 之间的误差。观察到给定模型的残差 是均方误差损失函数的负梯度[相对于 ],可以将这一思想推广到平方误差以外的其他损失函数:
因此,梯度提升可以是专门的梯度下降算法,而泛化则需要"适配"不同的损失函数及其梯度。
梯度提升决策树
梯度提升决策树(或梯度提升树,GBT)将提升看作为一个数值优化问题,其目标是使用类似梯度下降的过程来增加弱学习器,从而最小化模型的损失。这类算法被描述为一个阶段性的加法模型,这是因为每次增加一个新的弱学习器,而模型中现有的弱学习器被冻结并保持不变。
请注意,这种分阶段(stagewise)的策略与逐步式(stepwise)的方法不同,后者是在加新项时重新调整先前输入的项,例如 AdaBoost 算法。
梯度提升决策树可以被认为是一种贪婪的函数逼近,允许使用任意可微分的损失函数,该技术扩展到二元分类、回归、多分类等问题。从这个角度看,基于梯度提升的决策树已经与各类神经网络学习方法融合。
梯度提升决策树涉及三个要素:
- 一组进行预测的 CART 决策树作为弱学习器。
- 一个待优化的损失函数。
- 一个加法模型,用来增加弱学习器,使损失函数最小化。
-
CART 决策树被用作梯度提升中的弱学习器。具体来说,回归树被用于输出真实值……并“纠正”预测中的残差。树可以……CART 决策树的输出被添加,并“纠正”预测中的残差。……
-
损失函数
使用何种损失函数取决于问题的类型。回归可以使用平方误差,分类可以使用对数损失……损失函数必须是可微分的,目前有许多标准的损失函数可用,也可以自定义损失函数。例如……这是一个足够通用的框架,可以使用任何可微分的损失函数。
梯度提升框架的一个好处是,不必为每个可能使用的损失函数推导新的提升算法,相反,它是一个足够通用的框架,可以使用任何可微分的损失函数。
假设损失函数是 ,迭代的目标是找到一个弱学习器 ,让本轮的损失函数 最小。也就是说,要让样本的损失尽量变得……针对损失函数拟合方法的问题,Friedman 提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个 CART 回归树。第 轮的第 个样本的损失函数的负梯度表示为
利用 ,我们可以拟合一棵 CART 回归树,得到第 棵回归树,其对应的叶子节点区域为 ,,其中 为叶子节点的个数。
针对每一个叶子节点里的样本,我们求出使损失函数最小,也就是拟合叶子节点最好的输出值 :
这样就得到了本轮的决策树拟合函数:
从而本轮最终得到的强学习器的表达式如下:
通过损失函数的负梯度,我们找到了一种通用的拟合损失误差的方法。这种方法对于分类问题和回归问题均适用,区别仅在于损失函数不同导致的负梯度不同而已。
- 加法模型
树是一个一个地添加的,模型中现有的树不会被改变。梯度下降过程被用来最小化添加树时的损失。传统的梯度下降是用来最小化一组参数,如回归中的系数或神经网络中的权重。在计算出误差或损失后,权重被更新以最小化该误差。
但是,在梯度提升树中,我们不使用参数,而是使用弱学习器的子模型,或更具体的决策树。在计算损失后,为了执行梯度下降过程,我们必须向模型新添加一棵树,以减少损失(即遵循梯度)。我们需要对树进行参数化,然后修改树的参数,并通过减少残差向正确的方向移动。一般来说,这种方法被称为函数梯度下降或常函数的梯度下降。
然后,新树的输出被添加到现有树序列的输出中,以纠正或改善组合提升模型的最终输出。一旦损失达到可接受的水平或在外部验证数据集上不再有改善,就会停止训练,树的数量不再增加。
综上所述,梯度提升树的优点包括:
- 它是一种通用的算法,适用于任何可微分的损失函数。
- 它提供的预测分数通常比其他算法好得多,并且更准确。
- 它可以处理缺失的数据——不需要归因。
- 训练速度更快,尤其是在大型数据集上。
- 它们中的大多数都支持处理分类特征。
梯度提升树的缺点包括:
- 这种方法对异常值很敏感。离群值比非离群值的残差要大得多,因此梯度提升法会把大量的注意力放在这些点上。使用平均绝对误差(MAE)而不是平均平方误差(MSE)来计算误差,可以帮助减少这些异常值的影响,因为后者对较大的差异给予了更多的权重。
- 如果树的数量太大,就容易出现过拟合,需要在模型开始过拟合之前停止。可以通过应用 L1 和 L2 正则化惩罚来解决过拟合问题,也可以尝试使用低学习率。
- 模型的计算成本很高,需要很长的时间来训练,特别是在 CPU 上。
- 很难解释最终的模型。
尽管梯度提升树现在被广泛使用,但许多人仍然把它当作一个复杂的黑匣子,只是使用预先建立的库运行模型。
梯度提升分类决策树
基于梯度提升树的分类算法预测输出的不是连续的值而是离散的类别,导致我们无法直接利用输出类别拟合误差。为了解决这个问题,主要有两种方法:一种方法是用指数损失函数,此时梯度提升分类决策树(GBDT)退化为 AdaBoost 算法;另一种方法是用类似于逻辑回归的对数似然损失函数,可以参考关于 logistic 回归问题的描述。也就是说,我们用类别的预测概率值和真实概率值的差来拟合损失。本节仅讨论利用对数似然损失函数的 GBDT 分类,又可以进一步分为二元分类和多元分类。
二元 GBDT 分类算法
对于二元 GBDT 分类算法,首先要将预测变量转变为连续值,可以采用类似 logistic 回归中的做法,利用对数概率和相应的计算过程。这里的 实际是转换以后的样本的 log(odds)。用类似于逻辑回归的对数似然损失函数,则损失函数为
其中 。则此时的负梯度误差为
对于生成的决策树,各个叶子节点的最佳负梯度拟合值为
由于上式比较难优化,我们一般使用近似值代替:
除了负梯度计算和叶子节点的最佳负梯度拟合的线性搜索,二元 GBDT 分类和 GBDT 回归算法过程相同。
多元 GBDT 分类算法
多元 GBDT 比二元 GBDT 复杂一些,主要体现在多元逻辑回归和二元逻辑回归的复杂度差别。假设类别数为 ,则此时的对数似然损失函数为
其中如果样本输出类别为 ,则 。第 类的概率 的表达式为
结合上面两个公式可以计算出第 轮的第 个样本对应类别 的负梯度误差:
可以看出,这里的误差就是样本 对应类别 的真实概率和 轮预测概率的差值。对于生成的决策树,各个叶子节点的最佳负梯度拟合值为
由于上式比较难优化,我们一般使用近似值代替:
除了负梯度计算和叶子节点的最佳负梯度拟合的线性搜索,多元 GBDT 分类和二元 GBDT 分类以及 GBDT 回归算法过程相同。
梯度提升回归决策树
梯度提升法最初提出时是以回归问题和函数逼近为出发点的,因此,理解梯度提升回归决策树(GBRT)相对容易一些,这里给出梯度回归决策树的算法描述。
GBRT 的算法流程如下。
输入:训练数据集 ,,。
输出:梯度提升回归树 。
过程:
- 初始化模型 ,依据 对样本进行预测,并计算残差。
- 循环训练 个模型,。
- 2.1 计算残差,,。
- 2.2 基于残差和所有特征属性,训练一个回归决策树 。
- 2.3 更新模型 , 为学习速率,然后进入下一次循环。
- 得到最终的梯度提升回归树 。
从梯度提升回归树算法流程可以看出,它的弱分类器是依据即时计算的残差值和特征属性训练得到的,而不是像 AdaBoost 那样预先准备好的弱分类器。
随机梯度提升树
对 GBDT 进行正则化可防止过拟合。GBDT 的正则化主要有三种方式:
- 第一种是学习率,定义为 ,在前文中已经介绍过。对于前面的弱学习器的迭代,。如果我们加上正则化项,则有 。 的取值范围为 。对于同样的训练集学习效果,较小的 意味着需要更多的弱学习器的迭代次数。通常我们用学习率和迭代最大次数一起来决定算法的拟合效果。
- 第二种是对 CART 回归树等弱学习器进行正则化剪枝。这在第 3 章介绍决策树剪枝时已经讲过,这里就不重复了。
- 第三种是通过子采样(subsample)比例进行正则化,其取值为 。注意这里的子采样和随机森林不一样,随机森林使用的是放回采样,而这里是不放回采样。如果取值为 1,则全部样本都使用,等于没有使用子采样。如果取值小于 1,则只有一部分样本会做 GBDT 的决策树拟合。选择小于 1 的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在 之间。
使用了子采样的 GBDT 有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,可以通过采样分发到不同的任务去做提升的迭代,最后形成新树,从而减少弱学习器难以并行学习的弱点。
随机梯度提升树是 2002 年 Jerome H. Friedman 在 "Stochastic Gradient Boosting" 这篇论文中提出。Breiman(1996)在套袋法中引入了一个概念:将随机性注入函数估计过程中可以提高它们的性能。Friedman 受此启发,对梯度提升算法进行了小小的改动,即将随机性整合到梯度提升算法中。特别地,在每次迭代中,从所有的训练集中随机地(不重复)进行子采样,然后使用这个随机抽取的子样本而不是全部样本来拟合一个基学习器,并计算模型对当前迭代的更新。
当随机子样本数量 时就没有随机性,这个算法就和之前的 GBDT 一样。比例 越小,在连续迭代中的随机样本就会差别越大,因此,整个程序的随机性就越大。 时,算法大致等价于在每次迭代中使用套袋法。使用 也会使得计算量减少为原来的 。然而,使用过小的 值会减少每次迭代用来训练基学习器的数据量,这会导致单个基学习器的方差增加。
堆叠法
堆叠(stacking)(有时称为堆叠泛化)是指利用多种不同的基分类器或基回归器对样本数据进行预测,基于各个预测结果组合形成新的特征集和样本集,然后用它们来训练和测试元(meta)学习器,最终实现预测的集成学习方法。
如何组合成为关键,这里涉及模型的组合以及样本的划分与组合问题。堆叠一般采用异构的基学习器,例如同时采用线性模型、决策树模型甚至各类深度学习模型等,并对这些基学习器的预测输出进行组合。如果采用等权重的组合,则不需要对预测结果做进一步的处理,但是这样效果并不好,因为我们不知道哪个基学习器更优秀,这也失去了使用各种异构基学习器的优势。如果采用不同权重的组合,那么问题是各个基学习器的权重该如何确定。办法依然是有监督的训练。因此,在堆叠法中,需要对样本数据进行有效划分,以支持多层次的训练同时防止过拟合出现。
首先看模型如何堆叠。如图 5.16 所示,使用多个模型(例如 KNN、决策树或 SVM)的预测结果来建立一个新的模型,这个最终的模型被用来对测试数据集进行预测。因此,我们在堆叠中所做的是,将训练数据通过多个模型来运行。这些模型通常被称为基学习器、基础学习器或基础模型,我们从这些模型中产生预测结果。然后,这些预测值被作为输入送到下一级或者基础模型,而不是进行投票或者聚合。该模型将给出最后的预测。根据所要处理的是回归问题还是分类问题,可以选择不同的模型。堆叠的概念是非常有趣的,它开辟了很多的可能性。但是,以这种方式做堆叠会带来一个巨大的风险,那就是模型的过拟合,因为正在使用整个训练数据来创建模型,并由此进行预测。
因此,样本数据的划分变得非常重要。依据交叉验证的思想,在基学习器的训练中,采用 K 折交叉验证的思想,这些样本数据在第二阶段被用作训练样本集依然作为第二阶段的测试样本,从而获得最终的预测结果。
堆叠集成学习方法主要关注两个方面:
- 模型的组合,包括各种基学习器的选择和训练过程,以及后续阶段会利用前面阶段的预测结果进行集成模型的训练。
- 模型的过拟合问题的解决,主要依托交叉验证等思想,对样本集进行划分,并改进训练过程。在此过程中,需要生成新的训练样本和测试样本数据。根据处理方式的不同,堆叠法衍生出了几种变种。下面首先从二阶段堆叠模型开始介绍。
简单的二阶段堆叠算法
首先介绍一种最简单的二阶段堆叠算法。基学习器的训练作为第一阶段,这一阶段与各个基学习器的特征有关。如果有 个基学习器,则分别使用训练数据集 对它们进行训练,获得 个预测结果,将这些预测结果组合成一个特征向量,即 ,其与实际目标变量值 构成一条新的训练数据。对于原始的 个样本数据,可以产生新的 个训练数据,构成数据集 ,新的训练数据的特征属性全部发生了变化,且只有 以及最后的模型 。在这个过程中, 个基学习器(集成模型)进行训练,获得新的模型选择。算法描述如下。
输入:训练数据 ,,。
输出:一个集成分类器 。
- 步骤1:训练第一级分类器
- for to do
- 基于数据集 ,训练一个基分类器
- end for
- 步骤2:从数据集 中构建新数据
- for to do
- 构建包含 新数据集,其中
- end for
- 步骤3:训练第二级分类器
- 基于新构建的数据集训练一个新的分类器
- return
基于 K 折交叉验证的二阶段堆叠法
上文介绍的简单的二阶段堆叠算法容易出现过拟合问题,为此可以使用交叉验证来准备二级分类器的输入数据。因此,需要对输入数据进行划分:样本数据集被分成 个折,在连续的 轮中, 个折被用来训练第一阶段的基学习器;在每轮的第一阶段的基学习器进行验证,每个基学习器使用的训练集和验证集都有一些差异。然后,所得的预测结果被组合起来,并作为输入数据提供给第二阶段的元学习器。
基于 K 折交叉验证的堆叠法的算法流程如下:给定样本数据集 ,特征向量为 ,目标变量为 ,假设有 个样本,每个样本的特征向量 有 个特征属性, 个基学习器。
步骤1:首先将样本数据集 划分为 个大小相等的折(子集),类似于 K 折交叉验证过程,然后开始训练 个基学习器,执行 轮训练。每轮训练中,选取除 折以外的其他 个折作为训练数据,迭代训练各个基学习器 。把 折作为验证集,利用该轮更新的每一个基学习器 对 折中的每一个样本 ,得到一组预测值 ,将这些预测值构成一个特征向量,联合原来的实际目标变量值 ,构成一个新的训练数据。这样每轮实际获得了 个新的训练数据。经过 轮,实际获得的新训练数据为 个。
步骤2:利用新创建的训练数据对元学习器进行训练。
步骤3:在整个数据集 上重新训练生成基学习器。然后利用更新后的基学习器对测试集进行预测,并形成新的测试数据集供元学习器作为测试集使用。或者,可以尝试在一开始就把 分成训练和测试集。在训练部分进行步骤1和步骤2,然后只在测试集上重新训练基学习器。这样做的一个好处是可以减少时间,因为它不需要在全部数据上工作。
K 折交叉验证的堆叠法的伪代码描述如下。在整个过程中的训练样本和测试样本的派生过程见图 5.19。
输入:训练数据集 ,,。
输出:一个集成分类器 。
- 步骤1:采用交叉验证的方式为第 2 级分类器准备一个训练集
- 随机将数据 分割为 个等大小的子数据集:
- for to do
- 步骤1.1:训练第 1 级分类器
- for to do
- 从 中训练分类器
- end for
- 步骤1.2:为第 2 级分类器构建一个训练集
- for do
- 获得一个记录 ,其中
- end for
- end for
- 步骤2:训练第 2 级分类器
- 基于集合 训练一个新的分类器
- 步骤3:重新训练第 1 级分类器
- for to do
- 基于 训练一个分类器
- end for
- return