机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

课程主页

课程视频和PPT

上节课我们主要讲了为了避免overfitting,可以使用regularization方法来解决。在之前的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation上加上一个regularizer,生成机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,将其最小化,这样可以有效减少模型的复杂度,避免过拟合现象的发生。那么,机器学习领域还有许多选择,如何保证训练的模型具有良好的泛化能力?本节课将介绍一些概念和方法来解决这个选择性的问题。

目录

1. Model Selection Problem

2. Validation

3. Leave-One-Out Cross Validation

4. V-Fold Cross Validation

5. 总结


1. Model Selection Problem

机器学习模型建立的过程中有许多选择,例如对于简单的二元分类问题,首先是算法A的选择,有PLA,pocket,linear regression,logistic regression等等;其次是迭代次数T的选择,有100,1000,10000等等;之后是学习速率η的选择,有1,0.01,0.0001等等;接着是模型特征转换Φ的选择,有linear,quadratic,poly-10,Legendre-poly-10等等;然后是正则化regularizer的选择,有L2,L1等等;最后是正则化系数λ的选择,有0,0.01,1等等。不同的选择搭配,有不同的机器学习效果。我们的目标就是找到最合适的选择搭配,得到一个好的g,构建最佳的机器学习模型。

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

假设有M个模型,对应有机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,即有M个hypothesis set,演算法为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,共M个。我们的目标是从这M个hypothesis set中选择一个模型机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,通过演算法机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation在样本集D上训练,得到一个最好的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,使其机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation最小.所以,问题的关键就是机器学习中如何选择到最好的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.

考虑有这样一种方法,对M个模型分别计算使机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation最小的g,再横向比较,取其中能使机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation最小的模型的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

但是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(训练集上的误差)足够小并不能表示模型好,反而可能表示训练的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation发生了过拟合,泛化能力很差。而且这种“模型选择+学习训练”的过程,它的VC Dimension是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,模型复杂度增加。总的来说,泛化能力差,用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation来选择模型是不好的。

另外一种方法,如果有这样一个独立于训练样本的测试集,将M个模型分别在训练集上训练,得到每个模型对应的最好的g,分别在测试集上进行测试,看一下机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(测试集上的误差)的大小,则选取使得机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation最小的假设g(记为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation)对应的模型(对应一组超参数配置)作为最佳模型:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

这种测试集验证的方法,根据finite-bin Hoffding不等式,可以得到:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

由上式可以看出,模型个数M越少,测试集数目越大,那么机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation越小,即机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation越接近于机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.

 

下面比较一下之前讲的两种方法,第一种方法使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation作为判断基准,使用的数据集就是训练集D本身(用训练集训练,再用训练集验证);第二种方法使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation作为判断基准,使用的是独立于训练集D之外的测试集(用训练集训练,再用测试集验证)。前者不仅使用D来训练得到不同的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(每个模型对应的最好的假设),而且又使用训练集D来验证,从中选择最好的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,那么机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation对未知数据并不一定泛化能力好。举个例子,这相当于老师用学生做过的练习题再来对学生进行考试,那么即使学生得到高分,也不能说明他的学习能力强。所以最小化机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的方法并不科学。而后者使用的是独立于D的测试集,相当于新的考试题能更好地反映学生的真实水平,所以最小化机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation更加理想。

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

但是,我们拿到的都是训练集D,测试集是拿不到的。所以,寻找一种折中的办法,我们可以使用已有的训练集D来创造一个验证集validation set,即从D中划出一部分作为验证集机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.D另外的部分作为训练集使用(用于训练模型),机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation用来测试各个模型的好坏,最小化机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(在机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation上的误差),从而选择最佳的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

2. Validation

从训练集D中抽出一部分K个数据作为验证集机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation对应的error记为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation。这样做的一个前提是保证机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation独立同分布(iid)于P(x,y),也就是说机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的选择是从D中平均随机抽样得到的(可以先把原始的数据集D随机打乱,在取出k个数据作为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation),这样能够把机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation联系起来。D中去除机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation后的数据就是供各个模型(每个模型对应一组超参数配置,对应一个假设集)训练的数据机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,其大小为N-k。每个模型在机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation上进行训练得到各自最好的假设(对应最好的一组参数)机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

假如D共有1000个样本,那么可以选择其中900个作为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,剩下的100个作为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation。使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation训练模型,得到最佳的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation进行验证,得到如下Hoffding不等式:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

