交叉熵损失函数(Cross-Entropy Loss Function)

交叉熵损失函数(Cross-Entropy Loss Function)

在处理机器学习或深度学习问题时,损失/成本函数用于在训练期间优化模型。目标几乎总是最小化损失函数。损失越低,模型越好。交叉熵损失是最重要的成本函数。它用于优化分类模型。对交叉熵的理解取决于对 Softmax 激活函数的理解。我在下面写了另一篇文章来涵盖这个先决条件

考虑一个 4 类分类任务,其中图像被分类为狗、猫、马或猎豹。

上图中,Softmax 将 logits 转换为概率。交叉熵的目的是获取输出概率(P)并测量与真值的距离(如下图所示)。

对于上面的示例,类 dog 的所需输出是 [1,0,0,0] ,但模型输出 [0.775, 0.116, 0.039, 0.070]

目标是使模型输出尽可能接近期望的输出(真值)。在模型训练过程中,模型权重会相应迭代调整,目的是最小化交叉熵损失。调整权重的过程定义了模型训练,随着模型不断训练并且损失最小化,我们说模型正在学习。

交叉熵的概念可以追溯到信息论领域,克劳德·香农 (Claude Shannon) 在 1948 年引入了熵的概念。在深入研究交叉熵成本函数之前,让我们先介绍一下熵。

熵(Entropy)

随机变量 X 的熵是变量可能结果固有的不确定性水平。

对于 p(x) — 概率分布和随机变量 X,熵定义如下:

方程 1:熵的定义。注意 log 以 2 为底计算。

负号的原因: log(p(x))<0 对于 (0,1) 中的所有 p(x) 。 p(x) 是概率分布,因此值必须介于 0 和 1 之间。

log(x) 的绘图。对于介于 0 和 1 之间的 x 值,log(x) <0(负数)。

H(x) 的值越大,概率分布的不确定性越大,值越小,不确定性越小。

示例

考虑以下 3 个具有形状的“容器”:三角形和圆形

容器1:选择三角形的概率是26/30,选择圆形的概率是4/30。因此,选择一种形状和/或不选择另一种形状的概率更加确定。

容器 2:选择三角形的概率为 14/30,否则为 16/30。几乎有 50-50 的机会选择任何特定形状。选择给定形状的确定性低于 1。

容器 3:从容器 3 中选取的形状很可能是圆形。选取圆形的概率为 29/30,选取三角形的概率为 1/30。非常确定所选择的形状将是圆形。

让我们计算熵,以便我们确定我们对选择给定形状的确定性的断言。

正如预期的那样,第一个和第三个容器的熵小于第二个容器。这是因为在容器 1 和 3 中选择给定形状的概率比在容器 2 中更加确定。现在我们可以继续讨论交叉熵损失函数。

交叉熵损失函数(Cross-Entropy Loss Function)

也称为对数损失、对数损失或逻辑损失。将每个预测类别概率与实际类别所需输出 0 或 1 进行比较,并计算分数/损失,根据概率与实际预期值的差距对概率进行惩罚。惩罚本质上是对数的,对于接近 1 的大差异产生大分数,对于趋向于 0 的小差异产生小分数。

在训练期间调整模型权重时使用交叉熵损失。目的是最小化损失,即损失越小模型越好。完美模型的交叉熵损失为 0。

交叉熵定义为:

二元交叉熵损失(Binary Cross-Entropy Loss)

对于二元分类(具有两个类别 - 0 和 1 的分类任务),我们将二元交叉熵定义为

二元交叉熵通常计算为所有数据示例的平均交叉熵,即

示例

考虑具有以下 Softmax 概率 (S) 和标签 (T) 的分类问题。目标是根据这些信息计算交叉熵损失。

Logits(S) 和单热编码真值标签(T) 以及分类交叉熵损失函数用于测量预测概率和真值标签之间的“距离”。

分类交叉熵计算如下


Softmax 是连续可微函数。这使得计算损失函数对于神经网络中每个权重的导数成为可能。该属性允许模型相应地调整权重以最小化损失函数(模型输出接近真实值)。

