【机器学习】损失函数(Loss Function)全总结(2023最新整理)关键词:Logistic、Hinge、Exponential、Modified Huber、Softmax、L1、L2正则化

目录

一、定义

二、损失函数

    1. 回归损失函数

        1.1平方损失函数(quadratic loss function)

        1.2 绝对(值)损失函数(absolute loss function)

        1.3 对数损失函数(logarithmic loss function)

        1.4 Huber损失 (huber loss) 

        1.5 图像对比-优缺点

    2. 分类损失函数

        2.1 0-1损失函数(0-1 loss function)

        2.2 对数似然损失函数(Logistic loss)

        2.3 合页损失函数(Hinge loss)

        2.4 指数损失函数(Exponential loss)

        2.5 修正Huber损失函数(Modified Huber loss)

        2.6 Softmax损失(Softmax loss)

        2.7 图像对比-优缺点

    3. 正则化

        3.1 定义

        3.2 L1和L2正则化

        3.3 求解

        3.4 多角度理解正则化

一、定义

损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差,度量模型一次预测的好坏
代价函数(Cost Function)=成本函数=经验风险:是定义在整个训练集上的,是所有样本误差的平均,也就是所有损失函数值的平均度量平均意义下模型预测的好坏。
目标函数(Object Function)=结构风险=经验风险+正则化项=代价函数+正则化项:是指最终需要优化的函数,一般指的是结构风险。正则化项(regularizer)=惩罚项(penalty term)。

二、损失函数

    1. 回归损失函数

        1.1平方损失函数(quadratic loss function)

        是MSE的单个样本损失,又叫平方损失(squared loss) 是指预测值与实际值差的平方。有时候为了求导方便,在前面乘上一个1/2。

        1.2 绝对(值)损失函数(absolute loss function)

        是MAE单个样本损失,又叫绝对偏差(absolute Loss)该损失函数的意义和上面差很少,只不过是取了绝对值而不是求平方和,差距不会被平方放大。

        1.3 对数损失函数(logarithmic loss function)

        又称对数似然损失函数(loglikelihood loss function)这个损失函数就比较难理解了。事实上,该损失函数用到了极大似然估计的思想。

        P(Y|X)通俗的解释就是:在当前模型的基础上,对于样本X,其预测值为Y,也就是预测正确的几率。由概率乘法公式可得,概率之间可以相乘,为了将其转化为加法,我们将其取对数。最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。

        下面说两点:

第一点就是对数损失函数很是经常使用。logistic回归,softmax回归等都用的是这个损失。

第二点就是对于这个公式的理解。这个公式的意思是在样本x在分类为y的状况下,咱们须要让几率p(y|x)达到最大值。就是利用目前已知的样本分布,找到最有可能致使这种分布的参数值。

        1.4 Huber损失 (huber loss) 

        其中y是真实值,f(x)是预测值,δ 是Huber Loss的参数,当预测偏差小于 δ 时,它采用平方误差,当预测偏差大于 δ,采用线性误差。相比于最小二乘的线性回归,Huber Loss降低了对异常点的惩罚程度,是一种常用的robust regression的损失函数。

我们注意到Huber Loss中增加了一个超参数 δ

参数 δ 在其中起到了一定的选择作用,即当预测偏差小于 δ 时 采用平方误差,即我们所说到的MSE,而在预测偏差大于 δ 时 则采用线性误差 (类似MAE)

一般情况下 δ 可通过交叉验证得到最佳值 

由此可知 Huber Loss 在应用中是一个带有参数用来解决回归问题的损失函数

        1.5 图像对比-优缺点

        其中最经常使用的是MSE平方损失,然而其缺点是对于异常点会施以较大的惩罚,于是不够robust。若是有较多异常点,则MAE绝对值损失表现较好,但绝对值损失的缺点是在y−f(x)=0y−f(x)=0处不连续可导,于是不容易优化。Huber损失是对两者的综合,当|y−f(x)||y−f(x)|小于一个事先指定的值δ时,变为平方损失,大于δ时,则变成相似于绝对值损失,所以也是比较robust的损失函数。

        三者的图形比较以下:

优点

增强MSE的离群点鲁棒性 减小了对离群点的敏感度问题

误差较大时 使用MAE可降低异常值影响 使得训练更加健壮

Huber Loss下降速度介于MAE与MSE之间 弥补了MAE在Loss下降速度慢的问题 而更接近MSE

缺点

额外设置超参数 δ

参考:损失函数 Loss Function 之 Huber loss - 知乎 (zhihu.com)

    2. 分类损失函数

        2.1 0-1损失函数(0-1 loss function)

        也就是说,当预测错误时,损失函数为1,当预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的偏差程度。只要错误,就是1。

在这里插入图片描述

        0-1损失不连续、非凸、不可导,难以使用梯度优化算法,因此日常很少使用。

        2.2 对数似然损失函数(Logistic loss)

        Logistic Loss为Logistic Regression中使用的损失函数。

        2.3 合页损失函数(Hinge loss)

        Hinge loss通常用于SVM分类算法中的损失函数。

