机器学习之常见的损失函数(loss function)

article/2025/10/28 10:25:31

解决一个机器学习问题主要有两部分:数据和算法。而算法又有三个部分组成:假设函数、损失函数、算法优化。我们一般在看算法书或者视频教学时,更多的是去推算或者说参数估计出其假设函数,而往往不太注重损失函数,但是损失函数在面试时却是一个很重要的知识点。所以仅在此以自己理解的方式总结一些常见的损失函数,作为笔记方便日后复习。

参考文章:

一、总览

在机器学习中,通常把模型关于单个样本预测值与真实值的差称为损失,损失越小,模型越好,而用于计算损失的函数称为损失函数。本文介绍的主要有以下的一些损失函数。

  1. logLoss (对数损失函数,LR)

  2. hinge loss (合页损失函数,SVM)

  3. exp-loss (指数损失函数,AdaBoost)

  4. cross-entropy loss (交叉熵损失函数,Softmax)

  5. quadratic loss (平方误差损失函数,线性回归)

  6. absolution loss (绝对值损失函数, )

  7. 0-1 loss (0-1损失函数)

二、 logLoss (对数损失函数,也叫binary cross entropy,二元交叉熵损失,LR)

逻辑回归模型中,通过把线性拟合分类边界的结果送入sigmoid函数,从而得到预测为正的概率。那么很多人可能认为logistics regression模型的损失函数为平方损失函数?其实不是,而是logLoss。为什么是logloss呢?在逻辑回归推导过程中,我们假设样本不是0就是1,即假设样本服从伯努利分布(0-1, 伯努利分布亦称“零一分布”、“两点分布”),然后求满足分布的似然函数,转成对数似然,在对对数似然求极值等。而逻辑回归并没有求似然函数的极值,而是把极大化当成一种思想,对极大取负号变成取极小值。从损失函数的角度去看,其就变成了log损失函数。

logLoss (log 损失函数)的函数标准形式:

                                                   L(Y,\ P(Y|X)) = - log\ P(Y|X)

