但是这样做,明显是很模糊主观的,而且也完全不知为何会表现出这样的泛化性能。
本文所说的这个分解方法就是要在理论上去分析一下,到底泛化误差由什么组成,由哪些因素影响。我个人觉得这个理论分析法的贡献是非常非常大的。
即:分类器的泛化性能是由学习算法的能力,数据的充分性,以及学习任务本身的难度共同决定的。
推导过程是很简单的,并不难,但是在在推导中,用回归会很方便,所以以回归任务为例子 y D y_D yD是数据集中的采样值,回归任务中,比如是1.2,但是也许其真实值y是1.25,这个是由于数据集采集过程中引入的无法避免的误差,即我们数据集中数据和真实状态的区别,这个差距越大,我们的学习算法性能再好也无法完美分类,所以这个差异刻画的是问题本身的难度,我们称之为噪声,是非常形象的。
比如,很多用传感器采集的数据,在采集过程中,不可避免地会引入噪声,使得数据集中的数据和真实数据有一定差异,这个差异就是噪声,比如采集脑电波信号EEG时,电极和电信号之间隔着一层头皮,不可避免的引入了头皮以及头皮和大脑皮层中间液体的电信号噪声。 但是后续的分类或者回归任务只能使用数据集中有噪声的数据,训练出来的模型却要用于真实数据的分类,所以当然会性能较差。
虽然这里多次用了期望和方差,但是真的很简单。 两个红框计算结果为0:
红框1= E [ f ( x ; D ) . f ˉ ( x ) − y D . f ( x ; D ) − ( f ˉ ( x ) ) 2 + f ˉ ( x ) . y D ] = E[f(x;D).\bar f(x)-y_D.f(x;D)-(\bar f(x))^2 + \bar f(x).y_D]= E[f(x;D).fˉ(x)−yD.f(x;D)−(fˉ(x))2+fˉ(x).yD]= f ˉ ( x ) . f ˉ ( x ) − f ˉ ( x ) . y D − ( f ˉ ( x ) ) 2 + f ˉ ( x ) . y D = 0 \bar f(x).\bar f(x)-\bar f(x).y_D-(\bar f(x))^2 + \bar f(x).y_D=0 fˉ(x).fˉ(x)−fˉ(x).yD−(fˉ(x))2+fˉ(x).yD=0
红框2= E [ f ˉ ( x ) . y − f ˉ ( x ) . y D − y 2 + y . y D ] = E[\bar f(x).y-\bar f(x).y_D-y^2+ y.y_D]= E[fˉ(x).y−fˉ(x).yD−y2+y.yD]=
f ˉ ( x ) . E [ y − y D ] − E [ y . ( y − y D ) ] = 0 \bar f(x).E[y-y_D]-E[y.(y-y_D)]=0 fˉ(x).E[y−yD]−E[y.(y−yD)]=0 因为 E [ y − y D ] E[y-y_D] E[y−yD]是噪声的期望,是0.
算法的期望预测和真实结果的偏离程度
度量的是同样大小的训练集的波动导致的学习性能的变化
表示在当前任务上任何学习算法能够达到的期望泛化误差的下界
这三项中,只有偏差和方差是我们可以左右的,我们能做的就是:最小化偏差和方差。
但是偏差和方差又是冲突的。。。这就是偏差-方差窘境。(bias-variance dilemma)
在训练不足时,即欠拟合,学习器(分类器/回归器)的拟合能力还不够强,这时候偏差主导了泛化误差。随着训练程度加深,学习器的拟合能力足够强了,偏差不大了。但是训练数据的扰动会显著影响学习器,即训练数据发生轻微扰动,学习器都会显著变化,这就是我们常说的过拟合,即学习器学到了训练数据中自身的非全局的特性。这时候泛化误差由方差主导。如图: 这个图简直太真实太常见太形象了。。以前一直莫名其妙,怎么会这样,泛化误差怎么到后面还增大了,现在终于明白了,原理是因为方差越来越大!因为学习器越来越过拟合,过拟合的越来越严重!
而数据量非常大的场合,一般不会出现上图这种走势的训练图,而是
偏差大时,说明学习器不行,应该增大学习器的复杂度比如增加NN层数或者增加训练次数,这时候靠增大数据量是于事无补的。
下图是一个高偏差示例,数据其实是二次函数走向,但是偏要用一次函数去拟合,那么偏差就很大。就算增大数据量,拟合出来的还是一次函数直线,泛化误差还是很大。所以偏差表示学习器本身的学习能力,这里一次函数无论如何也不可能学到二次曲线的特性的。
而方差大时,则说明学习器没问题,是数据太少了,这种情况下,增加数据量可以显著解决问题。
示例:
我们就是要在泛化误差停止减小,转而增大的那一点停下来,停止训练,这时候的模型就是最佳的,偏差和方差之和达到了最小。 即:我们要找一个最佳的bias-variance trade-off.
之前常画的是loss曲线和精度曲线。而误差曲线一般是指上面几张图这样,增大训练集的规模,观察训练和测试误差的变化,从而判断模型的学习状况,是高偏差还是高方差,从而针对性解决。
一个有效的正则化是有利的 ‘‘交易’’,也就是能显著减少方差而不过度增加偏差。