【机器学习】损失函数的选择总结

一.初步了解损失函数

1.损失函数是什么?

        在理解损失函数之前,让我们首先理解什么是损失。当一个样本经过你的模型得到的预测值与真实值的差值就是损失,损失越小,说明你的模型准确率或其他指标越好。而损失函数其实就是用来计算损失的一系列函数,然后经过库比如pytorch、tensorflow等的封装形成了一系列适用于不同场景下的损失函数。

2.损失函数能做什么?

        现在我们都知道,要让我们的模型效果更出色,就必须让我们模型的损失值达到最小,损失函数在这里便起到降低损失值的作用。而选择损失函数是深度学习中的关键决策,因为在不同的项目中,有些损失函数计算的损失梯度下降得快,而有些下降得慢。所以选择损失函数通常取决于任务的性质,例如是回归问题、分类问题、还是其他任务,在后面我们会详细介绍。

3.损失函数的使用位置在哪里?

        在机器学习中,我们输入的样本需要通过模型预测出y,此过程称为向前传播,而要将预测与真实值的差值减小需要更新模型中的参数,这个过程称为向后传播,其中我们损失函数就基于这两种传播之间,一边接受模型的预测值,一边计算损失,为反向传播的进行提供数据。

二.常用损失函数介绍

1.回归问题(Regression)

  a.均方误差(Mean Squared Error, MSE)

\text{MSE}(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2

        MSE适用于回归任务,它计算预测值与实际值之间的平方差,并对所有样本取平均。MSE对异常值比较敏感,因此在存在离群值的情况下需要谨慎使用。

  b.平均绝对误差(Mean Absolute Error, MAE)

\text{MAE}(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|

也适用于回归任务,它计算预测值与实际值之间的绝对差,并对所有样本取平均。MAE对异常值不敏感,因此在数据包含噪声或离群值较多时可以考虑使用。

2.二分类问题(Binary Classification)
  a.二元交叉熵损失(Binary Cross-Entropy Loss)

\text{CE}(y, \hat{y}) = - y \log(\hat{y}) - (1 - y) \log(1 - \hat{y})

        二元交叉熵损失用于二分类问题,测量两个概率分布之间的差异。适用于模型输出概率表示样本属于正类别的情况。

  b.带权重的二元交叉熵损失(Weighted Binary Cross-Entropy Loss)

L(y, t) = - (w_{pos} * t * log(y) + w_{neg} * (1 - t) * log(1 - y))

        在不平衡的数据集中,可以使用带权重的二元交叉熵来调整类别之间的权重,以便更好地处理不平衡。

3.多分类问题(Multi-Class Classification)
  a.交叉熵损失(Categorical Cross-Entropy Loss)

[ L(y, t) = - (t \cdot \log(y) + (1 - t) \cdot \log(1 - y)) ]

        适用于多分类问题,扩展了二分类问题的概念。用于测量模型输出的概率分布与实际标签之间的差异。

  b.稀疏交叉熵损失(Spare Categorical Cross-Entropy Loss)

[ L(y, t) = -\sum_{i} t_i \log(y_i) ]

        类别标签以整数形式给出时,可以使用稀疏交叉熵。

4序列生成任务(Sequence-to-Sequence Tasks)
  a.序列交叉熵损失(Sequence Cross-Entropy Loss)

[ L(y, t) = - \sum_{i=1}^{n} \sum_{j=1}^{m} t_{ij} \log(y_{ij}) ]

        适用于序列生成任务,如机器翻译或语言建模。它考虑了序列中每个时间步的预测和实际值之间的差异。

5.目标检测(Object Detection)
  a.焦点损失(Focal Loss)

[ L(p, y) = - \alpha (1 - p)^{\gamma} \log(p) ]

        针对目标检测任务,特别是在存在大量负样本的情况下,Focal Loss可以帮助模型更好地处理正负样本不平衡问题。

6.生成对抗网络(Generative Adversarial Networks,Gans)
  a.对抗损失(Adversarial Loss)

[ L_G = -\mathbb{E}{x \sim p{data}(x)} \log(D(x)) ]

        GANs通常使用对抗损失来度量生成器和判别器之间的竞争,帮助生成器生成逼真的样本。

 ps:如果对你有帮助记得点赞收藏哦 ~ ~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值