多分类神经网络:Softmax回归

在机器学习中,我们会使用二分类算法的Many-vs-Many(多对多)和One-vs-Rest(一对多)模式来进行多分类。其中,OvR是指将多个标签类别中的一类作为类别1,其他所有类别作为类别0,分别建立多 个二分类模型,综合得出多分类结果的方法。MvM是指把好几个标签类作为1,剩下的几个标签类别作为0,同样分别建立多个二分类模型来得出多分类结果的方法。这两种方法非常有效,尤其是在逻辑回归 做多分类的问题上能够解决很多问题,但是在深度学习世界却完全不奏效。理由非常简单:

  1. 逻辑回归是一个单层神经网络,计算非常快速,在使用OvR和MvM这样需要同时建立多个模型的方 法时,运算速度不会成为太大的问题。但真实使用的神经网络往往是一个庞大的算法,建立一个模 型就会耗费很多时间,因此必须建立很多个模型来求解的方法对神经网络来说就不够高效。

  2. 我们有更好的方法来解决这个问题,那就是softmax回归。

多分类神经网络:Softmax回归

多分类神经网络:Softmax回归

那每个概率是如何计算出来的呢?来看Softmax函数的公式:

多分类神经网络:Softmax回归

其中e为自然常数(约为2.71828),z与sigmoid函数中的z一样,表示回归类算法(如线性回归)的结果。K表示该数据的标签中总共有K个标签类别,如三分类时K=3,四分类时K=4。k表示标签类别k类。很容易可以看出,Softmax函数的分子是多分类状况下某 一个标签类别的回归结果的指数函数,分母是多分类状况下 所有标签类别的回归结果的指数函数之和,因此 Softmax函数的结果代表了样本的结果为类别k的概率

多分类神经网络:Softmax回归

torch中的softmax函数有两个参数,第一个参数是我们输入的用来进行计算的张量z,另一个参数则是 希望运行softmax计算的维度的索引。softmax函数只能对单一维度进行计算,它只能够识别单一维度上的不同类别,但我们输入softmax的张量却可能是一个很高维的张量。所以softmax函数中需要我们输入的,就是我们希望在哪个维度上进行softmax运算。比如:

多分类神经网络:Softmax回归

对于s而言,我们现在有三个维度——最外层代表了”2个二维张量”,3则代表每个二维张量中有3行,最后的2则代表每个二维张量中有2列。此时,我们可以从外向内索引我们的维度,索引0对应的就是最外层,索引2对应的就是最里层,相似的,我们也可以反向索引,-1对应的就是最里层,-3对应的就是最外层。

torch.softmax(s,dim=0)

在整个张量中,有2个张量,一个二维张量就是一类

torch.softmax(s,dim=1)

在一个二维张量中,有3行数据,每一行是一种类别

torch.softmax(s,dim=2)

在每一行中,有4个数据,每个数据是一种类别

代码如下:

多分类神经网络:Softmax回归

多分类神经网络:Softmax回归

在实际中,训练神经网络时往往会使用softmax函数,但在预测时就不再使用softmax函数,而是直接读取结果最大的z对应的类别了。但无论如何,了解softmax是必要的,也是非常有用的。

Original: https://blog.csdn.net/qq_44289607/article/details/122754433
Author: L_bloomer
Title: 多分类神经网络:Softmax回归

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/663247/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球