Softmax分类器及交叉熵损失(通俗易懂)

2023-11-15

在说分类器前我们先了解一下线性分类

线性函数y = kx + b ,在对于多种类别、多个特征时可将W看做一个矩阵,纵向表示类别,横向表示特征值,现在有3个类别,每个类别只有2个特征

 线性分类函数可定义为:

f(x i, W, b)=W x_{i}+b

我们的目标就是通过训练集数据学习参数W,b。一旦学习完成就可以丢弃训练集,只保留学习到的参数。

1. 损失函数

损失函数是用来告诉我们当前分类器性能好坏的评价函数,是用于指导分类器权重调整的指导性函数,通过该函数可以知道该如何改进权重系数。通俗都来说一组参数(W,b)对应一个损失L,一般的损失越小模型越好,我们目标是通过各种优化,使损失达到最优值(不一定最小是最优的)。

常见的损失函数:

  • 对数似然损失

\small L(y, \hat y)=-y\log\hat y-(1-y)\log(1-\hat y)

  • 百页损失

\small L_i = \sum_{j\neq y_i} \max(0, s_j - s_{y_i} + \Delta)

现在通过百叶损失对前面线性分类求损失:

L_{i}=\sum \max \left(0, s_{j}-s_{y i}+\Delta\right)=\max (0,0.67-0.77+1)+\max (0,2.3-0.67+1) =\max (0,0.9)+\max (0,1.97)=2.87

2. Softmax分类器与交叉熵损失(cross-entropy)

  • Softmax

函数定义

\small y=\frac{e^{f_{i}}}{\sum_{j} e^{f j}}

简单的说,softmax函数会将输出结果缩小到0到1的一个值,并且所有值相加为1

使用softmax函数对前面线性分类求得分

类别1 :                                    y_{0}=\frac{e^{0.77}}{e^{0.77}+ e^{0.67}+e^{0.23}} = 0.21

类别2 :                                    y_{0}=\frac{e^{0.67}}{e^{0.77}+ e^{0.67}+e^{0.23}}=0.18

类别3 :                                    y_{0}=\frac{e^{2.3}}{e^{0.77}+ e^{0.67}+e^{2.3}}=0.61

  • 交叉熵损失(cross-entropy)

交叉熵损失衡量分类模型的性能,其输出是介于 0 和 1 之间的概率值。交叉熵损失随着预测概率与实际标签的偏离而增加。因此,当实际观察标签为 1 时预测 0.012 的概率模型不好,并导致高损失值。完美模型的对数损失为 0。cross-entropy一般再softmax函数求得结果后再用

函数定义:

L_{\mathrm{CE}}=-\sum_{i=1}^{n} t_{i} \log \left(p_{i}\right)

t_{i}是真实值,p_{i}是softmax函数求得的结果。

 因为真实值只有属于这个类别或者不属于这个类别,1代表是这个类别,如图所示表示改输入是类别3,

cross-entropy计算

\begin{aligned} L_{C E} &=-\sum_{i=1} t_{i} \log \left(p_{i}\right) \\ &=-\left[0 \log _{2}(0.21)+0 \log _{2}(0.18)+1 \log _{2}(0.61)\right] \\ &=-\log _{2}(0.61) \\ &=0.71 \end{aligned}

为什么要加负号?

log函数图像:

 因为softmax求出结果再(0,1)之间,所以cross-entropy结果为负值,加负号使得损失为正。

假如现在通过优化使得softmax 后结果为0.10、0.08、0.82,再计算cross-entropy结果对比一下

\begin{aligned} L_{C E2} &=-\sum_{i=1} t_{i} \log \left(p_{i}\right) \\ &=-\left[0 \log _{2}(0.10)+0 \log _{2}(0.08)+1 \log _{2}(0.82)\right] \\ &=-\log _{2}(0.82) \\ &=0.28 \end{aligned}

0.28小于之前的损失0.71,暗示模型正在学习。优化过程(调整权重以使输出接近真实值)一直持续到训练结束。

参考    https://towardsdatascience.com/cross-entropy-loss-function-f38c4ec8643e

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Softmax分类器及交叉熵损失(通俗易懂) 的相关文章

