![深度学习应用与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/47/47549047/b_47549047.jpg)
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)。使用独热编码可以将离散标签的取值扩展到欧几里得空间,从而使得离散标签的某个取值对应欧几里得空间的某个点,并且使得特征之间的距离计算更加合理。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_25_3.jpg?sign=1738852597-nJ4uQ59bVdFtHmhiqhyi3KoJyaQfRF9s-0-8f3c9fdb8e26428712a78e75988a5b8b)
图1.10 三分类模型原理图
三分类模型原理图如图1.10所示。其中,x1、x2、x3、x4为输入特征,y1、y2、y3为以独热编码的方式共同组成预测结果。除二分类模型之外(使用sigmoid函数进行预测,详见1.3.2节),其他模型最终预测的类别个数和输出层的神经元个数是一致的,输出层一个神经元对应一个类别,神经元的输出值为对应该类别的概率。
在多分类模型中,softmax 函数的作用是将输出层神经元的输出值转换为概率,具体计算公式如下。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_26_1.jpg?sign=1738852597-ExUg7I34GHLz1FFHDuymCaTZAUwCus18-0-6691834785f06a043ac5b1c91eec8fc7)
式中,x 表示输入特征;表示预测样本某一个类别的概率;c 表示样本的类别个数。softmax函数的计算原理如图1.11所示。z1、z2、z3的值经过softmax函数处理过后分别转换为概率,对应的概率值为0.88、0.12、0,分别对应三个类别的预测概率。最终三分类模型的预测类别为第一个,因为此类别的概率值最高。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_26_3.jpg?sign=1738852597-kW5AK6rxBoHg5zAE7k5KFuXEJxfoihDZ-0-98d100bf6a92a6576a06d9a05c8de4f4)
图1.11 softmax函数的计算原理图
多分类模型可以使用TensorFlow实现,代码如下所示。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_26_4.jpg?sign=1738852597-68mT1Fu6vBQT1DgRfgfxUZVrJPPLR6eU-0-f419454ad998e227dab0df4b3dce946a)
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_27_1.jpg?sign=1738852597-4PrT5eqI45yBWo0vmt2DlxAQkWvocFFg-0-5b0a203845c7775a71f4bb6049cbb867)
运行代码,结果如下所示。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_27_2.jpg?sign=1738852597-1SJVdMnRkxjFPbAEykthhsX8l0l1k2oI-0-201228b9f74bc2970f9e544f60b0fc7e)
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_28_1.jpg?sign=1738852597-jTg7loREzBS9QwJlEDQjJe1QrEYEqo20-0-d7584dea78a451fe8c268fa74636e319)
多分类模型也可以使用PyTorch实现,代码如下所示。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_28_2.jpg?sign=1738852597-0FPkQzK6cOYIVrEpMspcZCt7yXACRzBB-0-e5199e54d6e794b8120df98c93e56afc)
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_29_1.jpg?sign=1738852597-RlQE9FUuvCcnOOmmX2DXybkJH13XzDC8-0-8256d0248212784fd6364782cded1f57)
运行代码,结果如下所示。
![](https://epubservercos.yuewen.com/4F2D5D/26947460607597206/epubprivate/OEBPS/Images/45365_29_2.jpg?sign=1738852597-EKPjPuE9iTadGkMZroUSnl4csglgahxV-0-42da8659bf8716cfdf4408e9ac701d3a)