1. 多分类网络模型
前面我们看到,基于 Sigmoid 激活函数设计的神经网络模型,本质上是01逻辑电路向[0,1]区间的模糊逻辑电路的推广。对于二分类网络模型而言,最后一个输出节点就够了,足以表示0、1两种类型。
对于更多的分类,例如手写体识别,需要输出0、1、…、9等十种类型。简单地讲,可以设计10个不同的而分类器:0和非0,1和非1,2和非2,等等。但是考虑到这十个二分类模型有可能共享半平面分类器和中间的逻辑,因此,可以融合成一个神经网络模型。参见下图:
2. one-hot 编码
最终输出10维向量,表示0、1、2、…、9这十个数字。因为这个十维向量,理论上看任何时候只有一个分量的值为1,其他分量均为0,因此,这个编码方式称为 one-hot 编码。参见下表
数字 | one-hot 编码 |
---|---|
0 | (1, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
1 | (0, 1, 0, 0, 0, 0, 0, 0, 0, 0) |
2 | (0, 0, 1, 0, 0, 0, 0, 0, 0, 0) |
… | … |
9 | (0, 0, 0, 0, 0, 0, 0, 0, 0, 1) |
从技术上来讲,one-hot编码把复杂的分类问题分解成了若干个二分类网络,简化了神经网络的建模的复杂度。
数字手写体自动识别的网络模型,有没有可能最后只提供一个输出,直接用0、1、2,这样的结果表示分类结果?我觉得这样做缺乏理论上的依据。前面几篇文章中我已经讲过了,分类算法的神经网络模型,是从半平面、凸集、二分类结果、one-hot多分类结果,一步一步增量式建立起来的。直接一个输出节点表示10个类别标签,我觉得还是蛮复杂的。把 one-hot 结果解释成一个输出是有可能的,但是这样做是不是有点自找麻烦?