AI分类任务种类分为3大类:二分类任务,多标签多分类任务,单标签多分类任务。
1 二分类任务
二分类任务很简单,就是"是"与"不是"。输入一个图片,判断是不是有猫,是为1,不是为0。
输出层神经元个数有两种情况:
(1)输出层只有一个神经元,各个输出神经元的处理方法(这里只有一个神经元):
logits+sigmoid激活+0或1标签+BCE损失计算。
(2)输出层的神经元有2个,对于这种特殊情况,各个输出神经元的处理方法:
logits+softmax激活+onehot编码标签+CCE损失计算。
二分类任务主流多是第一种情况,第二种情况少见。
2 多标签多分类任务
多标签多分类任务就输入有多个标签(即多个类型),输出类型也是多个(至少2个类别)。
什么意思?比如一张图片里有猫和狗两个类别,输出类别是人/猫/狗/车/房等5个类别,即输出层有5个神经元------每个神经元代表一类------就像信号灯一样,我亮起来给你留灯,你属于我这一类------你训练的目标就是让输出层中代表猫和狗的2个神经元同时输出1。
这种和二分类任务的第一种情况一样,所以我们可以把多标签多分类分解为多个二分类任务,于是它的解法和二分类任务第一种情况一样,各个输出神经元的处理方法:
logits+sigmoid激活+0或1标签+BCE损失计算。
正因为它和二分类任务主流一样,所以把它紧挨着二分类讲。要不然我为啥不先说单标签多分类任务呢?
3 单标签多分类任务
单标签多分类任务就是在多个分类中选一个类别作为你的类别。
比如你定的模型输出的类别有人/猫/狗/车/房等5大类别,你输入的图片只有一个标签(属于5类中的一类)。也就是说输出层神经元有5个,模型每次推理选择5类中最大的值作为输入的标签,在和真实标签比对进行训练。
也就是说真实标签是onehot编码。
于是,我们可以这样处理:
logits+softmax激活+onehot编码标签+CCE损失计算。
可以看到和二分类任务的第二种情况一样!