假设有M种模型hypothesis set,机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的大小为K,每个模型m在机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation上进行训练得到各自最好的假设(可以设置一定的迭代次数进行训练,优化参数,最后得到的参数对应的假设作为最好的假设;或者在训练的过程中,每迭代一定的次数,监控得到的假设在验证集上的表现,当假设在验证集上的误差不再下降时,提前终止训练,此时的假设就是最好的假设),计算每个模型对应的最好的假设在验证集上的误差,横向比较,得到使验证集误差最小的假设作为最终最好的假设,其对应的模型机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,就是最优的模型(对应一组最优的超参数配置)。

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

现在由于数量为N的总样本D的一部分K作为验证集,那么只有N-k个样本可供训练。从机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation中得到最好的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,而总样本D对应的最好的假设为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.根据之前的leraning curve很容易知道,训练样本越多,得到的模型越准确,其hypothesis越接近target function,即D的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation要小:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

所以,我们通常的做法是通过机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation来选择最好的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation对应的模型机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(对应一组最优的超参数配置),再把这个最好的模型机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation在全体样本集D上进行训练(设置一定的迭代次数,优化更新参数,得到最好的一组参数,对应机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation),最终得到最好的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

总结一下,使用验证集进行模型选择的整个过程为:先将D分成两个部分,一个是训练集机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,一个是验证集机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation。若有M个模型(每个模型对应一个假设集,对应一组超参数配置),那么分别把每个模型在机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation上进行训练(可以设置一定的迭代次数进行训练,优化参数,最后得到的参数对应的假设作为最好的假设;或者在训练的过程中,每迭代一定的次数,监控得到的假设在验证集上的表现,当假设在验证集上的误差不再下降时,提前终止训练,此时的假设就是最好的假设,对应一组最好的参数),分别得到每个模型对应的最好的假设机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(对应一组最好的参数),再用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation对每个机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation进行验证,选择表现最好(机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation最小)的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,记为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,则其对应的模型(对应一组最好的超参数配置)被选择。最后使用该模型在整个D上进行训练(设置一定的迭代次数,优化更新参数,得到最好的一组参数,对应机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation),得到最终的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation。下图展示了整个模型选择的过程:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

不等式关系满足:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

下面我们举个例子来解释这种模型选择的方法的优越性,假设有两个模型:一个是5阶多项式机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,一个是10阶多项式机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.通过不使用验证集和使用验证集两种方法对模型选择结果进行比较,分析结果如下:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

图中,横坐标表示验证集数量K,纵坐标表示机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation大小。黑色水平线表示没有验证集完全使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation进行判断基准,那么机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation更好一些,但是这种方法的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation比较大,而且与K无关。黑色虚线表示测试集非常接近实际数据,这是一种理想的情况,其机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation很小,同样也与K无关,实际中很难得到这条虚线。红色曲线表示使用验证集,但是最终选取的矩是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,其趋势是随着K的增加,它对应的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation先减小再增大,当K大于一定值的时候,甚至会超过黑色水平线。蓝色曲线表示也使用验证集,最终选取的是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,其趋势是随着K的增加,它对应的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation先缓慢减小再缓慢增大,且一直位于红色曲线和黑色直线之下。从此可见,蓝色曲线对应的方法最好,符合我们之前讨论的使用验证集进行模型选择效果最好。

这里提一点,当K大于一定的值时,红色曲线会超过黑色直线。这是因为随着K的增大,机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation增大,但可供模型训练的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation在减小,那得到的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation不具有很好的泛化能力,即对应的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation会增大,甚至当K增大到一定值时,比机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation模型更差。

那么,如何设置验证集K值的大小呢?根据之前的分析:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

当K值很大时,机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,但是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation相差很大;当K值很小是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,但是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation可能相差很大。所以有个折中的办法,通常设置机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(原始数据集的20%作为验证集,剩下的80%作为训练集).值得一提的是,划分验证集,通常并不会增加整体时间复杂度,反而会减少,因为训练数据变少了。

 

3. Leave-One-Out Cross Validation

假如考虑一个极端的例子,k=1,也就是说验证集大小为1,即每次只用一组数据对机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation进行验证。这样做的优点是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,

但是机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation可能相差很大.为了避免机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation相差很大,每次从D中取一组作为验证集,直到所有样本都作过验证集,共计算N次,最后对验证误差求平均,得到机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,这种方法称之为留一法交叉验证,表达式为:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

