深度学习笔记10-多分类

news2024/11/27 16:49:46

多分类和softmax回归

        在多分类问题中,一个样本会被划分到三个或更多的类别中,可以使用多个二分类模型或一个多分类模型,这两种方式解决多分类问题。

1.基于二分类模型的多分类

        直接基于二分类模型解决多分类任务,对于多分类中的每个目标类别都要训练一个二分类模型。在训练时,将需要识别出的类别的数据作为正例,其余数据为反例,这种训练方式被称为1-VS-Rest,也就是1对其余的策略。

        如果有N个目标类别,训练N个二分类模型,N个模型互相独立,互不干扰,同一个数据每个模型都需要计算一遍。另外对于不同的类别,也可以使用不同的二分类模型进行训练。例如可以使用逻辑回归、SVM、决策树这三种模型应用在同一个分类系统中,来识别不同的类别。

        基于1-VS-Rest策略的多分类,优势是可维护性高、随时可以增加新的类别模型,或者修改升级其中某个模型,都不会对其他已有模型产生影响。另外,分类结果是相互独立的,可以自由选择这些模型的组合方式,进而更有针对性的调试和优化。

2.softmax解决多分类问题

        构建softmax回归模型同时对所有类别进行识别,在softmax回归中包括两步。步骤一:输入一个样本的特征向量,输出多个线性预测结果。步骤二:将这个结果输入到softmax函数,softmax函数会将多个线性输出转换为每个类别的概率。softmax回归会基于输入x,计算o_1,o_2,o_3三个线性输出。可以将softmax回归看作是一个具有多个输出的单层神经网络。

三个目标类型:o_1,o_2,o_3        四个输入特征:x_{1},x_2,x_3,x_4

o_{1}=x_{1}w_{11}+x_{2}w_{12}+x_{3}w_{13}+x_{4}w_{14}+b_{1}

o_{2}=x_{1}w_{21}+x_{2}w_{22}+x_{3}w_{23}+x_{4}w_{24}+b_{2}

o_{3}=x_{1}w_{31}+x_{2}w_{32}+x_{3}w_{33}+x_{4}w_{34}+b_{3}

基于矩阵,计算线性输出o:

o=Wx+b

\begin{bmatrix} o_1\\ o_2\\ o_3 \end{bmatrix}=\begin{bmatrix} w_{11} &w_{12} &w_{13} &w_{14} \\ w_{21} &w_{22} &w_{23} &w_{24} \\ w_{31} &w_{32} &w_{33} &w_{34} \end{bmatrix}*\begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix}+\begin{bmatrix} b_1\\ b_2\\ b_3\\ b_4 \end{bmatrix}

通过softmax函数计算类别的概率

        计算出线性输出o后,将o输入到softmax函数,从而将线性输出o转换为每个类别的预测概率y. 设有n个输出o_1-o_n,第k个输出是o_k,它对应的类别概率是y_k

        y_k=\frac{\exp (o_k)}{\sum_{i=1}^{n}\exp (o_i)}=\frac{e^{o_k}}{e^{o_1}+e^{o_{2}}+...+e^{o_{n}}}

由此通过softmax函数将所有线性输出都转换为0-1之间的实数:y1,y2,...yn\in[0,1],输出的总和y1+y2+...+yn=1.

        softmax函数不会改变线性输出o之间的大小顺序,只会为每个类别分配相应的概率。它的优势在于模型简洁高效,只需要一次训练就可以同时识别所有类别的多分类模型。此外softmax回归也可以很好地处理类别之间的互斥问题,softmax函数可以确保预测结果总和为1。它也存在一些问题,在需要优化模型中的某个类别或者增加新的类别时,会影响到其他所有的类别,产生较高的评估与维护成本。

3.多分类中的交叉熵损失函数

        交叉熵误差:评估模型输出的概率分布和真实概率分布的差异,它有两种形式分别对应二分类与多分类问题,

        二分类问题:E=-[y*log(p)+(1-y)*log(1-p)]

        多分类问题:E=-\sum_{i=1}^{n}y_{i}*log(p_i)

        多分类问题中,如果每个类别之间的定义是互斥的,那么任何样本都只能被标记为一种类别。使用向量y表示样本的标记值,如果有n个类别,那么y就是一个n*1的列向量。向量中只有1个元素是1,其余元素都是0。多分类问题的交叉熵损失,只与真实类别对应的模型预测参数概率有关,因此第i个样本的误差为E^{(i)}=-\sum_{k=1}^{n}y_{k}^{(i)}log(p_{k}^{(i)})=-y_{k}^{(i)}log(p_{k}^{(i)})

y=\begin{bmatrix} 0\\ 1\\ 0\\ ...\\ 0 \end{bmatrix}_{n*1}

m个样本、n个类别的交叉熵误差:E=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{n}y_{k}^{(i)}log(p_{k}^{(i)})

