【深度学习】多分类问题和多标签分类问题

上一章——激活函数


什么是多分类问题

在这里插入图片描述在之前的课程中,我们学习了二分问题,二分问题中的所有数据会被分类为0和1(或者Ture和False)两种输出标签。但是在大多数情况下,分类问题的输出远远不止两种情况,例如之前在课程中举例的肿瘤问题,肿瘤被分为良性和恶性两种,但实际上会有更多的分类情况,它有可能是A型,B型,C型…我们将这种拥有2种以上输出标签的问题称为多分类问题。虽然输出y依旧只能取值有限的离散值,但是输出标签的种类将会有两个以上。

MNIST被称为机器学习的“Hello World”,MNIST要求算法识别出不同的字迹所对应的数字,所有的阿拉伯数字总共有10个(0~9),MNIST就是一个典型的多分类问题。

在这里插入图片描述
在二分问题中,我们的拟合方法是找到假设函数 g ( z ) g(z) g(z)中的决策边界z,那么推广到多分类问题中,也是同样的方法,二分问题只需一条决策边界,而往后的n分问题则需要n条决策边界。类比二分问题中我们使用的是逻辑回归,在多分问题中我们将学习Softmax算法。


Softmax

Softmax算法是对逻辑回归的推广和泛化,是一种针对多分类环境下的二元分类算法
在这里插入图片描述
首先我们要指出一点:所有离散值的预测概率之和一定为1。
以二分问题中的逻辑回归为例,假设 P ( y = 1 ∣ x ) = 0.71 P(y=1|x)=0.71 P(y=1∣x)=0.71,那么 P ( y = 0 ∣ x ) = 1 − 0.71 = 0.29 P(y=0|x)=1-0.71=0.29 P(y=0∣x)=10.71=0.29,
这个很好理解,因为输出结果不是0就是1,那么 P ( y = 1 ∣ x ) + P ( y = 0 ∣ x ) = 1 P(y=1|x)+P(y=0|x)=1 P(y=1∣x)+P(y=0∣x)=1,那么我们推广到多元
在这里插入图片描述
在这里插入图片描述

我们会发现Softmax的计算公式与Sigmoid相似,
Softmax: z j = w ⃗ j ⋅ x ⃗ + b j ( j = 1... N ) z_j=\vec w_j \cdot \vec x+b_j(j=1...N) zj=w jx +bj(j=1...N)
a j = e z j ∑ k = 1 N e z k = P ( y = j ∣ x ⃗ ) a_j=\frac{e^{z_j}}{\sum^N_{k=1} e^{z_k}}=P(y=j|\vec x) aj=k=1Nezkezj=P(y=jx )
如果想要从数学上理解Softmax函数,我们必须先了解一个概念:

  • 贝叶斯公式

贝叶斯公式

条件概率公式:
P ( x ∣ y ) = P ( x y ) P ( y ) P(x|y)=\frac {P(xy)}{P(y)} P(xy)=P(y)P(xy)
其中 P ( x ∣ y ) P(x|y) P(xy)代表在y事件已经发生的情况下x事件发生的概率, P ( x y ) P(xy) P(xy)代表事件xy都发生的概率,P(y)代表y事件发生的概率(无论x事件是否发生)

全概率公式:
P ( x ) = ∑ i = 1 n P ( y i ) P ( x ∣ y i ) P(x)=\displaystyle\sum^n_{i=1}P(y_i)P(x|y_i) P(x)=i=1nP(yi)P(xyi)
因此x事件发生的全概率是在每一种 y i y_i yi事件发生的情况下事件x发生的概率之和

贝叶斯公式:
P ( y i ∣ x ) = P ( x ∣ y i ) P ( y i ) P ( x ) = P ( x ∣ y i ) P ( y i ) ∑ j = 1 n P ( y i ) P ( x ∣ y j ) P(y_i|x)=\frac {P(x|y_i)P(y_i)}{P(x)}=\frac {P(x|y_i)P(y_i)}{\sum^n_{j=1}P(y_i)P(x|y_j)} P(yix)=P(x)P(xyi)P(yi)=j=1nP(yi)P(xyj)P(xyi)P(yi)
其中根据条件概率公式我们知道 P ( x ∣ y i ) P ( y i ) = P ( x y i ) , P(x|y_i)P(y_i)=P(xy_i), P(xyi)P(yi)=P(xyi)即为x和 y i y_i yi事件都发生的概率,P(x)为x事件发生的全概率
因此 P ( y i ∣ x ) = P ( x y i ) P ( x ) P(y_i|x)=\frac {P(xy_i)}{P(x)} P(yix)=P(x)P(xyi)

