损失函数?
损失函数用于测量预测输出和提供的目标值之间的误差。损失函数告诉我们算法模型距离实现预期结果有多远。“损失”一词是指模型不能产生预期结果而受到的惩罚。
例如,一个损失函数(称为J)可以使用以下两个参数:
***预测输出(y_pred)
***目标值(y)
例如,用神经网络做预测:

这个函数将通过比较预测输出和预期输出来确定模型的性能。如果y_pred和y之间的偏差很大,那么损失值就会很大。如果偏差很小或值几乎相同,它将输出一个非常低的损失值。因此,当模型在提供的数据集上进行训练时,需要使用合适的损失函数来惩罚模型。
损失函数根据算法要解决的问题不同而改变。

L1 loss
也称Mean Absolute Error,简称MAE,计算实际值和预测值之间的绝对差之和的平均值。
表达式如下:
y表示标签,pred表示预测值。
应用场合:回归问题。
根据损失函数的表达式很容易了解它的特性:当目标变量的分布具有异常值时,即与平均值相差很大的值,它被认为对异常值具有很好的鲁棒性。
L2 loss
也称为Mean Squared Error,简称MSE,计算实际值和预测值之间的平方差的平均值。
表达式如下:
应用场合:对大部分回归问题,pytorch默认使用L2,即MSE。
使用平方意味着当预测值离目标值更远时在平方后具有更大的惩罚,预测值离目标值更近时再平方后惩罚更小,因此,当异常值与样本平均值相差格外大时,模型会因为惩罚更大而开始偏离,相比之下,L1对异常值的鲁棒性更好。
L1 & L2
如果异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。相反,如果只把异常值当作受损数据,则应选用MAE损失函数。
Huber损失函数
Huber损失对数据中的异常点没有平方误差那么敏感。在0处也可微分,本质上,Huber损失是绝对误差,只是在误差很小时,就变为平方误差。误差降到多少时变为二次误差由超参数控制。

Negative Log-Likelihood
简称NLL。表达式如下:
应用场景:多分类问题。
注:NLL要求网络最后一层使用softmax作为激活函数。通过softmax将输出值映射为每个类别的概率值。
根据表达式,它的特性是惩罚预测准确而预测概率不高的情况。
NLL 使用负号,因为概率(或似然)在 0 和 1 之间变化,并且此范围内的值的对数为负。最后,损失值变为正值。
在 NLL 中,最小化损失函数有助于获得更好的输出。从近似最大似然估计 (MLE) 中检索负对数似然。这意味着尝试最大化模型的对数似然,从而最小化 NLL。
Cross-Entropy
此损失函数计算提供的一组出现次数或随机变量的两个概率分布之间的差异。它用于计算预测值与实际值之间的平均差异的分数。
表达式:

应用场景:二分类及多分类。
特性:负对数似然损失不对预测置信度惩罚,与之不同的是,交叉熵惩罚不正确但可信的预测,以及正确但不太可信的预测。
交叉熵函数有很多种变体,其中最常见的类型是Binary Cross-Entropy (BCE)。BCE Loss 主要用于二分类模型;也就是说,模型只有 2 个类。
Hinge Embedding
表达式:
![]()
其中y为1或-1。
应用场景:分类问题,特别是在确定两个输入是否不同或相似时。
学习非线性嵌入或半监督学习任务。
Margin Ranking Loss
Margin Ranking Loss 计算一个标准来预测输入之间的相对距离。这与其他损失函数(如 MSE 或交叉熵)不同,后者学习直接从给定的输入集进行预测。
表达式:
标签张量 y(包含 1 或 -1)。当 y == 1 时,第一个输入将被假定为更大的值。它将排名高于第二个输入。如果 y == -1,则第二个输入将排名更高。
应用场景:排名问题
Triplet Margin Loss
计算三元组的损失。
表达式:
![]()
三元组由a (anchor),p (正样本) 和 n (负样本)组成.
应用场景:
确定样本之间的相对相似性
用于基于内容的检索问题
KL Divergence Loss
计算两个概率分布之间的差异。
表达式:

输出表示两个概率分布的接近程度。如果预测的概率分布与真实的概率分布相差很远,就会导致很大的损失。如果 KL Divergence 的值为零,则表示概率分布相同。
KL Divergence 与交叉熵损失的关键区别在于它们如何处理预测概率和实际概率。交叉熵根据预测的置信度惩罚模型,而 KL Divergence 则没有。KL Divergence 仅评估概率分布预测与ground truth分布的不同之处。
应用场景:逼近复杂函数多类分类任务确保预测的分布与训练数据的分布相似
1503

被折叠的 条评论
为什么被折叠?



