【机器学习】什么是损失函数?

一、定义

损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

 

经典机器学习算法,他们最本质的区别是分类思想(预测f(x)的表达式)不同,有的是基于概率模型,有的是动态规划,表象的区别就是最后的损失函数不同。

 

二、分类

损失函数(loss function)分为经验风险损失函数结构风险损失函数,经验风险损失函数反映的是预测结果和实际结果之间的差别,结构风险损失函数则是经验风险损失函数加上正则项(L0、L1(Lasso)、L2(Ridge))。

 

三、常见损失函数

1、0-1损失函数(zero-one loss)

    0-1损失是指,预测值和目标值不相等为1,否则为0:

 

特点:

    (1)0-1损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用;该损失函数不考虑预测值和真实值的误差程度,也就是说只要预测错误,预测错误差一点和差很多是一样的。

    (2)感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足 [公式] 时认为相等,

[公式]

    这种损失函数用在实际场景中比较少,更多的是用俩衡量其他损失函数的效果。

 

2、绝对值损失函数

绝对值损失函数是计算预测值与目标值的差的绝对值:

 

3. log对数损失函数

主要在逻辑回归中使用,样本预测值和实际值的误差符合高斯分布,使用极大似然估计的方法,取对数得到损失函数,log对数损失函数的标准形式如下:

[公式]

    损失函数L(Y,P(Y|X))L(Y,P(Y|X))是指样本X在分类Y的情况下,使概率P(Y|X)达到最大值。

    经典的对数损失函数包括entropy和softmax,一般在做分类问题的时候使用(而回归时多用绝对值损失(拉普拉斯分布时,μ值为中位数)和平方损失(高斯分布时,μ值为均值))。

特点:

    (1) log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。

    (2)健壮性不强,相比于hinge loss对噪声更敏感。

    (3)逻辑回归的损失函数就是log对数损失函数。

 

4. 平方损失函数

实际结果和观测结果之间差距的平方和,一般用在线性回归中,可以理解为最小二乘法,平方损失函数标准形式如下:

[公式]

特点:经常应用于回归问题。

 

5. 指数损失函数(exponential loss)

指数损失函数的标准形式如下:

[公式]

特点:对离群点、噪声非常敏感。经常用在AdaBoost算法中。

 

6. 铰链损失函数(Hinge 损失函数)

Hinge损失函数标准形式如下:

[公式]

特点:

    (1)hinge损失函数表示如果被分类正确,损失为0,否则损失就为 [公式] 。SVM就是使用这个损失函数。

    (2)一般的 [公式] 是预测值,在-1到1之间, [公式] 是目标值(-1或1)。其含义是, [公式] 的值在-1和+1之间就可以了,并不鼓励 [公式] ,即并不鼓励分类器过度自信,让某个正确分类的样本距离分割线超过1并不会有任何奖励,从而使分类器可以更专注于整体的误差。

    (3) 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。

 

7. 感知损失(perceptron loss)函数

感知损失函数的标准形式如下:

[公式]

特点:是Hinge损失函数的一个变种,Hinge loss对判定边界附近的点(正确端)惩罚力度很高。而perceptron loss只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比Hinge loss简单,因为不是max-margin boundary,所以模型的泛化能力没 hinge loss强。

 

8. 交叉熵损失函数 (Cross-entropy loss function)

交叉熵损失函数的标准形式如下:

[公式]

注意公式中 [公式] 表示样本, [公式] 表示实际的标签, [公式] 表示预测的输出, [公式] 表示样本总数量。

特点:

    (1)本质上也是一种对数似然函数,可用于二分类和多分类任务中。

    二分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):

[公式]

    多分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):

[公式]

    (2)当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。

 

补充:对数损失函数和交叉熵损失函数应该是等价的。下面说明由知乎用户@Areshyy提供

 

 

 参考:https://zhuanlan.zhihu.com/p/58883095

           https://blog.csdn.net/chkay399/article/details/81878157

 

posted @   ycq2022  阅读(2157)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示