深入理解: 为什么MSE Loss不适合处理分类任务?

文章讨论了在深度学习中的分类任务中,为什么均方误差损失(MSELoss)不是最佳选择,因为它不考虑类别信息和离散输出的问题。负对数似然(NLL)损失函数被提出作为更适合的替代方案,因为它能够更好地处理分类问题,尤其是在概率较低时能更快地降低损失。
摘要由CSDN通过智能技术生成

引言

在深度学习中,损失函数的选择对于模型的训练和性能至关重要。均方误差损失(Mean Squared Error Loss,MSE Loss)常用于回归问题,但对于分类任务来说,其效果并不理想。本文将深入探讨为什么MSE Loss不适合处理分类任务。

分类任务的特性

分类任务的目标是将输入样本分为不同的类别。对于分类问题,以下特性使得MSE Loss并不适用:

  1. 类别不均衡:在分类任务中,不同类别的样本数量往往不均衡,而MSE Loss对所有样本一视同仁,导致模型在训练过程中偏向数量较多的类别。
  2. 类别信息的重要性:对于分类任务来说,类别信息是至关重要的。MSE Loss无法体现类别信息,使得模型难以学习到有意义的特征。
  3. 离散的输出:分类问题的输出是离散的类别标签,而MSE Loss是连续的损失函数,无法直接应用于离散输出。

举例说明

假设当前任务为猫狗二分类任务,猫的label为1, one-hot编码为[0, 1],狗的label是0,one-hot编码为[1, 0];

假设选取模型的最后输出维度为(N, 2), 其中N为Batch size,2为num_classes。

问题1: 为什么MSE Loss不适合处理分类任务?

如果我们选择MSE Loss作为猫狗二分类任务的损失函数,比如某个样本类别为猫,label为[0, 1], 模型的输出为[0.48, 0.52]。

那么MSE Loss所做的就是引导模型在处理这个样本时,模型输出的第一个值越接近0越好,模型输出的第二个值越接近1越好;但我们有必要让模型的输出精确到0/1吗?

分析

  1. 分类任务常用的评估指标是准确率,并不是回归任务常用的RMSE、MSE等指标;因此,对于分类任务,我们更在乎的是分类的准确率==>我们希望损失函数奖励正确分类,惩罚错误分类,而正确分类不一定非得让模型的输出精确到0/1
  2. 我们实际上是利用argmax函数从模型的输出得到分类结果,argmax函数的功能简单来说就是返回序列最大值对应的索引,例如argmax([0.48, 0.52])的返回值为1, 也就是模型预测这个样本是猫==>实际上只要模型的输出的第二个值>第一个值,就已经分类正确了。既然分类正确,对于这个样本的损失应该已经趋于平稳/收敛才比较合理,显然MSE Loss远远没有收敛(因为输出[0.48, 0.52]对于目标[0,1]还差得很远)
  3. 综合来看,MSE Loss并不适合处理分类任务。那么有没有一种Loss只要输出序列最大值的索引和标签能对上,就奖励(损失很低),否则就惩罚(损失很高)呢?——负对数似然(Negative Log Likelihood, NLL)损失函数

负对数似然(NLL)损失函数

公式如下:
NLL Loss

其中,N为样本个数, o u t p u t i output_{i} outputi表示第i个样本的输出(经过softmax函数,输出概率之和为1), l a b e l i label_{i} labeli表示第i个样本的标签(对于猫狗二分类,标签为0/1), 那么 o u t p u t i [ l a b e l i ] output_{i}[label_{i}] outputi[labeli]表示的便是目标类别的输出概率。

NLL Loss函数以目标类别的预测概率作为输入,其曲线如下所示:
NLL Loss曲线

从上图可以看出:

  • 当目标类别的概率较低时,NLL非常高,且曲线下降速度非常快;
  • 当目标类别的预测概率大于0.5时(由于输出的概率之和为1,此时argmax得到的预测类别一定是目标类别), NLL较低,且已经趋于平缓/收敛;

因此,相比于MSE Loss, NLL Loss更适用于处理分类问题,而分类任务常用的交叉熵损失正是基于NLL Loss!!!(基于NLL Loss的交叉熵函数的pytorch保姆级复现见下期博客)

结束语

  • 亲爱的读者,感谢您花时间阅读我们的博客。我们非常重视您的反馈和意见,因此在这里鼓励您对我们的博客进行评论。
  • 您的建议和看法对我们来说非常重要,这有助于我们更好地了解您的需求,并提供更高质量的内容和服务。
  • 无论您是喜欢我们的博客还是对其有任何疑问或建议,我们都非常期待您的留言。让我们一起互动,共同进步!谢谢您的支持和参与!
  • 我会坚持不懈地创作,并持续优化博文质量,为您提供更好的阅读体验。
  • 谢谢您的阅读!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高斯小哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值