Part VI 学习理论(Learning Theory)
在之前,我们主要对于常用的监督学习算法进行了阐述,现在做一个小小的回顾。
第1讲由回归问题常用的线性回归算法、分类问题常用的逻辑回归算法抛砖引玉,引出指数分布族以及广义线性模型,让我们明白线性回归与逻辑回归实则是广义线性模型在y建模于不同概率分布时的推导形式。
第2讲介绍了生成学习算法中常用的两个算法—高斯判别分析和朴素贝叶斯。目的在于明白生成学习算法与判别学习算法在解决问题时用的两种不同的思路。当解决不同的问题时应采用不同的思路。
第3讲则为我所理解的支持向量机的故事。
有了对于上述算法的基本理解,那么接下来就要进入一个新的篇章了—学习理论。某种程度上来说,理解机器学习算法背后的学习理论,比理解与推导机器学习算法更为重要。让我们开始吧。
目录
1 学习理论
1.1 偏差(Bias)和方差(Variance)权衡
记得Andrew曾说,偏差与方差看似好理解,要深入掌握却很难。关于偏差与方差现在并没有一个公认的定义。
现在结合下面例子初探偏差与方差。假设选择了3个模型进行线性回归,如下图所示。左边的图即代表直接用线性函数进行回归,中间的图利用2次函数,而右边的图则可能利用更高次的函数,例如5次函数进行模拟。
中间的图显然效果最好,这是我们想要的。对于左边的图,我们可以说其对于数据原有的规律学习得不是很好,因此其会存在着偏差过大的问题;对于右边的图可以说其又学习太好了,因此存在着方差过大的问题。偏差与方差两个问题相伴相随,不可分割。
你可能会问,模型对于训练数据拟合越好那么效果不就越好吗?非也,模型对于训练数据拟合得好只是一个基本要求。如果只考虑对于训练数据拟合得好,那么就会存在着高方差问题,例如右图所示,这样的模型也不是我们想要的。
还记得我们在第1讲中对于线性回归的讨论吗?勾起回忆。要理解二者,首先要明白,我们训练模型目的究竟是为何?
因为往往训练数据不能代表整体,我们对于一个模型更看重的是其泛化能力,也就是模型不仅仅在训练数据上表现好,在未训练的数据上也应表现好;即我们希望这个模型能够从训练数据中学习到事物的真实规律,且当有的样本来临时能够做出正确的判断。当然提高训练数据量能增加模型对于真实规律的学习能力。但是当你的模型本身就出了问题,例如上图所示,左图尝试用1次函数去拟合2次函数,右图尝试用5次函数去拟合2次,即模型的复杂度选得过低或者过高,那么此时就应该修改模型了。
我们使用某种机器学习对于数据进行建模,为的是学习到蕴含在数据中的该事物的一些规律。左图所示的高偏差问题即模型对于训练数据都拟合不好,何谈其他数据;右图所示的高方差问题即模型对于训练数据拟合得太好了,学习到了一些并不属于原有事物的规律,这也是我们不想看到的情况。要明白,偏差与方差是不可消除的,如何权衡二者,从而使模型的泛化能力更强,这是我们需要关注的。
接下来,深入一下,从理论的角度初探偏差与方差的关系。
1.2 理论准备
需要有几个理论来辅助我们的推导。
(1)联合界引理(The Union Bound):假设,...为k个事件(可能独立也可能不独立),那么有:
很好理解:k个事件中,至少一个事件发生的概率至多等于这个K的事件的概率和。
(2)霍夫丁不等式(Hoeffding Inequality)
假设,...是来自于参数为 的伯努利分布的m个独立同分布的随机变量。即。
设 ,即为样本均值。对于参数 ,那么有如下不等式成立:
这条定理也被称为切尔诺夫界(Chernoff Bound)。不难看出,当 固定时,随着样本数量m增大,不等式右边减少,即左边的概率的上界变少,那么我就越有理由相信样本均值与的差异较少,用样本均值去估计就越准确。这个思想感觉和大数定理如出一辙。
(3)经验风险最小化(Empirical Risk Minimization,ERM)
为了接下来推导方便,现在都基于二分类问题()作为阐述。
给定一个训练集,独立同分布地从分布D中采集训练样本,那么对于一个假设h,我们可以将训练误差如下定义:
即训练样本中分类错误的样本占训练样本的比例。注意在学习理论中,把训练误差称为经验风险或经验误差(empirical risk or empirical error)。
在此基础上,我们定义一般误差(generalization error)为:
表示当我们从分布D中采样一个样本(x,y)时,假设h将y分类错误的概率。
训练误差是利用训练数据进行训练的结果,针对于训练集;而一般误差则表示该假设本身所包含的误差,针对于模型的本身。
假设利用线性分类器进行二分类,即 (等式右端的符号函数很常用),那么我们将假设类定义如下:
那么要使经验风险最小化(Empirical Risk Minimization,ERM),即是从假设类中寻找到一个假设 使训练误差最小:
ERM其实相当于是机器学习算法的一个抽象,也被称为最基础的机器学习算法。
这里大家可能会对假设和假设类有所疑惑。例如以二元线性模型为例,即此时假设类为,那么其中的假设即为, 等等。此时可以发现该假设类中,假设的数量是无限的。
接下来,我们区别当假设类中假设数目有限和数目无限两种情况,引出一致收敛定理。让我们继续理论的深入。
1.3 假设类H中假设个数有限
假设集 共含有k个假设。结合上文,这里讨论的是线性分类器来处理二分类问题,那么其实之中的一个假设 (g=2x+2,g=5x+4等等)便可想象为一个函数将x映射为0或者1(二分类问题,正类为1,负类为0)。那么ERM所要做的便是从中寻找一个,使得训练误差最小。
接下来,我们来探究训练误差和一般误差的关系。
针对于某个假设 属于H,考虑将一个来自于伯努利分布的随机变量Z这样定义:。即表示我们从分布中新取出一个样本,用Z来判断假设 是否将其错分。进一步,对于每一个训练中的样本,我们可以这样定义: 。那么训练误差就可以这样写:
考虑上一节的霍夫丁不等式,就可以得到训练误差与一般误差的关系:
确保你看懂了这一步。在上面的定义中,一般误差就可类比为Z,即为期待值。接着,对于整个假设类,结合联合界引理,可得到下列不等式:
上式表示:即在整个假设类中,至少有一个假设h,其训练误差与一般误差的差值的绝对值大于 ,那么存在这种情况的概率不大于 。从上式似乎可以看到训练误差和一般误差差异的雏形了。
接着,同时用1减去不等式的两端得:
(1.1)
式(1.1)也称为一致收敛(Uniform Convergence)。即表示在假设类中,所有假设的训练误差与一般误差的差值的绝对值不大于 的概率至少为 。注意(1.1)中,包含3个参数:参数,样本数量m和误差概率(等式右边)。现在将误差概率和固定,来看看m是什么情况。即对于至少的概率的条件下,当m满足什么情况时,假设类中所有假设的训练误差与一般误差的差值的绝对值不大于。
那么就有
确保你看懂一步。即在(1.1)的基础上,满足的最小的概率为。由上式中间和右边两项可推出:
(1.2)
公式(1.2)的第1行即为满足情况的最小m。第2行也称为样本复杂度。进一步,由(1.2)的第1行,可直接得到当m与固定时, 与m和 的关系:
(1.3)
进一步得到:
至此,在一致收敛中,m、、三者的关系差不多就明确了。
为了进一步探究偏差与方差的关系,在前文一致收敛的基础上,让我们继续深入,进行如下两个定义:
(1) ,即表示训练误差最小的假设。
(2),即表示一般误差最小的假设。
因为由一致收敛可得到:,将其绝对值展开,可得两个不等式:
(1)
(2)
由此进行推导:
(1.4)
第一行由不等式(1)可得。
第二行由于 是所有假设中训练误差最小的,所以就有 。
第三行同样由不等式(2)可得。
结合(1.3),由(1.4)进一步推出。当假设类包含k个假设时,m和 固定且至少在 的误差概率下,有:
到这里,豁然开朗。不等式右边第一项即为偏差衡量项,而第二项为方差衡量项。
当我们扩展模型复杂度,即寻找一个更大的假设空间时,即假设的数量增加。那么由于第一项是所有假设中一般误差最小的假设,所以第一项只会变少或者保持不变(确定你理解),对应着的便是偏差变小;而第二项由于假设数量k的增加,所以会增加,即对应着方差增加。
以上便是有限假设情况下偏差与方差的权衡,下面我们来看看无限假设集合下是什么情况。
1.3 假设类H中假设个数无限
上节中给出了当假设有限时,模型的训练误差和一般误差的关系。并由此推出所说的偏差和方差的关系。接下来,将有限数量扩展为无限数量,我们能够得到一个更一般的数学形式。
首先给出一个经验:模型复杂度常与样本复杂度成正比。即假设线性模型含有d个参数,那么样本复杂度与d常为线性关系。
这个经验看起来怪怪的,也不那么正规。接下来尝试利用学习理论来探究此中缘由。
接下来引入一个新的概念:VC维(Vapnik-Chervonenkisdimension),来进行阐述。那么什么是VC维呢?
给定一个点的集合S,对于一个假设类H。当按照任意规则对S中的点进行标记后,如果H中都存在一个假设 ,能够将这些标记过的点按照类别进行分开,我们就称H能够打散(shatter)S。看上去很抽象,结合例子看看就会明白了。假设现在S中有3个点,假设类H为二元一次函数的集合(即),那么对于3个点的样本集S,共有以下8种类别的标记方式:
可见,对于每种标记方式,假设类H中都存在一个假设h能够将S按照不同类别分开,那么此时H就能够打散S。
现在将VC维定义如下:假设类H的VC维定义为:VC(H),代表假设类能够打散的最大集合的大小。上述例子,该假设类VC维即为VC(H)=3(可验证,当S有4个点时,该假设类不能够打散S)。更一般的,对于n维线性分类器来说,其VC维等于n+1。注意一点,VC维为3,并不是代表所有的三个点的集合都能打散(例如上述例子中若3个点位于一条直接则不能打散),而是若三个点的分布存在一种情况能够被打散即可。
VC维的理论作为机器学习理论中最重要的理论之一,其数学原理不用深究。下面我们直接给出更一般的包括数量无限的假设集合中的一致收敛。
结合上节有限集合中的一致收敛定理,结合VC维,给出包含有限集和无限集中的统一的一致收敛定理。
给定假设类H,令 d = VC(H),至少在的误差概率下,有以下不等式:
进一步可得:
由此,可得到一个引理:
引理:为使 对假设集合H中的所有h,都有至少1−δ的概率成立,那么样本数量必须满足,也就是样本的复杂度必须满足:
简单来说便是,要使一个假设类 ,达到ERM的目的,那么训练样本的数量m与假设类H的VC维线性相关。
2 模型选择和正则化
2.1 模型选择
经过上一节的内容,我们已经从理论的角度初探了一个模型的偏差以及方差。我们明白训练集上表现的最好的模型,往往不是最佳模型,因为其常常存在着高方差的问题。我们需要的是一般误差最低,即泛化能力最好的模型。那么当有多个模型可供选择,例如线性模型、SVM等等,如何衡量模型的泛化能力,从而选择较好的模型呢?一个清晰的思路便是,我们将之前原本打算的训练数据分为两个数据集:训练集与测试集。将模型将测试集上的表现用来衡量模型的一般误差。这种思路称为交叉验证(Cross Validation)。接下来,看看怎么做。
2.1.1 保留交叉验证(Hold-out Cross Validation)
(1)将原有训练集按照一定比例随机(注意随机)分开,常用7:3,分为训练集与测试集。
(2)根据ERM,将模型只用于训练集上面训练,这样每个模型都可以得到一个假设 。
(3)从其中选取 满足最小,并以此作为模型。
保留交叉验证的一个问题在于,分离出来的测试集并没有对于训练有所帮助,在数据不多的情况下,留出3成多的数据没有训练有点奢侈。因此在实际中,常常使用以下方法。
2.1.2 K重交叉验证(K-Fold Cross Validation)
(1)将原有训练数据集S进行k等分,k常取10。
(2)对于一个模型 进行k(j =1,2,3...k)次训练,每次训练数据为,每次的测试数据即为。
(3)每个模型进行k次训练后,取k次测试数据的平均值作为选择依据,从而进行模型的选择。
2.1.3 留一交叉验证(Leave-one-out cross validation)
在K重交叉验证的基础上,将k重交叉验证的k等分取极端。若m为样本数量,即设k = m,那么便共进行m次训练,每次训练选取m-1个样本训练,剩下的1个样本作为测试。
2.2 特征选择
特征选择是机器学习的一个热门方向,如何为模型选择更好的特征,将会对接下来的任务起到重要的作用。以下,简单介绍几种常用思路。
2.2.1 前向与后向选择法
前向选择法思路如下:
(1)初始化选取的特征集为空集,即 。
(2)对于可供选取的每个特征都进行测试,例如每次模型都只选取一个特征进行训练并测试,选择对于模型精度提升最好的特征加入 。
(3)重复(2),直到选择完所有特征或者是达到模型的精度要求。
由前向选择法,不难得到后向选择法的思路:
(1)初始化选取的特征集为特征全集。
(2)每次从内拿出一个特征,然后对于进行测试,选择对于精度降低影响最小的特征进行删除。
(3)重复(2),直到为空集,或者取出的特征对于模型精度降低影响超过阈值。
前向选择法和后向选择法都为包装模型选择法(Wrapper Model Feature Selection)的一种。其明显的缺陷便是每次进行特征选择,都要模型进行训练并测试,计算开销较大。
2.2.2 特征过滤法
特征过滤法的思路便是计算每个特征,关于标签y的关系,并得到一个分数S(i),这里注意该符号与样本集区分。那么之后则选取分数最大的前k个特征构建模型。
我们可以采用互信息(Mutual Information,MI)的方式进行 与y的关系计算:
注意到,在上述公式中, 和y的取值域都为(0,1)。若有其他取值,可以在此基础上扩展。P(,y),p()以及p(y)都可根据经验来进行估计。
更一般的,可以利用K-L散度(Kullback-Leibler (KL) Divergence:)来进行 和y的关系衡量:
K-L散度衡量的是两种分布的差异。若 和y独立,那么K-L散度即为0。
最后还有一个细节需要注意,之前提到选取前k个特征进行模型构建,那么k该如何确定?一种标准方法是使用交叉验证来选择k的可能值。当然也有许多其他的方法。
2.2.3 贝叶斯正则化
贝叶斯正则化作为一种减少过拟合的手段被广泛使用。
还记得我们之前在逻辑回归中是如何求解参数的吗?我们通过构造最大似然(Maximum Likelihood ,ML)方程进行求解:
这种求解的思路来源统计学派中的频率学派。即在这种思路中,认为 是真实存在的、固定的一个值,然后利用最大化似然的方式去进行逼近,从而求解 。
而求解该问题也可以从另一个角度出发,也就是贝叶斯学派的角度。认为不是固定的,而是一个随机变量,即是作为一个变量而不是固定的值参与我们的算法。假设服从某先验概率分布,常常选取高斯分布,样本集S。那么我们可以写出在该样本集S条件下,的后验分布。注意, 此时作为随机变量所以用逗号进行分割,而不是用分号。:
先看分子, 为已知的先验分布, 即为在随机变量 的条件下,样本集S属于的某种分布,例如在逻辑回归中,我们有:
其中:
回头接着看的表达式。再看分母,分母即为 对 的积分,这不难理解。
那么当有新的样本x来时,我们预测的y的分布即为
(2.1)
采用上式的期望作为y的预测值,即预测的y的值如下式所示:
但是在实际中,其实很难做到对于(2.1)进行积分,因此常常采用一个最大的后验分布的点进行近似代替,这种方式也被称为MAP (Maximum a Posteriori):
上述的确比较抽象,我也理解不好,下面给出一个让大家好理解的结论吧。
利用这种思想(贝叶斯学派),最后对于结果带来的改变便是,假设我们认为 的先验分布为高斯分布,也就是,其中常常令 ,那么最后进行预测结果计算时,以线性模型为例,每个特征变为:。
这就相当于给特征都加了一个权,且权值是服从高斯分布的。注意到 的先验分布为 的高斯分布,因此许多点的值都聚集在0的附近,那么许多特征的权值便会很小且接近于0。这就相当于虽然并没有减少特征的数量,但是在计算中就少考虑了许多特征,从而就达到了减少过拟合的目的。
3 在线学习
记得在第一讲线性回归中,提到过根据每次学习的数据量的大小,可以将梯度下降分为随机梯度下降,mini-batch梯度下降,和批量梯度下降。我们之前所介绍的学习算法皆为在一个训练集上训练后,在验证集验证,最后来做预测,我们将这种学习模式叫做batch learning。那么可不可以一边训练一边预测,然后在这过程中进行参数的更新呢,这就是在线学习(online learning)的思路了。
假设有样本集 。我们有一个模型M来进行在线学习。首先输入,让模型进行预测,将预测值与做比较,若正确则输入下一个样本,错误则进行模型M中的参数更新;接着,输入进行相同操作,直到训练完整个样本集。
不难发现,在线学习最大的好处便是速度快。
4 小结
这一部分的核心在于第一节。重点在于理解偏差与方差的权衡。
首先当我们选择一个模型进行训练时,偏差是第一个需要解决的问题,因为模型对于训练集拟合得好是基本的要求,可以通过增加模型复杂度,增加训练数据进行解决。接下来,要做的便是控制偏差在可接受的范围内,减少模型的方差,从而增加模型的泛化能力,这可以通过增加训练数据、进行防止过拟合等方式实现。
方差与偏差的权衡,容易入门,难于精通。