假设经过一些模型训练迭代后,模型输出以下 logits 向量


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

一般深度学习框架提供了以下交叉熵损失函数:二元、分类、稀疏分类交叉熵损失函数。

分类交叉熵和稀疏分类交叉熵(Categorical Cross-Entropy and Sparse Categorical Cross-Entropy)

分类交叉熵和稀疏分类交叉熵都具有与等式 2 中定义的相同的损失函数。两者之间的唯一区别在于如何定义真值标签。

  • 当真实标签是 one-hot 编码时,使用分类交叉熵,例如,对于 3 类分类问题,我们有以下真实值 [1,0,0][0,1,0][0,0,1].
  • 在稀疏分类交叉熵中,真值标签是整数编码的,例如 3 类问题的 [1][2][3]

reference

@article{Koech2023Aug,
author = {Koech, Kiprono Elijah},
title = {{Cross-Entropy Loss Function - Towards Data Science}},
journal = {Medium},
year = {2023},
month = aug,
urldate = {2023-11-29},
publisher = {Towards Data Science},
language = {english},
url = {https://towardsdatascience.com/cross-entropy-loss-function-f38c4ec8643e}
}

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

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

相关文章

10.0 输入输出 I/O

IO操作主要是指使用Java程序完成输入&#xff08;Input&#xff09;、输出&#xff08;Output&#xff09;操作。所谓输入是指将文件内容以数据流的形式读取到内存中&#xff0c;输出是指通过Java程序将内存中的数据写入到文件中&#xff0c;输入、输出操作在实际开发中应用较为…

TiDB专题---2、TiDB整体架构和应用场景

上个章节我们讲解了TiDB的发展和特性&#xff0c;这节我们讲下TiDB具体的架构和应用场景。首先我们回顾下TiDB的优势。 TiDB的优势 与传统的单机数据库相比&#xff0c;TiDB 具有以下优势&#xff1a; 纯分布式架构&#xff0c;拥有良好的扩展性&#xff0c;支持弹性的扩缩容…

一、Linux系统概述和安装

目录 1、Linux系统概述 2、Linux发行版介绍 3、虚拟机软件介绍 4、VMware安装 5、Linux系统&#xff08;CentOS&#xff09;系统安装 6、登录并查看IP地址 7、Linux连接工具CRT使用 7.1 概述 7.2 CRT安装 7.3 使用步骤 7.4 文件上传 8、Linux的快照 8.1 作用 8.2…

Go 从编译到执行

一、Go运行编译简介 Go语言&#xff08;也称为Golang&#xff09;自从2009年由Google发布以来&#xff0c;已成为现代软件开发中不可或缺的一部分。设计者Rob Pike, Ken Thompson和Robert Griesemer致力于解决多核处理器、网络系统和大型代码库所引发的现实世界编程问题。我们…

kubeadm快速搭建k8s高可用集群

1.安装及优化 1.1基本环境配置 1.环境介绍 &#xff08;1&#xff09;.高可用集群规划 主机名ip地址说明k8s-master01192.168.2.96master节点k8s-master02192.168.2.97master节点k8s-master03192.168.2.98master节点k8s-node01192.168.2.99node节点k8s-node02192.168.2.100n…

【10张图带你搞清楚生成树协议】

STP协议分类 BPDU&#xff0c;网桥协议数据单元 STP路径开销&#xff0c;以链路带宽为准&#xff0c;两个标准&#xff0c;现在主要以NEW为准 在网络刚开始运行的阶段&#xff0c;所有交换机都会从所有端口发送BPDU&#xff0c;大家都认为自己是root&#xff0c;随着B…

基于YOLOv8深度学习的火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

增强静态数据的安全性

静态数据是数字数据的三种状态之一&#xff0c;它是指任何静止并包含在永久存储设备&#xff08;如硬盘驱动器和磁带&#xff09;或信息库&#xff08;如异地备份、数据库、档案等&#xff09;中的数字信息。 静态数据是指被动存储在数据库、文件服务器、端点、可移动存储设备…

多线程05

前言 前面我们说到了死锁以及线程可见性的问题 我们将线程可见性主要归结于是JVM自身的一个bug 一个线程写一个线程读 会将一直不变的变量优化到直接从寄存器中读取,而不是缓存等读取,因为这样我们就设置了使用volatile关键字使得用到这个变量的时候必须从内存中读取数据 死锁主…

项目终验的exce表格缩放,排版等经常使用

xxx个项目的验收资料 1.申请表等等很多信息 需求&#xff1a;放在一页内等办法 上述文档&#xff0c;在excel表格打印预览中都是在两页中&#xff0c;很难调节&#xff0c;这个时候采用wps专业版本即可。 wps排版经常使用的功能如下&#xff1a; 经常使用的是 1.把所有列打印…

const 和 constexpr 深入学习

在 C 中&#xff0c;const 和 constexpr 都可以用来修饰对象和函数。修饰对象时&#xff0c;const 表示它是常量&#xff0c;而 constexpr 表示它是一个常量表达式。常量表达式必须在编译时期被计算1。修饰函数时&#xff0c;const 只能用于非静态成员的函数&#xff0c;而 con…

WPF窗口样式的比较

WPF窗口样式的比较 1.WPF默认Window窗口 带有图标 标题栏 最小最大化推出按钮 <Window x:Class"GlowWindowDemo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006…

nginx: [alert] could not open error log file

先把cmd的报错信息粘出来 nginx: [alert] could not open error log file: CreateFile() “logs/error.log” failed (3: The system cannot find the path specified) 2023/11/29 11:27:37 [emerg] 5040#18772: CreateDirectory() “D:\enviroment\nginx-1.24.0\conf/temp/cli…

Linux学习笔记09、Shell命令之历史命令和自动补全

上一篇&#xff1a;Linux学习笔记08、Shell命令之常用命令缩写及全称 目录 1、历史命令&#xff1a; 1.1、查看所有历史命令列表&#xff1a; 1.2、查看指定历史命令&#xff1a; 1.3、清除历史命令&#xff1a; 2、自动补全 2.1、当字符串唯一时&#xff1a; 2.2、当有多个…

力扣题:字符的统计-11.25

力扣题-11.25 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;387. 字符串中的第一个唯一字符 解题思想&#xff1a;直接遍历即可 class Solution(object):def firstUniqChar(self, s):""":type s: str:rtype: int""&qu…

机器学习——决策树

1.决策树 2.熵&#xff08;不确定程度&#xff09; 3.信息增益 & 信息增益比 3.1 信息增益 & 信息增益比 的 概念 3.2 案例解释说明 &#xff13;.&#xff12;.&#xff11;数据集说明 &#xff13;.&#xff12;.&#xff12;计算 &#xff14;&#xff0e;&#x…

智能井盖传感器怎么监测井盖出现倾斜?

智能井盖传感器是一种先进的智能设备&#xff0c;能够二十四小时连续监测井盖是否出现倾斜。其工作原理主要是依靠内置的传感器&#xff0c;以及搭载的MEMS“芯”技术。便于智能井盖传感器实时感知到井盖的姿态变化&#xff0c;一旦发现有倾斜的现象&#xff0c;就会立即向运维…

Jmeter之压力测试总结!

一、基本概念 1.线程组N&#xff1a;代表一定数量的并发用户&#xff0c;所谓并发就是指同一时刻访问发送请求的用户。线程组就是模拟并发用户访问。 2.Ramp-Up Period(in seconds)&#xff1a;建立所有线程的周期&#xff0c;就是告诉jmeter要在多久没启动所有线程&#xff…

python+pytest接口自动化(5)-requests发送post请求

简介 在HTTP协议中&#xff0c;与get请求把请求参数直接放在url中不同&#xff0c;post请求的请求数据需通过消息主体(request body)中传递。 且协议中并没有规定post请求的请求数据必须使用什么样的编码方式&#xff0c;所以其请求数据可以有不同的编码方式&#xff0c;服务…

elasticsearch安装分词器插件

查看插件安装情况 elasticsearch-plugin list 插件在线安装 bin/elasticsearch-plugin install analysis-icu 离线安装ik分词 cd plugins wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip unzi…