一篇文章彻底搞懂熵、信息熵、KL散度、交叉熵、Softmax和交叉熵损失函数

文章目录


一、和信息

1.1 概念

 1. 是一个物理学概念,它表示一个系统的不确定性程度,或者说是一个系统的混乱程度

 2. 信息:一个叫香农的美国数学家将引入信息论中,用来衡量信息的不确定性,并将它命名为 “香农” 或者 “信息”。

和信息的区别就是应用领域和具体含义是不同的。
就像其他地方话叫帅哥,而广东话叫靓仔。
vs 信息 类似于 帅哥 vs 靓仔。

1.2 信息公式

 1. 信息公式如下所示,其中n表示随机变量的可能取值数,x表示随机变量,P(x)表示随机变量的概率函数。

在这里插入图片描述
 2. 一个简单的例子应用信息的公式:

在这里插入图片描述
在这里插入图片描述

二、KL散度和交叉

2.1 KL散度(相对)

 1. KL散度:是两个概率分布间差异的非对称性度量,KL散度也被称为相对。 通俗的说法:KL散度是用来衡量同一个随机变量的两个不同分布之间的距离。

在这里插入图片描述
 2. KL散度公式如下,其中P( p) 是真实分布,Q(q)是用于拟合P的分布,KL散度越小,Q越接近于P。

在这里插入图片描述
 3. KL散度的特性:(1)分对称性:DKL(p||q) ≠ DKL(q||p),只有概率分布完全一样时才相等。(2)非负性:DKL(p||q)恒大于0,只有概率分布完全一样时才等于0。

 4. 一个简单的例子应用KL散度的公式:

在这里插入图片描述

2.2 交叉

 1. 交叉由来是有KL散度公式变形得到的,如下图所示:

在这里插入图片描述
 2. 交叉的主要应用:主要用于度量同一个随机变量X的预测分布Q和真实分布P之间的差距。

 3. 交叉的一般公式:

在这里插入图片描述
 4. 交叉的最简公式:
在这里插入图片描述

 5. 一个简单的例子应用交叉的公式:

在这里插入图片描述
 从上述例子得到的结论:(1)预测越准确,交叉越小。(2)交叉只跟真实标签的预测概率值有关。

 6. 交叉的二分类公式:

在这里插入图片描述
 7. 为什么在很多网络模型中,使用交叉作为损失函数,而不使用KL散度作为损失函数呢?我们来简单看一个例子直观理解一下:

在这里插入图片描述
 那总结是因为:交叉损失函数在数值稳定性、梯度计算效率和目标函数形式等方面具有优势,因此更常用于网络模型的训练。但在某些特定的任务或场景下,KL散度也可以作为损失函数使用。

Softmax_58">三、Softmax和交叉损失函数

Softmax_59">3.1 Softmax

 1. 定义:Softmax函数是一种常用的激活函数,它通常用于多分类任务中,将模型的输出转化为概率分布。Softmax函数将输入向量的每个元素进行指数运算,然后对所有元素求和,最后将每个元素除以求和结果,得到一个概率分布。

Soft是将数字转换为概率的神器,是将数据归一化的神器。

 2. Softmax的公式如下:

在这里插入图片描述
 3. 一个简单的例子应用Softmax的公式:

在这里插入图片描述

3.2 交叉损失函数

 1. 交叉损失函数公式:

在这里插入图片描述

注意:(1)因为有些输入是数值,需经过Softmax转换为概率,所以log括号里写的是Softmax公式。(2)标签中有个真实值肯定为1,其余为0,所以相当于交叉最简公式。

 2. 代码块举例:

import torch
import torch.nn as nn
#定义数据
torch.manual_seed(100) #设置随机种子,以保证结果的可重复性。
predict = torch.rand(4, 5)
label = torch.tensor([4, 3, 3, 2])
print(predict)
print(label)

#定义交叉损失函数
criterion = nn.CrossEntropyLoss()

#计算整体的损失值
loss = criterion(predict, label)
print(loss)#最后将这四个样本的损失值进行求平均,得到整体的损失值。

#计算单个样本的损失值
one_loss = criterion(predict[0].unsqueeze(0), label[0].unsqueeze(0)) #.unsqueeze(0)是转二维向量
print(one_loss)

在这里插入图片描述


http://www.niftyadmin.cn/n/5050201.html

相关文章

python nvidia 显卡信息 格式数据

python nvidia 显卡信息 格式数据. def get_gpu_memory():result subprocess.check_output([nvidia-smi, --query-gpupci.bus_id,memory.used,memory.total,memory.free, --formatcsv])# 返回 GPU 的显存使用情况,单位为 Minfo []for t in csv.DictReader(result…

Oracle判断函数

CASE WHEN 语法: CASE WHEN 条件1 THEN 返回值1WHEN 条件2 THEN 返回值2ELSE 默认值END -- 对 EMP 的 DEPTNO 字段进行判断,显示出对应的部门名称 SELECT E.*, CASE WHEN E.DEPTNO10 THEN ACCOUNTINGWHEN E.DEPTNO20 THEN RESEARCHWHEN E.DEPTNO30 THEN SALES…

【李沐深度学习笔记】矩阵计算(5)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 本节是第五篇,由于CSDN限制,只能被迫拆分 矩阵计算 多元函数的等高线 此处参考视频:熟肉)多元…

ISE_ChipScope Pro的使用

1.ChipScope Pro Core Inserter 使用流程 在之前以及编译好的流水灯实验上进行学习 ChipScope的使用。 一、新建一个ChipScope 核 点击Next,然后在下一个框中选择 Finish,你就会在项目菜单中看到有XX.cdc核文件。 二、对核文件进行设置 右键“Synthesize – XST” …

配置OSPFv3引入外部路由及路由过滤 华为实验

1.1 实验介绍 1.1.1 关于本实验 在大型园区网络中,往往使用不同的路由协议进行组网,实现全网的网络互通。不同的协议间通信,除了路由协议本身,还需要引入外部路由及路由信息过滤等技术。 本章内容主要介绍OSPFv3路由过滤及引入外…

JavaScript相关操作

JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互,JavaScript是浏览器解释执行的。 前端三大块 1、HTML:页面结构 2、CSS:页面表现&#x…

域用户设置壁纸后断网出现黑壁纸问题

公司最近推行域控制器,然后部署后出现一堆问题待解决。今天解决的问题是黑屏壁纸问题。 题主出现这种的原因是因为用户在没有连上网络就登录进去导致没同步怎么更新策略重启都不行(微软为什么不能用之前缓存的桌面非要用和黑壁纸?&#xff1f…

代码阅读分析神器-Scitools Understand

这里写目录标题 前言概要功能介绍1.代码统计2.图形化分析3.代码检查 使用方法下载及使用 前言 作为一名程序员,阅读代码是一个必须要拥有的能力,但无奈很多代码逻辑嵌套非常多,看起来非常吃力,看了那段逻辑就忘记了刚才的逻辑&am…