在这里插入图片描述

        Hinge loss为svm中使用的损失函数,使得yf(x)>1的样本损失皆为0,由此带来了稀疏解,使得svm仅通过少许的支持向量就能确定最终超平面

         此外,以下形式也是Hinge loss的公式表达式:

        第一项是损失,第二项是正则化项。这个公式就是说 yi(w·xi+b)大于1时loss为0, 否则loss为 1−yi(w·xi+b) 。对比感知机的损失函数 [−yi(w·xi+b)]来说,Hinge loss不仅要分类正确,而且置信度足够高的时候,损失才为0,对学习有更高的要求。对比一下感知机损失和Hinge loss的图像,明显Hinge loss更加严格。

        2.4 指数损失函数(Exponential loss)

        Exponential Loss 一般多用于AdaBoost 中。因为使用 Exponential Loss 能比较方便地利用加法模型推导出 AdaBoost算法。该损失函数对异常点较为敏感,相对于其他损失函数robust性较差。

在这里插入图片描述

        2.5 修正Huber损失函数(Modified Huber loss)

        Huber Loss整合MAE和MSE的优点,稍作改进,同样可用于分类问题,称为Modified Huber Loss。

在这里插入图片描述

        modified huber loss结合了hinge loss和logistic loss的优势,既能在yf(x)>1时产生稀疏解提升训练效率,又能进行几率估计。另外其对于(yf(x)<−1)样本的惩罚以线性增长,这意味着受异常点的干扰较少,鲁棒性较好。scikit-learn中的SGDClassifier一样实现了modified huber loss。

        2.6 Softmax损失(Softmax loss)

        机器学习模型的 Softmax 层,正确类别对于的输出是:

在这里插入图片描述

        其中,C 为类别个数,小写字母 s 是正确类别对应的 Softmax 输入,大写字母 S 是正确类别对应的 Softmax 输出。

在这里插入图片描述

在这里插入图片描述

        上图中,当 s << 0 时,Softmax 近似线性;当 s>>0 时,Softmax 趋向于零。Softmax 同样受异常点的干扰较小,多用于神经网络多分类问题中。

        2.7 图像对比-优缺点

        值得注意的是上图中modified huber loss的走向和exponential loss差很少,并不能看出其robust的属性。其实这和算法时间复杂度同样,成倍放大了以后才能体现出巨大差别:

    3. 正则化

        3.1 定义

        在这里我们首先需要明白结构风险最小化原理:

在经验风险最小化(训练误差最小化)的基础上,尽可能采用简单的模型,以提高模型泛化预测精度

        我们所谓的正则化,就是在原来 Loss Function 的基础上,加了一些正则化项,或者叫做模型复杂度惩罚项(防止模型过拟合)。以我们的线性回归为例子。

        3.2 L1和L2正则化

        优化目标(损失函数):

        加上L1正则项(lasso回归):

        加上L2正则项(Ridge回归):

        下面我们需要理解加了正则化项之后,对于目标函数求解的时候,最终解有什么变化。我们从图像角度来理解:

        假设X是一个二维样本,那么要求解的参数也 也是二维的。下图叫做原函数曲线等高线图。目标函数在图中的等高线(同颜色)每一组 , ​ 带入值都想同,这里代表着多组解。

 原函数等高函数图

加入L1和L2正则项后的函数图像

对比两幅图我们可以看出来:

  • 如果不加L1和L2正则项,对于线性回归损失函数这样的凸函数,我们的最终结果就是最里面紫色小圈圈等高线上的点。

  • 当加入L1正则化的时候,我们先画出|w1|+|w2|=F的图像,就是这个菱形。此时,我们的目标不仅是原来的曲线值要越小(接近中心紫色圈圈),还要使得这个菱形越小越好(F越小越好)。那么如果和原来的解一样的话,这个菱形明显很大。

L1范数求解图 

        3.3 求解

         3.4 多角度理解正则化

        详情请见:比较全面的L1和L2正则化的解释 (qq.com)

L1正则化和L2正则化的区别:

        L1正则化就是在 loss function 后面加上L1范数,这样比较容易求到稀疏解。L2 正则化是在 loss function 后面加 L2范数(平方),相比L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(不等0)的维度比较多,降低模型的复杂度。

loss function 部分参考:

https://zhuanlan.zhihu.com/p/358103958

https://www.zhihu.com/question/47746939

https://blog.csdn.net/dream_to_dream/article/details/117745828

http://www.javashuo.com/article/p-fohpuvmc-ms.html

正则化 部分内容参考:

https://www.jianshu.com/p/76368eba9c90

https://zhuanlan.zhihu.com/p/418228948

猜你喜欢

转载自blog.csdn.net/Next_SummerAgain/article/details/129550772
今日推荐