一篇文章彻底搞懂熵、信息熵、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和交叉熵损失函数

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)

在这里插入图片描述

(Entropy) 是信息论中的一个概念,用来衡量随机变量的不确定性。在机器学习中,我们通常使用交叉熵 (Cross-Entropy) 作为损失函数,用来衡量模型预测结果与实际结果之间的差异。 以下是一些关于交叉熵的基本概念公式。 ## (Entropy) 是一个概率分布的量,它表示随机变量的不确定性。对于一个离的随机变量 $X$,其的数学定义为: $$H(X)=-\sum_{x\in X}p(x)\log_2p(x)$$ 其中,$p(x)$ 表示随机变量 $X$ 取值为 $x$ 的概率,$\log_2$ 表示以 2 为底的对数。 可以看出,当 $p(x)$ 的分布越均匀(即所有 $x$ 的概率都相等)时,的值最大,达到 $H(X)=\log_2|X|$;当 $p(x)$ 的分布越集中在某些特定的取值上时,的值越小。 ## 交叉熵 (Cross-Entropy) 交叉熵是用来衡量模型预测结果与实际结果之间的差异的一种损失函数。对于一个离的随机变量 $Y$,其真实分布为 $p(Y)$,模型预测的分布为 $q(Y)$,则交叉熵的数学定义为: $$H(p,q)=-\sum_{y\in Y}p(y)\log_2q(y)$$ 可以看出,当模型的预测结果与真实结果越接近时,交叉熵的值越小。 ## 交叉熵机器学习中的应用 在机器学习中,我们通常使用交叉熵作为分类模型的损失函数。对于一个分类问题,我们需要将输入 $x$ 分类到 $k$ 个类别中的一个,并且每个类别都对应一个概率值 $p_i$,表示输入 $x$ 属于第 $i$ 个类别的概率。设模型的预测结果为 $q_1,q_2,...,q_k$,表示输入 $x$ 属于每个类别的概率预测值,则其交叉熵的数学定义为: $$H(p,q)=-\sum_{i=1}^kp_i\log_2q_i$$ 我们的目标是最小化交叉熵,使得模型的预测结果尽可能接近真实结果,从而提高模型的准确率。 以上就是关于交叉熵的基本概念公式,希望能对你有所帮助。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冒冒菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值