y_{k}^{(i)}表示第i个样本第k个类别的真实标记、p_{k}^{(i)}表示第k个类别的模型预测概率

如果某样本被标记为第2个类别,那么第二个元素标记为1,其余为0.

y^{(i)}=\begin{bmatrix} 0\\ 1\\ 0\\ ...\\ 0 \end{bmatrix} ,

        在交叉熵损失函数中,只有真实类别对应的那一项会被计算在内,其他类别的项在计算求和中均为0,因此,即便模型对其他类别的预测概率不准确,但只要对真实类别的预测概率较高,损失函数的值仍然较低。 

4.softmax回归的数学原理

        softmax回归也被称为多项的逻辑回归,它可以看作是逻辑回归在多分类问题上的推广。

类别个数:n

类别标签:y\in{0,1,...n}

x:样本特征向量

w_{k}:第k个类别的权重

某样本属于类别k的概率:

p(y=k)=softmax(w_{k}x)=\frac{exp(w_{k}x)}{\sum_{i=1}^{n}exp(w_{i}x)}

softmax回归和逻辑回归的关系

        逻辑回归中使用sigmoid函数,sigmoid(z)=\frac{1}{1+e^{-z}},将线性输出z转化为一个概率,这个概率表示样本属于正例的可能性。在softmax中使用softmax函数将输出值z_{k}同样转化为概率softmax(z_{k})=\frac{e^{z_{k}}}{\sum_{i=1}^{n}e^{z_{i}}},这个概率表示样本属于第k个类别的可能性。当类别数为2时,逻辑回归和softmax回归的输出时等价的。

softmax回归中:

类别为0的概率:softmax(z_{0})=\frac{e^{z_{0}}}{e^{z_{0}}+e^{z_{1}}}

类别为1的概率:softmax(z_{1})=\frac{e^{z_{1}}}{e^{z_{0}}+e^{z_{1}}}

\frac{p(y=0)}{p(y=1)}=\frac{e^{z_{0}}}{e^{z_{1}}}=\frac{1-p(y=1)}{p(y=1)}

p(y=1)=\frac{e^{z_{1}}}{e^{z_{1}}+e^{z_{0}}}=\frac{1}{1+e^{z_{0}-z_{1}}}         

        将z0-z1看作一个整体-z,就得到逻辑回归的形式,所以在处理二分类问题时,softmax回归和逻辑回归实际上是完全等价的模型

梯度下降法求解softmax回归

        softmax回归模型的代价函数即交叉熵损失函数:

E=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{n}y_{k}^{(i)}log(p_{k}^{(i)})

        求E关于第k个类别中第j个特征权重偏导数:

E=\frac{\partial E}{\partial w_{kj}}=\frac{1}{m}\sum_{i=1}^{m}(p^{(i)}_{k}-y^{(i)}_k)*x^{(i)}_{j}

        梯度下降算法:

w^{new}_{kj}=w^{old}_{kj}-\alpha \frac{\partial E}{\partial w_{kj}}

        最终迭代:

w^{new}_{kj}=w^{old}_{kj}-\alpha\frac{1}{m}\sum_{i=1}^{m} (p^{(i)}_{k}-y^{(i)}_k)*x^{(i)}_{j}

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

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

相关文章

接口测试面试题及答案(后续)

一、你们什么时候测试接口 一般有需求就会做,后台的接口开发好,就可以开始测。例外,如果增加了新需求,也要做接口测试,还有就是开发对后台的接口做了修改,交互逻辑发生变化,我们也要重新对接口…

【SpringCloud】Nacos微服务注册中心

微服务的注册中心 注册中心可以说是微服务架构中的"通讯录",它记录了服务和服务地址的映射关系 。在分布式架构中, 服务会注册到这里,当服务需要调⽤其它服务时,就从这里找到服务的地址,进行调用。 注册中心…

服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例

服务器数据恢复环境: 一台服务器中有一组由4块SAS硬盘组建的RAID5阵列,上层安装linux操作系统统。分区结构:boot分区LVM卷swap分区(按照顺序),LVM卷中划分了一个reiserfs文件系统作为根分区。 服务器故障…

Linux下的WatchDog

看门狗🐕 看门狗简介 看门狗定时器(Watchdog Timer)是一种定时器,用于检测系统是否正常运行。如果系统在规定时间内没有向看门狗定时器发送复位信号,看门狗定时器就会产生复位信号,使系统复位。看门狗定时…

机器学习(五)——支持向量机SVM(支持向量、间隔、正则化参数C、误差容忍度ε、核函数、软间隔、SVR、回归分类源码)

目录 关于1 间隔与支持向量2 对偶问题3 核函数4 软间隔与正则化5 支持向量回归6 核方法X 案例代码X.1 分类任务X.1.1 源码X.1.2 数据集(鸢尾花数据集)X.1.3 模型效果 X.2 回归任务X.2.1 源码X.2.2 数据集(加州房价数据)X.2.3 模型…

