损失函数Loss Fuction

article/2025/10/11 17:30:18

说说代价函数的作用?

 1.为得到训练模型的参数,需要一个代价函数,通过训练代价函数来得到参数。

 2.用于找到最优解的目的函数。

说说代价函数为什么要非负?

 因为目标函数存在下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据单调有界准则,这个优化算法就能证明是收敛有效的。​ 只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。

说说你知道的代价函数?

 1.二次代价函数(quadratic cost)

 

b调整就越快,训练的速度也就越快。

二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是S型函数的情况。

 3.对数似然代价函数(log-likelihood cost)

 对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数似然代价函数。

 对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。

说说损失函数是什么?

 ​损失函数(Loss Function)又称误差函数,用来衡量算法的运行情况,评估模型预测值与真实值的差异程度,是一个非负实值函数,通常使用​

L ( Y , f ( x ) )​L(Y, f(x))​

L(Y,f(x))​来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。

说说损失函数作用?

 损失函数用来评价模型的预测值和真实值不一样的程度,在模型正常拟合的情况下,损失函数值越低,模型的性能越好。不同的模型用的损失函数一般也不一样。

 损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差值,结构风险损失函数是指经验风险损失函数加上正则项。

说说你知道的损失函数?

 1.用于回归的损失函数:

 1)绝对值损失函数

 2)平方损失函数(squared loss):常用于线性回归

 2.用于分类的损失函数:

 1)0-1损失函数(zero-one loss):在感知机中,使用的该损失函数

 2)对数损失函数(log loss):用于最大似然估计,等价于交叉熵损失函数

 3)指数损失函数(exponential loss):在adaboost中使用的该损失函数

 4)合页损失函数(hinge loss):在SVM中使用的该损失函数

 5)交叉熵损失函数(cross-entropy loss):用于分类任务

 3.用于视觉的损失函数:

 1)Smooth L1 Loss :融合绝对值损失函数和平方损失函数,faster RCNN用的该损失函数

 2)Focal loss :用于单阶段目标检测方法中样本极端不平衡的情况

 3)IOU loss:就是交集和并集的比值,常用于分割任务、回归任务

 4)Dice loss

 5)Tversky Loss :引入

α \alpha

α和

P ( Y ∣ X ) P(Y \mid X)

P(Y∣X) 是条件概率。即在样本

X X

X 的条件下,正确分类为

Y Y

Y 的概率。

P ( Y ∣ X ) P(Y \mid X)

P(Y∣X) 越大越好,因为模型预测越准,求得的模型参数越符合样本分布。

 因为习惯损失函数求最小,这就是为什么要加个负号“-”。

P ( Y ∣ X ) P(Y \mid X)

P(Y∣X) 越大,

L ( Y , P ( Y ∣ X ) ) L(Y, P(Y \mid X))

L(Y,P(Y∣X)) 越小。

 为什么要使用对数? 这和最大(极大)似然估计有关,对数损失是用于最大似然估计的。最大似然估计,就是利用已知的样本结果信息,反推最具有可能 (最大概率) 导致这些样本结果出现的模型参数值。

 假定一组参数在一堆数据(样本结果)下的似然值为:

P ( θ ∣ × 1 , × 2 , … , × n ) = P ( × 1 ∣ θ ) ∗ P ( × 2 ∣ θ ) ∗ … ∗ P ( × n ∣ θ ) \mathrm{P}(\theta \mid \times 1, \times 2, \ldots, \times \mathrm{n})=\mathrm{P}(\times 1 \mid \theta) * \mathrm{P}(\times 2 \mid \theta) * \ldots * \mathrm{P}(\times \mathrm{n} \mid \theta)

P(θ∣×1,×2,…,×n)=P(×1∣θ)∗P(×2∣θ)∗…∗P(×n∣θ)


 可以看出,似然值等于每一条数据在这组参数下的条件概率之积。求概率是乘性,而求损失是加性,所以才需要借助log(对数)来转积为和,也是为了简化运算。

 对数损失在逻辑回归和多分类任务上广泛使用。交叉樀损失函数的标准型就是对数损失函数,本质没有区别。

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

L ( Y , f ( x ) ) = exp ⁡ ( − Y ⋅ f ( x ) ) L(Y, f(x))=\exp (-Y \cdot f(x))

L(Y,f(x))=exp(−Y⋅f(x))

 AdaBoost算法就是使用的指数损失函数。

 4. 合页损失函数 (hinge loss)

L ( Y , f ( x ) ) = max ⁡ ( 0 , 1 − Y ⋅ f ( x ) ) L(Y, f(x))=\max (0, \quad 1-Y \cdot f(x))