这样求平均的目的是为了让机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation尽可能地接近机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation.

下面用一个例子图解留一法的过程:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

如上图所示,要对二维平面上的三个点做拟合,上面三个图表示的是线性模型,下面三个图表示的是常数模型。对于两种模型,分别使用留一交叉验证法来计算机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,计算过程都是每次将一个点作为验证集,其他两个点作为训练集,最终将得到的验证误差求平均值,就得到了 机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation ,比较两个值的大小,取值小对应的模型即为最佳模型(对应一组最优的超参数配置)。

每个模型(每组超参数配置)都要训练N次(若有M个模型就要训练M*N次),每次其中N-1个样本作为训练集,剩余的一个作为验证集,计算N次验证误差的平均值,找出验证误差平均值最小的模型,就是最佳模型(把这个模型在全体数据集上再进行训练)。

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

接下来,我们从理论上分析Leave-One-Out方法的可行性,即机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation是否能够保证得到比较理想的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation?假设有不同的数据集D,它的期望分布记为机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,则其机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation可以通过推导,等于机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的平均值。由于N-1近似为N,机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的平均值也近似等于机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的平均值。

具体推导过程如下:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

最终我们得到的结论是 机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的期望值和机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的期望值是相近的,这代表得到了比较理想的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation,Leave-One-Out方法是可行的。

举一个例子,使用两个特征:Average Intensity和Symmetry加上这两个特征的非线性变换(例如高阶项)来进行手写数字识别。平面特征分布如下图所示:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

Error与特征数量的关系如下图所示:

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

从图中我们看出,随着特征数量的增加,机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation不断减小,机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation先减小再增大,虽然 机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation是不断减小的,但是它与机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的差距越来越大,发生了过拟合,泛化能力太差。而机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(留1法得到的平均验证误差)与机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的分布基本一致,能较好地反映机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation的变化。所以,我们只要使用Leave-One-Out方法得到使机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation最小的模型,就能保证其机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation足够小。下图是分别使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

 

很明显可以看出,使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation发生了过拟合,而机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation分类效果更好,泛化能力强。
 

4. V-Fold Cross Validation

接下来我们看看Leave-One-Out可能的问题是什么。首先,第一个问题是计算量,假设N=1000,那么就需要计算1000次的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation(每个模型需要训练1000次),再计算其平均值。当N很大的时候,计算量是巨大的,很耗费时间。第二个问题是稳定性,例如对于二分类问题,取值只有0和1两种,预测本身存在不稳定的因素,那么对所有的机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation计算平均值可能会带来很大的数值跳动,稳定性不好。所以,这两个因素决定了Leave-One-Out方法在实际中并不常用。

针对Leave-One-Out的缺点,我们对其作出了改进。Leave-One-Out是将N个数据分成N分,那么改进措施是将N个数据分成V份(V<<N,例如V=10),计算过程与Leave-One-Out相似。这样可以减少总的计算量,又能进行交叉验证,得到最好的g,这种方法称为V-折交叉验证。其实Leave-One-Out就是V-折交叉验证的一个极端例子(V=N)。

机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation

将数据集划分为V份(V<<N,如V=5,10等),每个模型(每组超参数配置)都要训练V次(若有M个模型就要训练M*V次),每次其中V-1份作为训练集,剩余的一份作为验证集,计算V次验证误差的平均值,找出验证误差平均值最小的模型,就是最佳模型(把这个模型在全体数据集上再进行训练)。

所以呢,一般的Validation使用V-折交叉验证来选择最佳的模型。值得一提的是Validation的数据来源也是样本集中的,所以并不能保证交叉验证的效果好,它的模型一定好。只有样本数据越多,越广泛,那么Validation的结果越可信,其选择的模型泛化能力越强。 

5. 总结

 

 本节课主要介绍了Validation验证。先从如何选择一个好的模型开始切入,例如使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation都是不太好的,最终使用机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation来进行模型选择。然后详细介绍了Validation的过程。最后,介绍了Leave-One-Out和V-Fold Cross两种验证方法,比较它们各自的优点和缺点,实际情况下,传统机器学习方法V-Fold Cross更加常用;对于深度学习方法,由于模型训练的成本非常高,一般不进行V-Fold交叉验证(有条件的话,V-Fold交叉验证进行模型选择效果会更好),只留出一部分作为验证集(约为全体数据集的20%),剩下的作为训练集,来进行模型选择(如第一部分介绍的那样)。