25国考照片处理器使用流程图解❗

1、打开“国家公务员局”网站,进入2025公务员专题,找到考生考务入口 2、点击下载地址 3、这几个下载链接都可以 4、下载压缩包 5、解压后先看“使用说明”,再找到“照片处理工具”双击。 6、双击后会进入这样的界面,点击&…

几个docker可用的镜像源

几个docker可用的镜像源 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; sudo rm -rf /etc/docker/daemon.json sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://d…

Vue 项目中为何选择 TSX 而非传统 .vue 文件

近年来&#xff0c;Vue 项目中使用 TSX&#xff08;TypeScript JSX&#xff09;的写法逐渐增多&#xff0c;尤其在 TypeScript 项目中。 1. TSX 与 Vue 的结合背景 1、Vue 3 和 TypeScript Vue 3 从设计之初便更好地支持 TypeScript。Vue 3 使用了 TypeScript 重写核心&…

【SpringBoot】18 上传文件到数据库(Thymeleaf + MySQL)

Git仓库 https://gitee.com/Lin_DH/system 介绍 使用 Thymeleaf 写的页面&#xff0c;将&#xff08;txt、jpg、png&#xff09;格式文件上传到 MySQL 数据库中。 依赖 pom.xml <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --><depende…

[VUE]框架网页开发1 本地开发环境安装

前言 其实你不要看我的文章比较长&#xff0c;但是他就是很长&#xff01;步骤其实很简单&#xff0c;主要是为新手加了很多解释&#xff01; 步骤一&#xff1a;下载并安装 Node.js 访问 Node.js 官网&#xff1a; Node.js — Download Node.js 下载 Windows 64 位版本&…

canal1.1.7使用canal-adapter进行mysql同步数据

重要的事情说前面&#xff0c;canal1.1.8需要jdk11以上&#xff0c;大家自行选择&#xff0c;我这由于项目原因只能使用1.1.7兼容版的 文章参考地址&#xff1a; canal 使用详解_canal使用-CSDN博客 使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步_mysql更…

403 Request Entity Too Lager(请求体太大啦)

昨天收到 QA 的生产报障&#xff0c;说是测试环境的附件上传功能报了 403 的错误&#xff0c;错误信息&#xff1a;403 Request Entity Too Lager。我尝试复现问题&#xff0c;发现传个几兆的文件都费劲啊&#xff0c;一传一个失败。不用说&#xff0c;项目用到 ng 代理&#x…

【VScode】如何在VSCode中配置Python开发环境:从零开始的完整指南

文章目录 前言软件准备软件安装1. 安装Python2. 检查Python是否安装成功3. 安装第三方包4. 安装VSCode 配置VSCode1. 安装Python插件2. 创建项目&#xff0c;配置工作区域3. 编写Python文件4. 配置Python编译设置5. 使用代码格式化工具yapf 更多文章结尾 前言 在当今的编程世界…

SQL,力扣题目571, 给定数字的频率查询中位数

一、力扣链接 LeetCode_571 二、题目描述 Numbers 表&#xff1a; ------------------- | Column Name | Type | ------------------- | num | int | | frequency | int | ------------------- num 是这张表的主键(具有唯一值的列)。 这张表的每一行表示某个数…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF&#xff1a;zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本&#xff1a; 安装 使用方法 使用文件 URL&#xff1a; 使用本地路径&…

containerd配置私有仓库registry

机器ip端口regtisry192.168.0.725000k8s-*-------k8s集群 1、镜像上传 rootadmin:~# docker push 192.168.0.72:5000/nginx:1.26.1-alpine The push refers to repository [192.168.0.72:5000/nginx] 6961f0b8531c: Pushed 3112cd521249: Pushed d3f50ce9b5b5: Pushed 9efaf2eb…

js例轮播图定时器版

要求 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-width, ini…

PostgreSQL 学习笔记:PostgreSQL 主从复制

PostgreSQL 笔记&#xff1a;PostgreSQL 主从复制 博客地址&#xff1a;TMDOG 的博客 在现代应用程序中&#xff0c;数据库的高可用性和扩展性是至关重要的。PostgreSQL 提供了主从复制功能&#xff0c;可以在多个数据库实例之间复制数据&#xff0c;以实现冗余和负载均衡。本…

【系统集成项目管理工程师教程】第5章 软件工程

软件工程是一门研究用工程化方法构建和维护有效、实用和高质量软件的学科&#xff0c;涵盖软件需求、设计、实现、测试、部署交付、质量管理和过程能力成熟度等方面&#xff0c;旨在提高软件生产率、质量并降低成本&#xff0c;确保软件项目的成功开发与维护。 5.1软件工程定义…

Java项目实战II基于Spring Boot的便利店信息管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的…