【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss

什么是多标签分类

【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第1张图片

图片中是否包含房子?你的回答就是有或者没有,这就是一个典型的二分类问题(一个问题两个选项,是或不是)。

同样还是这幅照片,问题变成了:这幅照片是谁拍摄的?备选答案你,你的父亲,你的母亲,这就变成了一个多分类问题(一个问题多个选项)。

若此时问题如下:
在这里插入图片描述
你会发现图中所示的答案有多个yes,而不同于之前的多分类只有一个yes。这就是多标签分类

多标签的问题的损失函数是什么

这里需要先了解一下softmax 与 sigmoid函数
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第2张图片
这两个函数最重要的区别,我们观察一下:
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第3张图片
区别还是很明显的。
综上,我们可以得出以下结论:
在这里插入图片描述

pytorch中的实现

torch.nn.CrossEntropyLoss()

交叉熵快速理解参考:博客2
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第4张图片
CrossEntropyLoss(pre, label, ignore_index = -1)
该函数会默认对预测值pre做softmax后,再计算交叉熵。

BCELoss

在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵。
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第5张图片
需要先用Sigmoid给这些值都映射到0~1之间:
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第6张图片
假设Target是:
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第7张图片
计算后的loss为:【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第8张图片

BCEWithLogitsLoss

BCEWithLogitsLoss就是把Sigmoid+BCELoss合成一步。我们直接用刚刚的input验证一下是不是0.7193:
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss_第9张图片

补充阅读:
关于交叉熵损失函数详解:博客1

你可能感兴趣的:(【AI模型训练与部署】,【CV论文及数学原理】,【pytorch】,深度学习,机器学习,pytorch,人工智能)