二分类问题
我们先看看如何用神经网络在两组不同标签的样本之间画一条明显的分界线。这条分界线可以是直线,也可以是曲线。这就是二分类问题。如果只画一条分界线的话,无论是直线还是曲线,我们用一支笔,即一个神经元,就可以达到目的。
线性二分类 | 非线性二分类 |
---|---|
![]() | ![]() |
多分类问题
如果有三个以上的分类同时存在,我们需要对每一类别分配一个神经元,这个神经元的作用是根据前端输入的各种数据,先做线性处理(Y=WX+B),然后做一次非线性处理,计算每个样本在每个类别中的预测概率,再和标签中的类别比较,看看预测是否准确,如果准确,则奖励这个预测,给与正反馈;如果不准确,则惩罚这个预测,给与负反馈。两类反馈都反向传播到神经网络系统中去调整参数。
线性多分类 | 非线性多分类 |
---|---|
![]() | ![]() |
多分类问题一共有三种解法:
-
一对一
每次先只保留两个类别的数据,训练一个分类器。如果一共有N个类别,则需要训练CN2C^2_NCN2个分类器。以N=3时举例,需要训练(A|B),(B|C),(A|C)三个分类器。推理时,(A|B)分类器告诉你是A类时,需要到(A|C)分类器再试一下,如果也是A类,则就是A类。如果(A|C)告诉你是C类,则基本是C类了,不可能是B类,不信的话可以到(B|C)分类器再去测试一下。
-
一对多
如下图,处理一个类别时,暂时把其它所有类别看作是一类,这样对于三分类问题,可以得到三个分类器。每次做推理时,同时调用三个分类器,再把三种结果组合起来,就是真实的结果。比如,第一个分类器告诉你是“红类”,那么它确实就是红类;如果告诉你是非红类,则需要看第二个分类器的结果,绿类或者非绿类;依此类推。
-
多对多
假设有4个类别ABCD,我们可以把AB算作一类,CD算作一类,训练一个分类器1;再把AC算作一类,BD算作一类,训练一个分类器2。
推理时,第1个分类器告诉你是AB类,第二个分类器告诉你是BD类,则做“与”操作,就是B类。