在二分类问题中,由于分类只有两种,因此事件y只有两项,如果我们将贝叶斯公式上下同时除以 P ( y 1 ) P ( x ∣ y 1 ) P(y_1)P(x|y_1) P(y1)P(xy1)
P ( y 1 ∣ x ) = P ( y 1 ) P ( x ∣ y 1 ) P ( y 1 ) P ( x ∣ y 1 ) + P ( y 2 ) P ( x ∣ y 2 ) P(y_1|x)=\frac {P(y_1)P(x|y_1)}{P(y_1)P(x|y_1)+P(y_2)P(x|y_2)} P(y1x)=P(y1)P(xy1)+P(y2)P(xy2)P(y1)P(xy1)
= 1 1 + P ( y 2 ) P ( x ∣ y 2 ) P ( y 1 ) P ( x ∣ y 1 ) =\frac {1}{1+\frac {P(y_2)P(x|y_2)}{P(y_1)P(x|y_1)}} =1+P(y1)P(xy1)P(y2)P(xy2)1

我们将 P ( y 2 ) P ( x ∣ y 2 ) P ( y 1 ) P ( x ∣ y 1 ) \frac {P(y_2)P(x|y_2)}{P(y_1)P(x|y_1)} P(y1)P(xy1)P(y2)P(xy2)设为 e − z e^{-z} ez
P ( y 1 ∣ x ) = 1 1 + e − z P(y_1|x)=\frac {1}{1+e^{-z}} P(y1x)=1+ez1
是不是有点眼熟?没错,这就是Sigmoid函数
其中 z = l n P ( y 2 ) P ( x ∣ y 2 ) P ( y 1 ) P ( x ∣ y 1 ) z=ln\frac {P(y_2)P(x|y_2)}{P(y_1)P(x|y_1)} z=lnP(y1)P(xy1)P(y2)P(xy2),z与向量的关系请参考sigmoid与条件概率的关系及推导过程
之所以要设成e的指数形式,是为了防止概率出现负数,以e的指数形式表示是不会出现负数的
我们说softmax是Sigmoid的推广,你可以简单地把 P ( y 1 ∣ x ) 看作 t 1 t 1 + t 2 , P(y_1|x)看作\frac {t_1}{t_1+t_2}, P(y1x)看作t1+t2t1, P ( y 2 ∣ x ) = 1 − t 1 t 1 + t 2 = t 2 t 1 + t 2 P(y_2|x)=1-\frac {t_1}{t_1+t_2}=\frac {t_2}{t_1+t_2} P(y2x)=1t1+t2t1=t1+t2t2,然后推广到n阶就有 P ( y N ∣ x ) = t N t 1 + . . . + t N P(y_N|x)=\frac {t_N}{t_1+...+t_N} P(yNx)=t1+...+tNtN,当然我只是从结果上讲,没有什么数学推理,具体原理贴在下面链接

本文只是简单地提一下概率论的一些基本知识,至于softmax公式的推导,如果还想深究里面的数学原理,可以看看这个视频,作者本人打算学完这个系列之后在复习这些内容:softmax是为了解决归一问题凑出来的吗?和最大熵是什么关系?最大熵对机器学习为什么非常重要?


softmax的损失函数

回到我们上面的内容,Softmax:
z j = w ⃗ j ⋅ x ⃗ + b j ( j = 1... N ) z_j=\vec w_j \cdot \vec x+b_j(j=1...N) zj=w jx +bj(j=1...N)
a j = e z j ∑ k = 1 N e z k = P ( y = j ∣ x ⃗ ) a_j=\frac{e^{z_j}}{\sum^N_{k=1} e^{z_k}}=P(y=j|\vec x) aj=k=1Nezkezj=P(y=jx )