随机推荐

  • 论文笔记:COST: CONTRASTIVE LEARNING OF DISENTANGLEDSEASONAL-TREND REPRESENTATIONS FORTIME SERIES FOREC

    ICLR 2022 1 前言介绍 表征学习 对比学习 时间序列预测 首先学习时间序列解耦的representation 然后进行回归任务的精调 对比学习CoST包含时域和频域的contrastive loss gt 学习趋势和周期性repr
  • 【C++初阶】类和对象(下)

    一 再谈构造函数 构造函数其实分为 1 函数体赋值 2 初始化列表 之前所讲到的构造函数其实都是函数体赋值 那么本篇文章将会具体讲述初始化列表 初始化列表 语法 以一个冒号开始 接着是一个以逗号分隔的数据成员列表 每个 成员变量 后面跟 一
  • 2021年蓝桥杯

    专栏 蓝桥杯题目 一 卡片问题 题目解析 由于数据量比较小 直接暴力枚举即可 依题意可以很快知道 卡片最先用完的数是 1 因此遍历足够多的数 将每个数转换成字符类型 计算每个字符里面 1 的个数 注意 1 用完可能不是临界条件 有可能下一个
  • 傻瓜攻略(一)——MATLAB主成分分析(PCA)代码及结果分析实例

    主成分分析 收藏的能不能顺手点个赞啊 嘿嘿 主成分分析法 PCA 是一种高效处理多维数据的多元统计分析方法 将主成分分析用于多指标 变量 的综合评价较为普遍 笔者自从本科学习数学建模就开始接触该方法 但是一直没有系统地整理过 借这个机会总结
  • Python操作之MySQL

    目录 安装PyMySQL PyMySQL操作mysql步骤 创建表格 连接Mysql 游标 事务特性 事务提交 查数据库 增删数据库 封装mysql类 错误处理 总结 安装PyMySQL 在使用Python中我们都要安装相关的库 mysql
  • 7-20 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4

    7 20 打印九九口诀表 15分 下面是一个完整的下三角九九口诀表 1 1 1 1 2 2 2 2 4 1 3 3 2 3 6 3 3 9 1 4 4 2 4 8 3 4 12 4 4 16 1 5 5 2 5 10 3 5 15 4 5
  • PyQt5探索-1 开始第一个程序

    浅谈PyQt5 PyQt5并不向下兼容PyQt4 主要是由于其有几个较大的改变 虽不兼容 但是旧代码调整到新库并不是很难 它们的主要差异如下 Python的模块已经重新构建 一些模块已经被放弃 如 QtScript 其他的模块被分割到一些子
  • 突破ChatGPT限制:Chat-Upload方法为ChatGPT文件上传带来新的可能性

    大家好 在之前的文章中 我分享了一个关于如何突破ChatGPT无法读取PDF和图片文件的问题的方法 今天 我要继续探讨这个话题 并详细介绍我自己原创的一种文件上传方法 为学习带来了新的可能性 我开发的这个方法被称为 Chat Upload
  • 很抱歉,OneDrive服务器出现问题,请稍后重试。(错误代码:0x8004def5)

    问题来啦 很抱歉 OneDrive服务器出现问题 请稍后重试 错误代码 0x8004def5 微软自带的OneDrive 因可自动云端备份 同步 而广受欢迎 但有小伙伴发现 经常性的 OneDrive登录不上去 出现 很抱歉 OneDriv
  • GmSSL 在Windows上的使用(编译和使用)

    1 源码的下载 GitHub guanzhi GmSSL 支持国密SM2 SM3 SM4 SM9 SSL的密码工具箱 2 编译工具的下载 首先安装VS开发工具 接着下载ActivePerl 打开VS命令提示符 管理员权限 并切换到 Acti
  • 什么是nrm

    什么是nrm nrm是npm的源管理器 这里的源可以理解为是不同的地址 使用场景 因为npm当前的源只能有一个 当你需要使用的源不止一个的时候nrm就可以很好的帮助你管理npm源 安装nrm npm i nrm g 查看源列表 nrm ls
  • virtualbox虚拟机安装64位Linux

    1 准备工作 virtualbox下载地址 https www virtualbox org wiki Downloads 这里下载的是VirtualBox 6 1 30 for Windows hosts x86 amd64 同时还需要下
  • 【一起学Rust】Rust学习前准备——注释和格式化输出

    提示 准备热身 文章目录 前言 一 注释 1 普通注释 2 文档注释 二 格式化输出 输出字符串 输出带有占位符的字符串 输出带有指定格式占位符的字符串 指定宽度对齐 数字输出缺位补0 总结 注释 格式化输出 前言 在正式开始学习Rust之
  • linux : ubuntu JDK安装和环境变量设置

    1 下载JDK 官网下载链接 http www oracle com technetwork java javase downloads index html 华为镜像下载链接 https repo huaweicloud com java
  • C++ scanf语句的各种用法

    scanf语句 scanf本身是C语言的输入语句 但c 是兼容C语言的 头文件是iostream 用万能头的就不用管了 1 输入十进制的数 int a scanf d a scanf i a scanf u a 这三种写法都是可以的 在sc
  • 数据分析和数据挖掘的概念和理念

    1 数据分析和数据挖掘的定义和概念 2 数据分析及数据挖掘的层次 3 数据分析及数据挖掘的模型框架 1 1数据分析及数据挖掘的定义 数据分析 数据分析是指用适当的统计方法对收集来的大量数据进行分析 提取有用信息 和形成结论而对数据加以详细研
  • (5)minikube玩转k8s集群之访问pod里的服务

    配套视频教程 1 Minikube介绍 简单说 创建k8s集群很麻烦 minikube可以让我们快速搭建一个k8s集群用于学习 Minikube 是一种可以让您在本地轻松运行 Kubernetes 的工具 Minikube 在笔记本电脑上的
  • React项目实战之租房app项目(七)列表找房模块之条件筛选

    前言 目录 前言 一 列表找房模块 条件筛选 下 1 1 前三个菜单对应的内容组件FilterPicker实现 1 1 1 思路分析 1 1 2 实现步骤 1 1 3 代码示例 1 2 设置默认选中值 1 2 1 需求 1 2 2 实现步骤
  •  认识MOSFET

    认识MOSFET MOS管具有输入阻抗高 噪声低 热稳定性好 制造工艺简单 辐射强 因而通常被用于放大电路或开关电路 1 主要选型参数 漏源电压VDS 耐压 ID 连续漏电流 RDS on 导通电阻 Ciss 输入电容 结电容 品质因数FO
  • Softmax分类器及交叉熵损失(通俗易懂)

    在说分类器前我们先了解一下线性分类 线性函数y kx b 在对于多种类别 多个特征时可将W看做一个矩阵 纵向表示类别 横向表示特征值 现在有3个类别 每个类别只有2个特征 线性分类函数可定义为 我们的目标就是通过训练集数据学习参数W b 一