25、二分类、多分类与多标签问题的区别
二分类、多分类与多标签的基本概念
二分类:表示分类任务中有两个类别,比如我们想识别一幅图片是不是猫。也就是说,训练一个分类器,输入一幅图片,用特征向量x表示,输出是不是猫,用y=0或1表示。二类分类是假设每个样本都被设置了一个且仅有一个标签 0 或者 1。
多类分类(Multiclass classification): 表示分类任务中有多个类别, 比如对一堆水果图片分类, 它们可能是橘子、苹果、梨等. 多类分类是假设每个样本都被设置了一个且仅有一个标签: 一个水果可以是苹果或者梨, 但是同时不可能是两者。
多标签分类(Multilabel classification): 给每个样本一系列的目标标签. 可以想象成一个数据点的各属性不是相互排斥的(一个水果既是苹果又是梨就是相互排斥的), 比如一个文档相关的话题. 一个文本可能被同时认为是宗教、政治、金融或者教育相关话题。
多分类问题与二分类问题关系
两类问题是分类问题中最简单的一种。而很多多类问题可以被分解为多个两类问题进行求解。
多标签问题与二分类问题关系
这幅图中有一栋房子、树、云、草,具有多个标签。多标签问题主要体现含有什么标签,而多分类问题主要体现区分出。
整个网络是fully connected全连接网络。
* 网络结构是输入层=你的特征的维度。
* 隐藏层是500*100,激励函数都是relu。隐藏层的节点数量和深度请根据自己的数量来自行调整,这里只是举例。
* 输出层是你的label的维度。使用sigmoid作为激励,使输出值介于0-1之间。
* 训练数据的label请用0和1的向量来表示。0代表这条数据没有这个位的label,1代表这条数据有这个位的label。假设3个label的向量[天空,人,大海]的向量值是[1,1,0]的编码的意思是这张图片有天空,有人,但是没有大海。
* 使用binary_crossentropy来进行损失函数的评价,从而在训练过程中不断降低交叉熵。实际变相的使1的label的节点的输出值更靠近1,0的label的节点的输出值更靠近0。
总结
分类问题名称 |
输出层使用激活函数 |
对应的损失函数 |
二分类 |
sigmoid函数 |
二分类交叉熵损失函数 |
多分类 |
softmax函数 |
多类别交叉熵损失函数 |
多标签分类 |
sigmoid函数 |
二分类交叉熵损失函数 |
参考文献
[1] https://juejin.im/post/5b38971be51d4558b10aad26