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

news2024/11/17 15:30:26

上一章——激活函数

文章目录

  • 什么是多分类问题
  • Softmax
    • 贝叶斯公式
    • softmax的损失函数
  • 多标签分类问题


什么是多分类问题

在这里插入图片描述在之前的课程中,我们学习了二分问题,二分问题中的所有数据会被分类为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,它们可以同时存在。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java_小项目书城

1.概述 书城的基本功能: 展示书籍上新书籍下架书籍退出应用 书城项目所涉及到的知识点: 用户交互–键盘录入分支结构,循环结构面向对象的思维,封装对象集合的使用 2.菜单的编写 这部分代码就是读取用户键盘的录入&#xff0…

Qt线程池

目录1、线程池是什么?2、Qt线程池2.1、用法例程2.2、线程池对性能的提升2.3、运行算法单线程写法线程池写法1、线程池是什么? 线程池是一种线程使用模式,它管理着一组可重用的线程,可以处理分配过来的可并发执行的任务。 线程池设…

2023最新一线大厂Java八股文强势开源,整整8w字,711页内容

前言 大家都知道每年的3月和4月都是互联网大厂疯狂招人的黄金期,也就是程序员的黄金跳槽期,所以被称为金三银四。 无论你是刚出校园大门的菜鸟,还是对跳槽蓄谋已久的老手,都会在这个时候找到新工作和迎来晋升涨薪的最佳时机。 而…

1.InfluxDB简介与安装

InfluxDB简介 InfluxDB是一个时序性数据库,适用场景数据分析,IoT设备数据采集,监控告警等。InfluxDB是采用GO语言编写,底层提供了大量的HTTP协议的API 其他语言的SDK都采用访问HTTP接口的形式对InfluxDB进行操作 InfluxDB官方一…

WPF学习:Slider — 冒泡显示值

想做一个下图所示的Slider,以冒泡的方式显示其Value值,该怎么做呢? 功能要求,当鼠标放在滑块上的时候,冒“泡”显示值;当滑块移动的时候,“泡”跟随移动。 看似简单的功能,但要完美…

扬帆优配“数字经济+实体经济”融合发展,行业增长空间大!

组织以为,数字经济已经逐步成为工业商场和资本商场的共同主题。 2月16日,国家发改委在《求是》杂志发表文章《努力推进经济完成质的有效提升和量的合理增加》。文章指出要加速开展数字经济,加速实施“东数西算”等重大工程,推进数…

计算机网络笔记(四)—— 数据链路层

点对点协议PPP 目前使用最广泛的点对点数据链路层协议 由以下三个部分构成: PPP工作状态 媒体接入控制 主要解决共享信道的协调问题 静态划分信道 复用:通过一条物理线路同时传输多路用户的信号 频分复用(FDM):占用…

DataEase 制作数据可视化大屏经验分享

前言 DataEase 简介 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。 更多详细介…

ChatGPT及相关产品体验与研究

ChatGPT及相关产品体验与研究 我的Github博客仓库链接:ChatGPT及相关产品体验与研究 - Github 一、ChatGPT介绍 1. ChatGPT概述 一句话描述ChatGPT:一个能够通过对话得到你想要的答案的聊天机器人。 ChatGPT 是由 OpenAI 开发的一种基于深度学习的自然…

SPI简介与实例分析

SPI简介 SPI 协议是由Motorola提出的通讯协议 (Serial Peripheral Interface) ,是一种高速全双工的串行通信总线。 SPI 通讯使用 3 条总线 :SCK、 MOSI、 MISO ,以及若干片选线(SS、CS、NSS)。 主机要和哪个从机通信,就把对应的…

看板项目管理使用指南

作为一种项目管理方法,看板涉及创建列出任务详细信息的可视化卡片,并将它们组织到代表生产过程不同阶段的白板列表中。 今天,看板已经从工厂的白板发展到了我们电脑屏幕上的数字看板应用程序形式。现在的看板项目管理方法可帮助团队管理编辑…

CentOS Stream 8配置DNS

1:用CentOS搭建DNS的目的是想解析一台下载服务器,IP地址172.18.0.58,现在是用IP地址方的式访问,想搭建DNS服务器用域名的方式访问。 使用下面的命令查看一下当前系统的Bind版本。 yum info bind 版本是9.11.36.我的CentOS是最小…

KDGK-703S便携式综合校验仪(毫伏发生器)

一、产品简介 KDGK-703S便携式综合校验仪(毫伏发生器)是一种集数显式电压、电流、频率标准信号源、Pt100 铂电阻温度模拟标准信号源、数字式电压、电流、频率测量功能于一体的高精度、高分辨率、多用途的自动化仪表校准仪器。 它具有信号输出和测试功能&…

有关eclipse的使用tips

一、alt/键 会产生单词提示,可以提高编程速度。例如不需要辛辛苦苦的打出:System.out.println();整句,只需要在eclipse中输入syso,然后按住ALT/就会出来System.out.println();在alt键/不管用的情况下,可使用以下方法来…

HDMI AVI InfoFrame

AVI/AUDIO/VSI Infoframe都是HDMI的辅助数据类别,HDMI遵循CEA-861规范,CEA 第八章--CONTROL AND CONFIGURATION 8.2定义了三种InfoFrame。 一个InfoFrame packet载送一个InfoFrame,根据HDMI协议规范,其大小为30字节一个CheckSum。…

关于医院医用医疗隔离电源系统应用案例的分析探讨

【摘要】:介绍该三级医院采用安科瑞医用隔离电源柜,使用落地式安装方式,从而实现将TN系统转化为IT系统,同时监测系统绝缘情况。 【关键词】医用隔离电源柜;IT系统;绝缘情况;中西医结合医院&…

盘点Linux内核网络知识100道题,这篇就够了

计算机网络模型 1、五层因特网协议栈和七层OSI(Open System Interconnections)参考模型分别是什么? 5层:应用层、传输层、网络层、数据链路层、物理层 7层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理…

Gradle安装部署与基础入门详解

【1】Gradle简介 Gradle 是一款Google 推出的基于JVM、通用灵活的项目构建工具,支持Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的build 脚本文…

Delphi 的TZipFile压缩文件自定义(去掉盘符)

关于Delphi中的TZipFile压缩文件,非常方便,该类位于System.Zip单元中,压缩一个目录只需要一条命令TZipFile.ZipDirectoryContents就可以,但是这也有个不方便,就是不能动态增加文件和目录。如果想自定义增加文件或者目录…

【MyBatis】第十篇:mybatis的分页插件---pageHelper

分页无论是那个开发都是常见的使用场景,当然对于分页需要如果自己写的,不过自己写的话可能会需要想到很多: 比如:通过查询sql判断有多少数据,在页面显示共有多少页面。然后每页返回的数据是多少,上一页以及…