一.初步了解损失函数
1.损失函数是什么?
在理解损失函数之前,让我们首先理解什么是损失。当一个样本经过你的模型得到的预测值与真实值的差值就是损失,损失越小,说明你的模型准确率或其他指标越好。而损失函数其实就是用来计算损失的一系列函数,然后经过库比如pytorch、tensorflow等的封装形成了一系列适用于不同场景下的损失函数。
2.损失函数能做什么?
现在我们都知道,要让我们的模型效果更出色,就必须让我们模型的损失值达到最小,损失函数在这里便起到降低损失值的作用。而选择损失函数是深度学习中的关键决策,因为在不同的项目中,有些损失函数计算的损失梯度下降得快,而有些下降得慢。所以选择损失函数通常取决于任务的性质,例如是回归问题、分类问题、还是其他任务,在后面我们会详细介绍。
3.损失函数的使用位置在哪里?
在机器学习中,我们输入的样本需要通过模型预测出y,此过程称为向前传播,而要将预测与真实值的差值减小需要更新模型中的参数,这个过程称为向后传播,其中我们损失函数就基于这两种传播之间,一边接受模型的预测值,一边计算损失,为反向传播的进行提供数据。
二.常用损失函数介绍
1.回归问题(Regression)
a.均方误差(Mean Squared Error, MSE)
MSE适用于回归任务,它计算预测值与实际值之间的平方差,并对所有样本取平均。MSE对异常值比较敏感,因此在存在离群值的情况下需要谨慎使用。
b.平均绝对误差(Mean Absolute Error, MAE)
也适用于回归任务,它计算预测值与实际值之间的绝对差,并对所有样本取平均。MAE对异常值不敏感,因此在数据包含噪声或离群值较多时可以考虑使用。
2.二分类问题(Binary Classification)
a.二元交叉熵损失(Binary Cross-Entropy Loss)
二元交叉熵损失用于二分类问题,测量两个概率分布之间的差异。适用于模型输出概率表示样本属于正类别的情况。
b.带权重的二元交叉熵损失(Weighted Binary Cross-Entropy Loss)
在不平衡的数据集中,可以使用带权重的二元交叉熵来调整类别之间的权重,以便更好地处理不平衡。
3.多分类问题(Multi-Class Classification)
a.交叉熵损失(Categorical Cross-Entropy Loss)
适用于多分类问题,扩展了二分类问题的概念。用于测量模型输出的概率分布与实际标签之间的差异。
b.稀疏交叉熵损失(Spare Categorical Cross-Entropy Loss)
类别标签以整数形式给出时,可以使用稀疏交叉熵。
4序列生成任务(Sequence-to-Sequence Tasks)
a.序列交叉熵损失(Sequence Cross-Entropy Loss)
适用于序列生成任务,如机器翻译或语言建模。它考虑了序列中每个时间步的预测和实际值之间的差异。
5.目标检测(Object Detection)
a.焦点损失(Focal Loss)
针对目标检测任务,特别是在存在大量负样本的情况下,Focal Loss可以帮助模型更好地处理正负样本不平衡问题。
6.生成对抗网络(Generative Adversarial Networks,Gans)
a.对抗损失(Adversarial Loss)
GANs通常使用对抗损失来度量生成器和判别器之间的竞争,帮助生成器生成逼真的样本。
ps:如果对你有帮助记得点赞收藏哦 ~ ~