一般情况下,我们都认为逻辑回归(LR)用来解决二分类问题,BCE损失函数也是用来解决二分类问题的,那逻辑回归以及BCE损失函数能否用来做多分类任务呢,答案是肯定的。有两种方法
一、将多分类任务拆解成多个二分类任务;
二、对传统的逻辑回归模型进行改造,使之变为softmax回归模型进行多分类任务求解(也就是sklearn中逻辑回归的multi_class=‘multinomial’), 我们可以认为多元逻辑回归就是sofmax回归

  • 多分类任务拆解成多个二分类器
    将多分类任务拆为多个二分类任务求解,一般有3种拆分策略:
    1. OvO(一对一,One vs One):假如数据D中有N个类别,将N个类别进行两两配对,产生N(N-1)/2个二分类器,在预测中,将测试样本输入这N(N-1)/2个二分类器中得到相应个数的预测结果,然后再将被预测结果数最多的(Voting)作为最终分类结果。
    2. OvR(一对其余,One vs Rest): 将一个类别作为正例,其余所有类别作为反例,这样N个类别可以产生N个二分类器,将测试样本输入这些二分类器中中得到N个预测结果,如果仅有一个分类器预测为正类,则将对应的预测结果作为最终预测结果。如果有多个分类器预测为正类,则选择置信度最大的类别作为最终分类结果。
    3. MvM(多对多,Many vs Many):将数据集中的若干个类作为正例,若干个其他类作为反例。MvM的正、反类构造必须有特殊的设计,而不是随意选取,通常采用“纠错输出码(ECOC)”,产生编码矩阵后划分类别。
  • sigmoid->softmax
    二分类到多分类-ovr,ovo,mvm,sofmax
    如上图,softmax各类互斥,概率和为1,形式为(0.7,0.2,0.1)
深度学习框架中的交叉熵损失

一些结论:

  • 多项逻辑回归就是sofmax回归
  • sofmax回归参数的极大似然估计等价于最小化负对数似然函数
  • 损失函数就是负对数似然函数
    二分类到多分类-ovr,ovo,mvm,sofmax
caffe中的softmaxWithLoss

Softmax Layer 接 Multinomial Logistic Loss Layer(负对数似然损失函数)

pytorch的nn.CrossEntropyLoss == caffe的softmaxWithLoss

log_sofmax 接 nn.NLLLoss

pytorch的nn.NLLLoss == caffe的Multinomial Logistic Loss Layer

负对数似然损失 Negative Log Liklihood loss
softmax回归的 的MLE估计,等价于优化负对数似然损失函数求得的参数;一般用这个损失函数,前面需要添加softmax层

pytorch的nn.BCELoss(二分类)

二类交叉熵损失,就是-Σy_i*log(p_i)

pytorch的nn.BCEWithLogitsLoss()(二分类)

sigmoid+BCEloss

相关文章:

  • 2021-06-16
  • 2022-01-24
  • 2021-12-23
  • 2021-12-03
  • 2021-05-27
  • 2021-05-20
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
相关资源
相似解决方案