机器学习(5)——代价函数误差分析

作者: WarrenRyan | 来源:发表于2018-08-31 23:26 被阅读15次

    代价函数简介

      代价函数(Cost Function),通常也被称为损失函数(Loss Function)。这类函数是机器学习乃至整个数据科学学科中最为重要的一类函数模型,它直观的将数据的拟合程度呈现在我们面前。对于机器学习的目标,无非也就是最小化误差,也就是让代价函数最小化。训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过拟合时添加的正则化项也是加在代价函数后面的。因此我觉得有必要花点时间进行讨论一番。
      我们先做一个代价函数的简单的定义,代价函数:假定有样本数据(x_i,y_i),函数模型为f,参数为\omega。拟合曲线用f(\omega^Tx)表示。代价函数是一个有点抽象的东西,理论上能反应拟合函数f(\omega^Tx)与真实值y差异的函数都可以用来作为我们的代价函数。通常代价函数写成C(\theta),不过我们一般会进行求均值,写成J(\theta)。代价函数是一个关于\theta的函数,这点很好理解,因为我们知道,对于给定的算法,误差期望应该是一定的,但是拟合函数参数的变化却会影响误差。算法在寻找最优参数的过程,我们记为:
    \underset{\theta}{min}J(\theta)

    几种常见的代价函数

      平均绝对误差(L1误差函数): 平均绝对误差(MAE)其实就是类似统计学中的标准差,它的具体公式如下:
    MAE=\frac{\sum_{m=0}^m{\left |y-y_i \right |}}{m}
      它的图像:

    MAE.png
      均方误差函数(L2误差函数): 均方误差函数(MSE)也就是我们熟知的方差,它广泛的运用在一些线性问题上,下式中底的2,是为了方便求导约去,并无实际意义,它的公式如下:
    MSE.png
      平滑平均绝对误差(Huber损失): Huber损失相比于平方损失来说对于异常值不敏感,但它同样保持了可微的特性。它基于绝对误差但在误差很小的时候变成了平方误差。我们可以使用超参数 Huber.png
      对于Huber损失来说, Log-Cosh.png
      它的优点在于对于很小的误差来说 log(cosh(x))\approx\frac{x^2}{2} ,而对于很大的误差则与 |x|-log2 很相近。这意味着log cosh损失函数可以在拥有MSE优点的同时也不会受到异常值的太多影响。它拥有Huber的所有优点,并且在每一个点都是二次可导的。
      但是Log-cosh损失并不是完美无缺的,它还是会在很大误差的情况下梯度和 hessian 变成了常数。
      交叉熵CrossEntropy代价函数: 我们在之前已经极为详细的讲述过交叉熵的概念了,交叉熵通常用于分类问题上的代价函数,尤其在逻辑回归,神经网络中使用的更多。
    J(\omega)=-\frac{1}{m}[\sum_{i=1}^my^ilogh_\omega(x^i)+(1-y^i)log(1-f_\omega(x^i))]

    一点比较:

      均方误差(MSE)在误差较大点时的损失远大于平均绝对误差(MAE),它会给异常值赋予更大的权重,模型会全力减小异常值造成的误差,从而使得模型的整体表现下降。
      所以当训练数据中含有较多的异常值时,平均绝对误差(MAE)更为有效。当我们对所有观测值进行处理时,如果利用MSE进行优化则我们会得到所有观测的均值,而使用MAE则能得到所有观测的中值。与均值相比,中值对于异常值的鲁棒性更好,这就意味着平均绝对误差对于异常值有着比均方误差更好的鲁棒性。
      但MAE也存在一个问题,特别是对于神经网络来说,它的梯度在极值点处会有很大的跃变,及时很小的损失值也会长生很大的误差,这很不利于学习过程。为了解决这个问题,需要在解决极值点的过程中动态减小学习率。MSE在极值点却有着良好的特性,及时在固定学习率下也能收敛。MSE的梯度随着损失函数的减小而减小,这一特性使得它在最后的训练过程中能得到更精确的结果。

      当然还有很多的代价函数,例如分位数损失等等,我们在这里就不进行一一展开讲述了,感兴趣的读者可以自行了解。
      下一章,我们将仔细的讲解如何通过梯度进行最小化我们的代价函数。

    Reference

    5 Regression Loss Functions All Machine Learners Should Know
    MachineLearning CostFunction

    我的掘金:WarrenRyan

    我的简书:WarrenRyan

    欢迎关注我的博客获得第一时间更新 https://blog.tity.online

    我的Github:StevenEco

    相关文章

      网友评论

      • ArvinLiu_8422:请教一个问题,在线性回归中,所谓的误差项是不是就是代价函数呢?
        WarrenRyan:@ArvinLiu_8422 不叫推导,是优化
        ArvinLiu_8422:@WarrenRyan 谢谢,现在我也理解了,他们都是用来推导关于参数theta的函数的。
        WarrenRyan:@ArvinLiu_8422 是的。
      • ArvinLiu_8422:我觉得第一段话,给了我很大的提示,就是关于代价函数和误差项的解释。

      本文标题:机器学习(5)——代价函数误差分析

      本文链接:https://www.haomeiwen.com/subject/abfywftx.html