逻辑回归的P(Y=y|x)的表达式如下:

                            P(Y=y|x) = \left\{\begin{matrix} \ \ \ \ \ \ \ h_\Theta (x) = g(f(x)) = \frac{1}{1+e^{-f(x)}}, \ \ \ \ y=1\ \ \ \ \\\\ 1 - h_\Theta (x) = 1 - g(f(x)) = \frac{1}{1+e^{f(x)}}, \ \ y = 0 \end{matrix}\right.

把P(Y=y|x)带入log loss得:

                           L(y, P(Y=y|x)) = \left\{\begin{matrix} -log\ h_\Theta (x)\ \ \ \ \ \ \ \ \ ,\ y=1\\ \\ -log\ (1- h_\Theta (x))\ , \ y=0 \end{matrix}\right.

分段函数不太好求解,我们对其进行合并,则最后逻辑回归的目标式子为:

                                     J(\Theta ) = -\frac{1}{m}\sum_{i=1}^{m}[y_i logh_\Theta (x_i) + (1-y_i)log(1-h_\Theta (x_i))]

当然,一般我们在实际使用中会对目标函数加入正则化:

                            J(\Theta ) = -\frac{1}{m}\sum_{i=1}^{m}[y_i logh_\Theta (x_i) + (1-y_i)log(1-h_\Theta (x_i))]\ +\ \frac{\lambda }{2m}\sum_{j=1}^{n}\Theta_j^2

m为样本数,n为特征数。

上面就是逻辑回归使用log loss的推导过程了,得到该目标函数后就可通过梯度下降等优化方法进行求参咯,如果你还不了解逻辑回归,请点这里。

三、hinge loss (合页损失函数,SVM)

在机器学习中,SVM是你不可能绕过去的模型,SVM有两种解释方式:

第一种是我们非常熟悉的是通过间隔最大化方式,通过拉格朗日乘子法转化成对偶问题进行建模求解的,其(此处是说线性支持向量机)原始优化问题为:

                                                           \underset{w,b}{min}\ \ \frac{1}{2}||w||^2+C\sum_{i}^{m}\xi_i

                                                           st. \ \ \ y_i(w^Tx_i+b)\geq 1-\xi_i,\ \ \ i=1,2,...,m

                                                                               \xi_i\geq 0,\ \ \ \ \ i=1,2,...,m 

通过拉格朗日乘子法转化并求解之后,得到的式子为:

                                                                      \underset{\alpha }{min}\ \ \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _i\alpha _jy_iy_jx_i^Tx_j\ -\ \sum_{i=1}^{m}\alpha _i

                                                                     st. \ \ \ \ \sum_{i=1}^{m}\alpha _iy_i=0

                                                                                0\leq \alpha _i\leq C,\ \ i=1,2,...,m

第二种就是包含有hinge loss的解释方式,其通过最小化下面的目标函数:

                                                        \sum_{i=1}^{m}[1 - y_i(w^Tx_i+b)]_+\ + \ \lambda ||w||^2 

而上面的式子中,第1项是经验损失或者经验风险第二项为系数为\lambda的w的L2范数,为正则化项,对于第1项经验损失,函数

                                                                  L(y(w^Tx+b)) = [1-y(w^Tx+b)]_+

称为合页损失函数(hinge loss function)。下标“+”表示下面取正值的函数:

                                                                  [z]_+=\left\{\begin{matrix} z,\ \ \ z> 0\\ \\ 0,\ \ \ z\leq 0 \end{matrix}\right.

也可以这样理解:

                                                                 [z]_+ = max(0, 1-z)

                                                                 \sum_{i=1}^{m}max(0, 1-y_i(w^Tx_i+b)) + \lambda ||w||^2

hinge loss function 表示,当样本点(x_i, y_i)被正确分类且函数间隔y_i(w^Tx_i+b)大于1时,其损失为0,否则损失为1-y_i(w^Tx_i+b)。所以在使用hinge loss function时,我们的最优化问题为最小化损失函数:

                                                                 \underset{w,b}{min} \ \ \ \sum_{i=1}^{m}[1-y_i(w^Tx_i+b)]_+\ +\ \lambda||w||^2

转化证明详见《统计学习方法》-- 李航。

对于多分类的linear SVM,我们的损失函数为多分类的hinge loss:

           

                 

现在我们来讲一下下面公式的意思:

                                          L_i = \sum_{j\neq y_i}max(0, w^T_jx_i-w^T_{y_i}x_i+\Delta )

                                               = \sum_{j\neq y_i}max(0, w^T_jx_i+\Delta -w^T_{y_i}x_i)

也就说对于样本x_i,对于判定为其他类别的得分w_j^Tx_i与其正确的类型w_{y_i}^Tx_i的距离不能小于\Delta,如果超过范围,则其损失为超过的值,如下图:

 其中2的黄色框的红方点为正确类型的得分w_{y_i}^Tx_i,delta为最小的安全距离,则预测为其他类型的得分w_j^Tx_i不能超过1的黄色框中的红方点,或在1的左边损失为0,在1的右边则其损失为得分减去1的分值。

四、exp-loss (指数损失函数,AdaBoost)

在集成学习中,主要有三种集成方法Boosting、Bagging、Stacking,而Boosting中著名的代表为AdaBoost算法。

Boosting是一簇可将弱学习器提升为强学习器的算法。其工作机制为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对样本分布进行调整,使得先前的基学习器做错的训练样本在后续收到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到实现指定的值T,或整个集成结果达到退出条件,然后将这些学习器进行加权结合。

Adaboost 算法采用调整样本权重的方式来对样本分布进行调整,即提高前一轮个体学习器错误分类的样本的权重,而降低那些正确分类的样本的权重,这样就能使得错误分类的样本可以受到更多的关注,从而在下一轮中可以正确分类,使得分类问题被一系列的弱分类器“分而治之”。对于组合方式,AdaBoost采用加权多数表决的方法,具体地,加大分类误差率小的若分类器的权值,减小分类误差率大的若分类器的权值,从而调整他们在表决中的作用。

Adaboost的损失函数为指数损失函数。在Adaboost算法学习的过程中,经过m轮迭代之后,可以得到f_m(x):

                                                   f_m(x) = f_{m-1}(x)+\alpha _mG_m(x)

而Adaboost每次迭代时的目的是为了得到:

                                                     (\alpha_m,G_m(x))=arg\ \underset{\alpha,G}{min}\sum_{i=1}^{N}exp[-y_if_{m}(x_i)]

                                                                          =arg\ \underset{\alpha,G}{min}\sum_{i=1}^{N}exp[-y_i(f_{m-1}(x_i)+\alpha_mG_m(x_i))]

而指数损失(exp-loss)函数的标准形式为:

                                                    L(y, f(x)) = exp[-yf(x)]

与Adaboost每次迭代时的目标函数类似。可以看出,Adaboost的目标式子就是指数损失,所以在给定n个样本的情况下,Adaboost的损失函数为:

                                                    L(y,f(x)) = \frac{1}{n}\sum_{i=1}^nexp(-y_if(x_i))

五、cross-entropy loss (交叉熵损失函数,Softmax)

1、先来看看什么是交叉熵?

上过信息论的同学都知道,交叉熵是信息论中的概念,其原来是用来估算平均编码长度的。给定两个概率分布p和q,通过q来表示p的交叉熵为:

                                      H(p,q) = - \sum_{y}p(y)\ log\ q(y)

交叉熵刻画的是两个概率分部之间的距离,或可以说其刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布越接近。

交叉熵损失函数通常使用在softmax上,而softmax通常使用在神经网络的末端,使其预测结果以概率的形式输出。Softmax函数为:

                                     {\color{DarkRed} \sigma (Z)_j=\frac{e^{z_j}}{\sum_{k=1}^Ke^{z_k}}}

 其把原始输出z_j转化成概率,从而可以通过交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离。

举例子说就是,假设有一个3分类问题,某个样例的正确答案是(1,0,0),这个模型经过softmax回归之后的预测答案是(0.5,0.4,0.1),那么预测和正确答案之间的交叉熵为:

                                  H((1, 0,0),\ (0.5,0.4,0.1))=-(1*log\ 0.5+0*log\ 0.4+0*log\ 0.1)\approx 0.3

如果另一个模型的预测是(0.8,0.1,0.1),那么这个预测值和真实值之间的交叉熵是:

                                 H((1, 0,0),\ (0.8,0.1,0.1))=-(1*log\ 0.8+0*log\ 0.1+0*log\ 0.1)\approx 0.1

明显可见,模型2要优于模型1。也就是对于真实的概率分布(1,0,0),使用预测的概率分布(0.8, 0.1, 0.1去表达比使用(0.5,0.4,0.1)去表达要难度更小。

从上面的例子,我们发现,对于第i个样本x_i,在给定参数W下的得分结果为f_{yi},则其损失函数为:

                                L_i=-log(\frac{e^{f_{y_i}}}{\sum_je^{y_j}})

这就是交叉熵损失。

在多分类问题中,我们还可使用多分类hinge loss作为损失函数,多分类的hinge loss如下:

六、quadratic loss (平方误差损失函数,线性回归)

在回归问题中,我们常常使用平方误差作为其损失函数,其公式为:

                      L(Y,\ f(X))=(f(X)-Y)^2

但更多的是使用其平均值,即

                                 l(Y,f(X))=\frac{1}{2m}\sum_{i=1}^m(f(x_i)-y_i)^2

线性回归中常常添加正则化:

加入L1正则化为Lasso回归:

                    L(Y,f(X))=\frac{1}{2m}\sum_{i=1}^{m}[f(x_i)-y_i]^2\ +\ \lambda\sum_{j=1}^n|w_j|

加入L2正则化则为岭回归:

                     L(Y,f(X))=\frac{1}{2m}\sum_{i=1}^{m}[f(x_i)-y_i]^2\ +\ \lambda\sum_{j=1}^nw_j^2

 

七、absolution loss (绝对值损失函数)

绝对值损失函数的公式:

                      L(Y,f(X))=|Y-f(X)|

表示预测值与真实值的距离。

八、0-1 loss (0-1损失函数)

                                   L(y,f(x)) = \left\{\begin{matrix} 0 \ \ \ if\ \ y=f(x)& \\ & \\ 1 \ \ \ if\ \ y\neq f(x)& \end{matrix}\right.

                                   L(y,f(x))=I(y\neqf(x))


http://chatgpt.dhexx.cn/article/nJQ2i0FD.shtml

相关文章

深度学习loss函数理解

机器学习中的范数规则化之L0、L1、L2范数及loss函数 监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。 最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我…

CE Loss,BCE Loss以及Focal Loss的原理理解

一、交叉熵损失函数(CE Loss,BCE Loss) 最开始理解交叉熵损失函数被自己搞的晕头转向的,最后发现是对随机变量的理解有偏差,不知道有没有读者和我有着一样的困惑,所以在本文开始之前,先介绍一下…

损失函数loss

http://blog.csdn.net/pipisorry/article/details/23538535 监督学习及其目标函数 损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示。 损失函数是经…

机器学习模型中的损失函数loss function

1. 概述 在机器学习算法中,有一个重要的概念就是损失函数(Loss Function)。损失函数的作用就是度量模型的预测值 f ( x ) f\left ( \mathbf{x} \right ) f(x)与真实值 y \mathbf{y} y之间的差异程度的函数,且是一个非负实值函数。…

损失函数(Loss)

如果我们定义了一个机器学习模型,比如一个三层的神经网络,那么就需要使得这个模型能够尽可能拟合所提供的训练数据。但是我们如何评价模型对于数据的拟合是否足够呢?那就需要使用相应的指标来评价它的拟合程度,所使用到的函数就称…

focal loss详解

文章目录 focal loss的整体理解易分辨样本、难分辨样本的含义focal loss的出现过程focal loss 举例说明focal loss的 α \alpha α变体 focal loss的整体理解 focal loss 是一种处理样本分类不均衡的损失函数,它侧重的点是根据样本分辨的难易程度给样本对应的损失添…

深度学习——损失函数(Regression Loss、Classification Loss)

简介 Loss function 损失函数 用于定义单个训练样本与真实值之间的误差 Cost function 代价函数 用于定义单个批次/整个训练集样本与真实值之间的误差 Objective function 目标函数 泛指任意可以被优化的函数 损失函数用于衡量模型所做出的预测离真实值(GT)之间的偏离程度。 …

深度学习中常见的损失函数(L1Loss、L2loss)

损失函数定义 损失函数:衡量模型输出与真实标签的差异。 L1_loss 平均绝对误差(L1 Loss):平均绝对误差(Mean Absolute Error,MAE)是指模型预测值f(x)和真实值y之间距离的平均值,公式如下: 优…

损失函数(loss function)

文章目录 1、什么是损失函数2、为什么要使用损失函数3、损失函数分类1、分类一2、分类二3、分类三3.1基于距离度量的损失函数3.1.1 均方误差损失函数(MSE)3.1.2 L2损失函数3.1.3 L1损失函数3.1.4 Smooth L1损失函数3.1.5 huber损失函数 3.2 基于概率分布…

Focal Loss损失函数(超级详细的解读)

什么是损失函数? 1、什么是损失呢? 在机器学习模型中,对于每一个样本的预测值与真实值的差称为损失。 2、什么是损失函数呢? 显而易见,是一个用来计算损失的函数。它是一个非负实值函数,通常使用L(Y, f(x))来表示。 3、…

损失函数loss大总结

分类任务loss: 二分类交叉熵损失sigmoid_cross_entropy: TensorFlow 接口: tf.losses.sigmoid_cross_entropy(multi_class_labels,logits,weights1.0,label_smoothing0,scopeNone,loss_collectiontf.GraphKeys.LOSSES,reductionReduction.SUM_BY_NONZER…

深度学习基础(三)loss函数

loss函数,即损失函数,是决定网络学习质量的关键。若网络结构不变的前提下,损失函数选择不当会导致模型精度差等后果。若有错误,敬请指正,Thank you! 目录 一、loss函数定义 二、常见的loss算法种类 1.M…

loss函数 激活函数

一、LOSS函数 loss函数指机器学习模型中用于最小化的目标函数,其一般意义是指判别错误的程度,因为我们要提高准确率,也就是降低错误率,所以可以归结为一个最小化损失函数的问题。 具体的,我们假设有一个十分类问题&a…

Loss损失函数

损失函数是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数,用于衡量预测值与实际值的偏离程度。在机器学习中,损失函数是代价函数的一部分,而代价函数是目标函数的一种类型。 在《神经网络中常…

深度学习之——损失函数(loss)

深度学习中的所有学习算法都必须有一个 最小化或最大化一个函数,称之为损失函数(loss function),或“目标函数”、“代价函数”。损失函数是衡量模型的效果评估。比如:求解一个函数最小点最常用的方法是梯度下降法&…

1_一些文献中的英文解释和用法整理

目录 1、Theorem、Proposition、Lemma和Corollary等的解释与区别 2、论文里的 Preliminaries 究竟是什么意思? (1)Preliminaries是什么? (2)Preliminaries应该写什么内容? (3)…

区分定理(Theorem)、引理(Lemma)、推论(Corollary)等概念

ZZ: http://blog.sina.com.cn/s/blog_a0e53bf70101jwv1.html Theorem:就是定理,比較重要的,簡寫是 Thm。 Lemma:小小的定理,通常是為了證明後面的定理,如果證明的篇幅很長時,可能會把證明拆成幾…

CodeForces - 1364D Ehabs Last Corollary(dfs树找最小环)

题目链接:点击查看 题目大意:给出一个由 n 个结点和 m 条边构成的无向图,再给出一个 k ,需要在图中完成下面任意一种操作: 找到一个大小恰好为 的独立集找到一个大小不超过 k 的环 题目分析: 题目已经…

Codeforces Round 649 (Rated for Div. 2)D. Ehab s Last Corollary详细题解(图论+简单环)

树 边 : 树边: 树边:深度优先森林中的边。如果结点v是因对(u,v)的探索而首先被发现,则(u,v)是一条树边。 后 向 边 : 后向边: 后向边:后向边(u,v)是将结点u连接到其在深度优先树中一个祖先节点v的边. (本文我就称之为反向边了,问题不大) 前…

#649 (Div. 2)D. Ehab‘s Last Corollary

题目描述 Given a connected undirected graph with n vertices and an integer k, you have to either: either find an independent set that has exactly ⌈k2⌉ vertices. or find a simple cycle of length at most k. An independent set is a set of vertices such that…