在这里插入图片描述
我们说Softmax是逻辑回归的推广,那么其损失函数也应当类似,
其中 l o s s ( a 1 , . . . . a N , y ) = { − l o g   a 1    i f   y = 1 − l o g   a 2    i f   y = 2 . . . − l o g   a N    i f   y = N loss(a_1,....a_N,y)= \begin{cases} -log\space a_1 \space\space if \space y=1 \\ -log\space a_2 \space\space if \space y=2 \\ ... \\ -log\space a_N \space\space if \space y=N \end{cases} loss(a1,....aN,y)= log a1  if y=1log a2  if y=2...log aN  if y=N

当概率 a i a_i ai越接近0,损失越大,其中N代表单层内神经元的个数


多标签分类问题

在这里插入图片描述

如果我们想要用人工智能来实现视觉识别,就像你平时在上网时遇到的一些验证题目:“为了验证您不是机器人,请找出图中的汽车”。我们想要实现对一张图片同时多处进行识别,以上图为例,识别图中是否有轿车?是否有公交车?是否有行人?
那么该例子中输入图片x,我们将会得到一个含三个数字的输出向量y。

注意:多标签分类问题和我们在上面所说的多分类问题并不是同一个东西,在多分类问题中,尽管有多种不同的取值,但我们最后得到的输出结果往往是数字y。其本质回答的是一个问题:预测值属于哪一类?
而在多标签分类问题中,最终的输出结果是一个含多个数字的向量,这意味着你可以认为它同时解答了多个问题:是否存在a?是否存在b?…是否存在n?在多分类问题中,最终结果只能是多个标签中的一个,但在多标签分类问题中最终结果可能是多个标签同时存在。
在这里插入图片描述
我们怎样去实现多标签分类问题?如果说回答三个问题,我们当然可以设计三个神经网络,来分别解决。但是这样未免也太浪费了,实际上由于这三个问题的结构都是一模一样的,本质上来说都是同样的算法,它们的隐藏层都是一样的,因此我们可以将它们进行合并。
在这里插入图片描述
最终,我们可以构造这样的一个神经网络,唯一的区别在于输出层使用了多个神经元而非单个,相当于我们将上面的三个神经网络的输出层的神经元合并到同一个输出层。而且注意:在此处我们使用的是Sigmoid函数而非Softmax。不是说Softmax用于解决多个标签的分类问题吗?因为本质上该例子中需要预测的问题是三个二分问题,所以我们使用的是三个Sigmoid函数而非Softmax。

在学习中,不要搞混了多分类问题和多标签分类问题的概念。你可以简单理解为:多分类问题中的所有输出标签都是互斥的,如果是A那就不能是B、C…
而在多标签分类问题中,所有的输出标签并无互斥关系,输出有A也不影响输出B,它们可以同时存在。


下一章——模型评估

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
深度学习多分类投票是在应用深度学习算法进行多分类任务时常用的一种方法。B站作为一个视频网站,应用深度学习多分类投票可以帮助提高视频分类的准确性,并增强用户对视频的个性化推荐体验。 深度学习多分类投票的基本思路是通过训练一个深度神经网络模型,将输入的视频数据进行特征提取和分类预测。在训练过程中,模型通过反向传播算法自动优化参数,以提高分类准确度。 多分类投票的思想是通过将训练得到的模型运用于多个独立的样本,然后根据不同样本的分类结果进行投票统计。最终,根据投票结果确定最终分类标签。 在B站应用深度学习多分类投票有以下的好处: 1. 提高准确性:通过使用深度学习算法,能够更好地捕获视频数据的特征,从而提高分类准确度。 2. 兼顾个性化推荐:通过多分类投票可以充分利用不同用户的喜好和观看历史数据,将更准确的个性化推荐内容呈现给用户。 3. 节省人力成本:深度学习多分类投票可以自动分类大量的视频数据,减轻人工分类的工作负担,提高分类效率。 4. 提升用户体验:准确的视频分类可以帮助用户更快速地找到自己感兴趣的内容,提升用户对B站的满意度和使用体验。 总之,深度学习多分类投票在B站的应用可以带来更准确、高效、个性化的视频分类和推荐服务,提升用户的观看体验,同时也降低了人力成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值