1.3.3 多分类模型
在深度学习与机器学习中,多分类的概念与原理是不同的,比较明显的是标签的表达方式。在深度学习中,一般情况下,类别标签是使用独热(One-Hot)编码进行表达的。独热编码也叫独热码,是指使用与类别个数相等的0或1组成的一系列二进制数来表示类别,有几个类别就有几个比特(bit),而且对应类别的位置为1,其余位置全为0。例如,一个三分类问题,标签为0、1、2,将其转化为独热编码后,0对应的独热编码为(1,0,0),1对应的独热编码为(0,1,0),2对应的独热编码为(0,0,1)。使用独热编码可以将离散标签的取值扩展到欧几里得空间,从而使得离散标签的某个取值对应欧几里得空间的某个点,并且使得特征之间的距离计算更加合理。
图1.10 三分类模型原理图
三分类模型原理图如图1.10所示。其中,x1、x2、x3、x4为输入特征,y1、y2、y3为以独热编码的方式共同组成预测结果。除二分类模型之外(使用sigmoid函数进行预测,详见1.3.2节),其他模型最终预测的类别个数和输出层的神经元个数是一致的,输出层一个神经元对应一个类别,神经元的输出值为对应该类别的概率。
在多分类模型中,softmax 函数的作用是将输出层神经元的输出值转换为概率,具体计算公式如下。
式中,x 表示输入特征;表示预测样本某一个类别的概率;c 表示样本的类别个数。softmax函数的计算原理如图1.11所示。z1、z2、z3的值经过softmax函数处理过后分别转换为概率,对应的概率值为0.88、0.12、0,分别对应三个类别的预测概率。最终三分类模型的预测类别为第一个,因为此类别的概率值最高。
图1.11 softmax函数的计算原理图
多分类模型可以使用TensorFlow实现,代码如下所示。
运行代码,结果如下所示。
多分类模型也可以使用PyTorch实现,代码如下所示。
运行代码,结果如下所示。