L(Y,f(x))=max(0,1−Y⋅f(x))


 SVM使用合页损失,还加了正则项。公式意义是当样本被正确分类且函数间隔大于1时,合页损失是 0 ,否则损失是

1 − Y ⋅ f ( x ) 1-Y \cdot f(x)

1−Y⋅f(x) 。

 5. 交叉熵损失函数 (cross-entropy loss)

L ( Y , f ( x ) ) = − [ Y ln ⁡ f ( x ) + ( 1 − Y ) ln ⁡ ( 1 − f ( x ) ) ] L(Y, f(x))=-[Y \ln f(x)+(1-Y) \ln (1-f(x))]

L(Y,f(x))=−[Ylnf(x)+(1−Y)ln(1−f(x))]


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

 二分类问题中的loss函数(配合sigmoid):

L ( Y , f ( x ) ) = − [ Y ln ⁡ f ( x ) + ( 1 − Y ) ln ⁡ ( 1 − f ( x ) ) ] L(Y, f(x))=-[Y \ln f(x)+(1-Y) \ln (1-f(x))]

L(Y,f(x))=−[Ylnf(x)+(1−Y)ln(1−f(x))]


 多分类问题中的loss函数(配合softmax):

L ( Y , f ( x ) ) = − Y ln ⁡ f ( x ) L(Y, f(x))=-Y \ln f(x)

L(Y,f(x))=−Ylnf(x)


 注: 以上损失函数都是标准型,针对单个数据。针对所有数据还应该加和求平均。

说说检测与分割中的损失函数?

 1.Smooth L1 Loss

 Smooth L1 Loss结合了L1和L2两种损失函数。公式如下:

