关于常见离散分类损失函数之间的区别与联系

常见的分类损失函数学习笔记:

以下主要简述基于逻辑回归和交叉熵相关的四个损失函数torch.nn.BCELoss和torch.nn.BCEWithLogitsLoss,torch.nn.NLLLoss和torch.nn.CrossEntropyLoss。

1-torch.nn.NLLLoss和torch.nn.CrossEntropyLoss函数

多用于多分类任务,对每个值求softmax之后,输出结果表示输入样本属于制定类别的概率值,所有输出结果和为1,不同类别之间相关且互斥。

其区别与联系在于:CrossEntropyLoss= softmax+log+NLLLoss;

该部分与softmax函数息息相关,进行loss计算前必须进行softmax函数计算,保证不同类别的预测概率只和为1,确保不同类别之间的互斥属性。

2-torch.nn.BCELoss和torch.nn.BCEWithLogitsLoss函数

作为一组常用的二元交叉熵损失函数。多用于单标签二分类或者多标签二分类问题,对每一个值求sigmoid之后,将结果映射到0~1之间,不保证不同类别之间的输出结果和为1,不同类别之间相互独立但不互斥。

其区别与联系在于:BCEWithLogitsLoss = sigmoid+BCELoss;

该部分loss与sigmoid激活层强强相关,计算loss前,必须通过sigmoid激活计算,保证loss计算过程的输入为0~1之间,同时不同类别之间有没有相关关系。

注意:

当进行二分类的时候,采用torch.nn.NLLLoss或者torch.nn.CrossEntropyLoss函数时,网络最后一层的输出需要是(batchsize,2),且每一个样本对应的输出的类别概率和为1;
当采用torch.nn.BCELoss或者torch.nn.BCEWithLogitsLoss函数时,网络最后一层的输出为(batchsize,1),输出结果在0~1之间。

个人理解:

在具体应用上,无论是通过sigmoid激活函数的输出结果还是softmax的输出结果,其结果都在0~1之间表示预测概率。值得提到的是,sigmoid输出结果中不同类别之间没有相关关系,softmax输出的不同类别之间存在互斥关系。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值