统计学习必学的十个问题:理论与实践
上QQ阅读APP看书,第一时间看更新

1.2 性能度量和损失函数

上一节中所说的误差在数据集上的具体体现就是学习器的性能度量。误差是指真实值y与预测值yx)的不一致性,回归问题的目标值是连续的,我们可以直接对这两者(或这两者的单调函数)求差,差越小则性能越好。分类问题的目标值是离散的,我们将分类错误的样本占总体样本的比例定义为该数据集上的错误率,错误率越小,性能越好。

虽然我们的目标是缩小真实值和预测值的不一致性,但直接优化差和错误率是非常困难的,取而代之的是我们会优化损失函数(loss function),损失函数是关于真实值和预测值的光滑连续函数,确保我们可以采用优化算法来快速迭代求解。同时损失函数需要保证在优化它的时候,原本的差或者错误率也得到了优化,所以某些情况下损失函数也会被叫作替代损失(surrogate loss)。替代损失是误差的上界,从而保证只优化损失函数,就可以改善误差。如图1.1所示,可以看到三种替代损失函数,分别是Log Loss(见第4章),Hinge Loss(见第6章)和Exponential Loss(见第8章),它们均是0-1 Loss的上界。

虽然我们在回归中经常直接将平方损失(mean squared error)作为我们的度量,它也可以直接作为损失函数,从而避免寻找替代损失。但是通过平方损失和绝对值损失(mean absolute error)的比较,如图1.2所示,可以发现MSE会在真实值和预测值差别比较大的时候给出更大的值,即便存在少量严重偏离预测分布的数据,经过平均化,仍然会对整个损失产生大的影响。

我们就可以采用Huber Loss这类方法参数化普通的Loss,它可以削弱异常值的影响,定义为:

图1.1 横轴为决策函数,纵轴为当目标值为1时的损失,4条线分别代表不同的损失函数

图1.2 横轴为真实值与预测值的差,纵轴为性能评估,蓝线和橙线分别代表MSE和MAE

参数ε的意义非常明确,只有在预测值与真实值小于一定范围时,(ε)就用平方损失,否则,就使用绝对值损失,参数ε表示距离多远就计算为异常值,不让其占比过多。最终形成的损失函数值随真实值与预测值变化的曲线如图1.3所示,Huber Loss(ε=5)的曲线介于MSE和MAE之间,在差别越来越大的时候取到了折中的结果。既然如此,我们为什么不直接用MAE呢?因为MAE对参数的梯度总是个定值,需要动态调整优化算法的学习率才能达到好的效果。

图1.3 横轴为真实值与预测值的差,纵轴为性能评估,绿线表示Huber Loss

在深度学习中,著名的对抗生成网络就可以被看作是采用了一种特殊的损失函数,因为真实图片与虚假图片不方便采用数学定义,所以它并没有采用显式的数学公式,而是将生成器的输出进入到判别器的输入,用判别器本身来作为损失函数。