L 1 ( x ) = ∣ x ∣ L 2 ( x ) = x 2 smooth ⁡ L 1 ( x ) = { 0.5 x 2  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherwise 

L1


 其实就是增加权重,控制Recall和Precision

说说交叉熵函数与最大似然函数的联系和区别?

 区别:使用交叉熵函数描述模型预测值和真实值的差距大小,越大代表越不相近;似然函数的本质就是衡量在某个参数下,整体的估计和真实的情况一样的概率,越大代表越相近。

 联系:交叉熵函数可以由最大似然函数在伯努利分布的条件下推导出来,或者说最小化交叉熵函数的本质就是对数似然函数的最大化。

用公式说明下交叉熵函数与最大似然函数联系?

 设随机变量

p p

p

说说Sigmoid作为激活函数时为什么要用交叉熵损失函数而不用均方误差损失函数?

 因为交叉熵损失函数可以完美解决均方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。

 Sigmoid作为激活函数的时候,如果采用均方误差损失函数,那么这是一个非凸优化问题,不宜求解。而采用交叉熵损失函数依然是一个凸优化问题,更容易优化求解。

 分析:

 均方误差损失函数定义:

C = 1 2 N ∑ x ( a − y ) 2 C=\frac{1}{2 N} \sum_{x}(a-y)^{2}

C=

 2. 参数更新速度不同

 均方差损失函数受Sigmoid函数影响,导数更新缓慢。交叉樀损失函数参数更新只和误差有关,当误差大的时候,权重更新快;当误差小的时候,权重更新慢。

 3. sigmoid作为激活函数的时候,如果采用均方误差损失函数,那么这是一个非凸优化问题,不宜求解。而采用交叉嫡损失函数依然是一 个凸优化问题,更容易优化求解。

 4. 使用场景不同:MSE更适合回归问题,交叉熵损失函数更适合分类问题。

推导交叉熵损失函数?

 以偏置

b b

b 的梯度计算为例,推导交叉熵代价函数。

 前置知识为Sigmoid函数求导为

σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma^{'}(z)=\sigma(z)(1-\sigma(z))

σ


 对两侧求积分,可得:

C = − [ y l n a + ( 1 − y ) ln ⁡ ( 1 − a ) ] +  constant  C=-[y l n a+(1-y) \ln (1-a)]+\text { constant }

C=−[ylna+(1−y)ln(1−a)]+ constant 


 即推出交叉熵损失函数。

说说交叉熵的思想?

 1.交叉熵函数的本质是对数函数。

 2.交叉熵函数描述模型预测值和真实值的差距大小,越大代表越不相近。

 3.交叉熵损失函数可以完美解决均方损失函数权重更新过慢的问题。

 4.对数损失在逻辑回归和多分类任务上广泛使用。交叉熵损失函数的标准型就是对数损失函数,本质没有区别。

说说交叉熵损失函数为什么有log项?

 1.为解决均方误差损失函数搭配Sigmoid时更新慢问题而推导出的(如上一问)

 2.通过最大似然估计的方式求得交叉熵公式,这个时候引入log项。这是因为似然函数(概率)是乘性的,而loss函数是加性的,所以需要引入log项“转积为和”。而且也是为了简化运算。

说说KL散度?

 相对熵 (Relative entropy),又被称为Kullback-Leibler散度(Kullback-Leibler divergence)或信息散度(Information divergence),是两个概率分布(Probability distribution)间差异的非对称性度量。在信息理论中,相对熵等价于两个概率分布的信息熵(Shannon entropy) 的差值。

 设

P ( x ) , Q ( x ) P(x) , Q(x)

P(x),Q(x) 是随机变量

X X

X 上的两个概率分布,则在离散和连续随机变量的情形下,相对熵的定义分别为:

K L ( P ∥ Q ) = ∑ P ( x ) log ⁡ P ( x ) Q ( x ) K L ( P ∥ Q ) = ∫ P ( x ) log ⁡ P ( x ) Q ( x ) d x

KL(P∥Q)KL(P∥Q)

P ( x ) P(x)

P(x) 为模型预测概率分布,而KL就是度量这两个分布的差异性,差异越小越好,所以KL也可以用作损失函数。

说说深度神经网络(DNN)的损失函数是什么?

 深度神经网络(DNN)涉及到梯度消失的问题,如果使用均方误差作为损失函数配合sigmoid激活函数,那么参数更新缓慢。这个时候应该考虑使用交叉熵作为损失函数,可以避免参数更新缓慢的问题。

手撕IoU?

 定义:

I O U = J  accard  = ∣ A ∩ B ∣ ∣ A ∪ B ∣ = ∣ A ∩ B ∣ ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ I O U=J \text { accard }=\frac{|A \cap B|}{|A \cup B|}=\frac{|A \cap B|}{|A|+|B|-|A \cap B|}

IOU=J accard =

∣A∪B∣

∣A∩B∣


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

相关文章

常用的损失函数

来自 机器学习成长之路公众号 本文将常用的损失函数分为了两大类&#xff1a;分类和回归。然后又分别对这两类进行了细分和讲解&#xff0c;其中回归中包含了一种不太常见的损失函数&#xff1a;平均偏差误差&#xff0c;可以用来确定模型中存在正偏差还是负偏差。 从学习任务…

损失函数设计

目录 1.常见损失函数 1.1 平方损失函数 1.2 绝对值损失函数 1.3 Huber损失函数 1.4 Hinge损失函数 1.5 交叉熵损失函数 1.6 指数损失函数 2.不对称损失函数设计 3.面向容错的损失函数设计 4.评测指标不可导时的损失函数设计 5.没有“Groud Truth“的损失函数设计 6…

如何选择合适的损失函数

【AI科技大本营导读】机器学习中的所有算法都依赖于最小化或最大化某一个函数&#xff0c;我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型预测期望结果表现的指标。寻找函数最小值的最常用方法是“梯度下降”。把损失函数想象成起伏的山…

常用的损失函数合集

目录 一、什么是损失函数&#xff1f; 二、为什么需要损失函数&#xff1f; 三、损失函数通常使用的位置 四、损失函数的分类 五、常用的损失函数 1、回归损失&#xff08;针对连续型变量&#xff09; 1.L1 Loss也称为Mean Absolute Error&#xff0c;即平均绝对误差&…

语义分割的损失函数

语义分割任务实际上是一种像素层面上的分类&#xff0c;需要识别图像中存在的内容和位置&#xff0c;同样也存在与分类类似问题-样本类别不平衡&#xff0c;对于语义分割更多的是前景区域的样本远小于背景区域。针对类别不平衡问题&#xff0c;在loss层面上有不同的选择。 1. …

损失函数简介

损失函数的作用&#xff1a;衡量模型预测的好坏。 简单来说就是&#xff0c;损失函数就是用来表现预测与真实数据的差距程度。 令 真实值 为Y&#xff0c;预测值为 f(x)&#xff0c;损失函数为L( Y , f(x&#xff09;&#xff09;&#xff0c;关系如下&#xff1a; 损失函数&a…

Pyotorch自定义损失函数

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;大数据专业硕士在读&#xff0c;CSDN人工智能领域博客专家&#xff0c;阿里云专家博主&#xff0c;专注大数据与人工智能知识分享&#xff0c;公众号&#xff1a;GoAI的学习小屋&#xff0c;免费分享书籍、简历、导图等资料&a…

GAN的损失函数

1.GAN 在训练过程中&#xff0c;生成器和判别器的目标是相矛盾的&#xff0c;并且这种矛盾可以体现在判别器的判断准确性上。生成器的目标是生成尽量真实的数据&#xff0c;最好能够以假乱真、让判别器判断不出来&#xff0c;因此生成器的学习目标是让判别器上的判断准确性越来…

损失函数比较

Pytorch学习之十九种损失函数 一、简介 损失函数&#xff08;Loss Function)是用来评估模型好坏程度&#xff0c;即预测值f(x)与真实值的不一致程度&#xff0c;通常表示为L(Y, f(x))的一个非负的浮点数。比如你要做一个线性回归&#xff0c;你拟合出来的曲线不会和原始的数据…

常见的损失函数

1、损失函数的意义 机器学习中的监督学习本质上是给定一系列训练样本 &#xff0c;尝试学习 的映射关系&#xff0c;使得给定一个 &#xff0c;即便这个 不在训练样本中&#xff0c;也能够得到尽量接近真实 的输出 。而损失函数&#xff08;Loss Function&#xff09;则是这个过…

损失函数

损失函数&#xff08;loss function&#xff09;是用来估量你模型的预测值f(x)与真实值Y的不一致程度&#xff0c;它是一个非负实值函数,通常使用L(Y, f(x))来表示&#xff0c;损失函数越小&#xff0c;模型的鲁棒性就越好。损失函数是经验风险函数的核心部分&#xff0c;也是结…

常见损失函数

常见损失函数 (cs231n) 文章目录 常见损失函数损失函数定义0-1损失函数(zero-one loss)绝对值损失函数(Absolute loss)log对数损失函数(Log Loss)平方损失函数(Square Loss)指数损失函数 (Exponential Loss)SVM损失函数&#xff08;Hinge Loss&#xff09;感知损失函数(percep…

【常见的损失函数总结】

文章目录 损失函数的定义神经网络的学习为何要设定损失函数&#xff1f;常见的损失函数1. 0-1损失函数(zero-one loss)2. 对数损失函数3. 平方损失函数MSE(均值平方差&#xff09;4. Hinge 损失函数5. 交叉熵损失函数 (Cross-entropy loss function) 损失函数的定义 损失函数&…

神经网络损失函数汇总

目录 一、基础知识 二、分类 &#xff08;1&#xff09;二分类交叉熵损失函数&#xff08;binary_crossentropy&#xff09; &#xff08;2&#xff09;categorical_crossentropy损失函数 &#xff08;3&#xff09;sparse_categorical_crossentropy &#xff08;4&#…

Jmeter 使用正则表达式提取器将返回值全部保存到一个文件中

目标&#xff1a;将响应数据 {"errorCode":0,"message":"success","data":null} 中的message字段的值全部保存到一个文件中。 1.正则表达式提取器 正则表达式&#xff1a;提取内容的正则表达式【()表示提取&#xff0c;对于你要提取的…

Jmeter性能测试报告模板

性能测试报告 一、测试内容 针对当当网——服务器&#xff0c;进行性能测试&#xff0c;主要针对的核心业务是&#xff1a;注册&#xff0c;登录&#xff0c;查看商品信息与提交订单等。 二、测试方法 本次采用Apache的开元测试工具jmeter&#xff0c;采用本地动态拼装请求数据…

Jmeter5.4.1测试批量上传文件(参数化)

0、下载jmeter5.4.1 jmeter5.4.1-Java文档类资源-CSDN下载 注意需要java环境哦 jdk1.8-java_sdk_jre-Java文档类资源-CSDN下载 启动命令&#xff1a; java -jar ApacheJMeter.jar 用这个启动才是中文版本&#xff0c;另外启动后&#xff0c;界面字体太小&#xff0c…

Jmeter接口测试参数化详解

接口测试是目前最主流的自动化测试手段&#xff0c;它组合不同的参数向服务器发送请求&#xff0c;接受和解析响应结果&#xff0c;通过测试数据的交换逻辑来验证服务端程序工作的正确性。我们在测试过程中需要考虑不同的输入组合&#xff0c;来覆盖不同的测试范围&#xff1b;…

Jmeter学习之用户定义变量与用户变量

一、User Defined Variables 1、添加方法&#xff1a;选择“线程组”&#xff0c;右键点击添加&#xff0d;Config Element&#xff0d;User Defined Variables&#xff0c;定义你所需要的参数&#xff0c;如 2、在对应的需要使用参数的位置&#xff0c;使用${host}替代。 …

jmeter请求get接口报错(java.net.URISyntaxException: Illegal character in query at index 153: http://qa....)

log: 问题描述&#xff1a; 接口请求类型&#xff1a;get 请求参数&#xff1a;{"canshu1":"17600000005","canshu2":"test-0004","canshu3":"2021090301"},如下&#xff1a; 请求的时候报错如下&#xff1a; …