【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度

同学你好!本文章于2021年末编写,获得广泛的好评!

故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,

Pytorch深度学习·理论篇(2023版)目录地址为:

CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!https://v9999.blog.csdn.net/article/details/127587345欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~

 

1 信息熵

熵 (Entropy)信息熵:常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据。

1.1 信息熵的性质

  • 单调性,发生概率越高的事件,其携带的信息量越低;
  • 非负性,信息熵可以看作为一种广度量,非负性是一种合理的必然;
  • 累加性,多随机事件同时发生存在的总不确定性的量度约等于各事件不确定性的量度的和,
  • 假设信息熵的函数是I,计算概率的函数是P,I是关于P的减函数,即I(P1,P2)=I(P1)+I(P2)。

1.1.1 信息熵的公式

香农从数学上严格证明了满足上述三个条件的随机变量不确定性度量函数具有唯一形式:

其中的 C 为常数,我们将其归一化为 C = 1 C=1C=1 即得到了信息熵公式。目前,信息熵大多都是通过上式进行计算的(式中的Pi是概率函数Pi(Ui)的计算结果,求和符号中的i代表从1到n之间的整数。在实践中对数一般以2为底,约定0log0=0。

1.2 信息熵的计算公式

信息熵属于一个抽象概念,其计算方法没有固定公式。任何符合信息熵特点的公式都可以被用作信息熵的计算。

1.2.1 对数的信息熵

1.2.2 单符号二元信源的信息熵

以一个最简单的单符号二元信源为例说明,该信源符号U(上式中的X)仅可以取值为a或b。其中,取a的概率为p,则取b的概率为1-p。该信源的信息熵可以记为H(U)=pI(p)+(1-p)I(1-p),所形成的曲线如图所示。

在图8-2中,x轴代表符号U取值为a的概率值p,y轴代表符号U的信息熵H(U)。由图8-2可以看出信息熵有如下几个特性。

  • 确定性:当符号U取值为a的概率值p=0和p=1时,U的值是确定的,没有任何变化量,所以信息熵为0。
  • 极值性:当p=0.5时,U的信息熵达到了最大。
  • 对称性:图形在水平方向关于p=0.5对称。
  • 非负性:即收到一个信源符号所获得的信息熵应为正值,H(U)≥0。

1.3 连续信息熵及特性

信源中的变量是从连续数据中取值。连续信源可以有无限个值,信息量是无限大,对其求信息熵已无意义,一般常会以其他的连续信源做参照,相对熵的值进行度量。

1.4 联合熵

联合熵(joint entropy)可将一维随机变量分布推广到多维随机变量分布。两个变量x和Y的联合信息熵H(X,Y)也可以由联合概率函数P(x,y)计算得来:

式中的联合概率函数P(x,y)是指x、y同时满足某一条件的概率。

1.5 条件熵

条件熵(conditional entropy)表示在已知随机变量X的条件下,随机变量Y的不确定性,条件熵H(Y|X)可以由联合橱率函数P(x,y)和条件概率函数P(y|x)计算得来:

 其中 P(x,y)=P(y|x)P(x),即x和y的联合概率等于“在x条件下,y出现的概率”乘以“x的边际概率”。

 1.5.1 条件熵的另一种计算方式

条件熵H(Y|X)也可以由X和Y的联合信息熵计算而来:

可以描述为,条件熵H(Y|X)等于联合熵H(X,Y)减去X的边际熵H(X)。

1.6 交叉熵

交叉熵(cross entropy)在神经网络中常用于计算分类模型的损失。交叉熵表示的是实际输出(概率)与期望输出(概率)之间的距离。交又熵越小,两个概率越接近。

1.6.1 交叉熵数学公式

交叉熵公式假设样本集的概率分布函数为P(x),模型预测结果的概率分布函数为Q(x),则真实样本集的信息熵为(p是函数P(x)的值):

使用模型预测结果的概率分布Q(x)来表示数据集中样本分类的信息熵,则上述式子可改写为:

Q(x)与P(x)的交叉熵。因为分类的概率来自样本集,所以式中的概率部分用Qx)来表示。

 1.6.2 交叉熵损失

交叉熵损失表示模型对正向样本预测的交叉熵(求和项中的第一项)与对负向样本预测的交叉熵(求和项中的第二项)之和。正向样本的概率为a,预测负向样本的概率为1-a。

1.7 相对熵/KL散度/信息散度

相对熵,又被称为KL散度或信息散度,用来度量两个概率分布间的非对称性差异。在信息理论中,相对熵等价于两个概率分布的信息熵的差值。

1.7.1 相对熵的公式

 设P(x)、Q(x)是离散随机变量集合X中取值x的两个概率分布函数,它们的结果分别为p和q,则p对q的相对熵如下:

由式可知,当P(x)和Q(x)两个概率分布函数相同时,相对熵为0(因为log1=0)并且相对熵具有不对称性,“Ep”代表期望,期望是指每次可能结果的概率乘以结果的总和。

1.7.2 相对熵与交叉熵的关系

将1.7.1中式子中对数部分展开,可以看到相对熵与交叉熵之间的关系:

由式可以看出p与q的相对熵是由二者的交叉熵去掉p的边际熵得来,相对熵是交叉熵中去掉熵的部分。

在神经网络中,由于训练数据集是固定的,即p的嫡一定,因此最小化交叉熵等价于最小化预测结果与真实分布之间的相对熵(模型的输出分布与真实分布的相对熵越小,表明模型对真实样本拟合效果越好),这也是要用交叉熵作为损失函数的原因。

1.8 JS散度

1.8.1 JS散度出现的原因

KL散度可以表示两个概率分布的差异,但它并不是对称的。在使用KL散度训练神经网络时,会有因顺序不同而造成训川练结果不同的情况。

1.8.2 JS散度

JS散度在KL散度的基础上进行了一次变换,使两个概率分布(p、q)间的差异度量具有对称性:

1.8.3 JS散度的特性

与KL散度相比,JS散废更适合在神经网络中应用。它具有以下特性。

  • 对称性:可以衡量两种不同分布之间的差异。
  • 大于或等于0:当两个分布完全重叠时,其JS散度达到最小值0。
  • 有上界:当两个分布差异越来越大时,其JS散度的值会逐渐增大。当两个分布的JS散度足够大时,其值会收敛到一个固定值,KL散度是没有上界的。
  • 在互信息的最大化任务中,常使用JS散度来代替KL散度。

2 互信息

互信息是衡量随机变量之间相互依赖程度的度量,用于度量两个变量间的共享信息量。

2.1 三句话解释互信息

  • 一个随机变量中包含的关于另一个随机变量的信息量,
  • 一个随机变量由于另一个已知的随机变量发生变化而减少的不确定性。
  • 例如,到中午的时候、去吃饭的不确定性,与在任意时间去吃饭的不确定性之差。

2.2 互信息公式

设有两个变量集合X和Y,它们中的个体分别为x、y,它们的联合概率分布函数为P(x,y),边际概率分布函数分别是P(x)、P(y)。互信息是指联合概率分布函数P(x,y)与边际概分布函数P(x),P(y)的相对熵。

 2.3 互信息的特点

(1)对称性:由于互信息属于两个变量间的共享信息,因此I(X;Y)=I(Y|X)。
(2)独立变量间互信息为0:如果两个变量独立,则它们之间没有任何共享信息,此时互信息为0。
(3)非负性:共享信息要么有,要么没有。互信息量不会出现负值。

2.4 互信息与条件熵之间关系

 2.5 互信息与联合熵之间关系

 2.6 互信息的应用

  • 互信息已被用作机器学习中的特征选择和特征变换的标准。它可表示变量的相关性和冗余性,例如,最小冗余特征选择。它可以确定数据集中两个不同聚类的相似性。
  • 在时间序列分析中,它还可以用于相位同步的检测。
  • 对抗神经网络(如DIM模型)及图神经网络(如DGI模型)中,使用互信息来作为无监督方式提取特征的方法。

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

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

相关文章

【Pytorch神经网络理论篇】 22 自编码神经网络:概述+变分+条件变分自编码神经网络

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络实战案例】13 构建变分自编码神经网络模型生成Fashon-MNST模拟数据

1 变分自编码神经网络生成模拟数据案例说明 变分自编码里面真正的公式只有一个KL散度。 1.1 变分自编码神经网络模型介绍 主要由以下三个部分构成: 1.1.1 编码器 由两层全连接神经网络组成,第一层有784个维度的输入和256个维度的输出;第…

【Pytorch神经网络实战案例】14 构建条件变分自编码神经网络模型生成可控Fashon-MNST模拟数据

1 条件变分自编码神经网络生成模拟数据案例说明 在实际应用中,条件变分自编码神经网络的应用会更为广泛一些,因为它使得模型输出的模拟数据可控,即可以指定模型输出鞋子或者上衣。 1.1 案例描述 在变分自编码神经网络模型的技术上构建条件…

hibernate持久化对象

转载于:https://www.cnblogs.com/jianxin-lilang/p/6440101.html

【Pytorch神经网络理论篇】 23 对抗神经网络:概述流程 + WGAN模型 + WGAN-gp模型 + 条件GAN + WGAN-div + W散度

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络实战案例】15 WGAN-gp模型生成Fashon-MNST模拟数据

1 WGAN-gp模型生成模拟数据案例说明 使用WGAN-gp模型模拟Fashion-MNIST数据的生成,会使用到WGAN-gp模型、深度卷积GAN(DeepConvolutional GAN,DCGAN)模型、实例归一化技术。 1.1 DCGAN中的全卷积 WGAN-gp模型侧重于GAN模型的训练部分,而DCG…

Android启动过程深入解析

转载自:http://blog.jobbole.com/67931/ 当按下Android设备电源键时究竟发生了什么?Android的启动过程是怎么样的?什么是Linux内核?桌面系统linux内核与Android系统linux内核有什么区别?什么是引导装载程序&#xff1…

【Pytorch神经网络实战案例】16 条件WGAN模型生成可控Fashon-MNST模拟数据

1 条件GAN前置知识 条件GAN也可以使GAN所生成的数据可控,使模型变得实用, 1.1 实验描述 搭建条件GAN模型,实现向模型中输入标签,并使其生成与标签类别对应的模拟数据的功能,基于WGAN-gp模型改造实现带有条件的wGAN-…

Android bootchart(二)

这篇文章讲一下MTK8127开机启动的时间 MTK8127发布版本开机时间大约在20秒左右,如果发现开机时间变长,大部分是因为加上了客户订制的东西,代码累赘太多了。 1、下面看一下MT&#…

Android Camera框架

总体介绍 Android Camera 框架从整体上看是一个 client/service 的架构, 有两个进程: client 进程,可以看成是 AP 端,主要包括 JAVA 代码与一些 native c/c++代码; service 进 程,属于服务端,是 native c/c++代码,主要负责和 linux kernel 中的 camera driver 交互,搜集 li…

【Pytorch神经网络实战案例】17 带W散度的WGAN-div模型生成Fashon-MNST模拟数据

1 WGAN-div 简介 W散度的损失函数GAN-dv模型使用了W散度来替换W距离的计算方式,将原有的真假样本采样操作换为基于分布层面的计算。 2 代码实现 在WGAN-gp的基础上稍加改动来实现,重写损失函数的实现。 2.1 代码实战:引入模块并载入样本-…

【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络实战案例】18 最大化深度互信信息模型DIM实现搜索最相关与最不相关的图片

图片搜索器分为图片的特征提取和匹配两部分,其中图片的特征提取是关键。将使用一种基于无监督模型的提取特征的方法实现特征提取,即最大化深度互信息(DeepInfoMax,DIM)方法。 1 最大深度互信信息模型DIM简介 在DIM模型…

【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能

1 案例说明(实现MINE正方法的功能) 定义两组具有不同分布的模拟数据,使用神经网络的MINE的方法计算两个数据分布之间的互信息 2 代码编写 2.1 代码实战:准备样本数据 import torch import torch.nn as nn import torch.nn.fun…

爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常

1 requests requests是Python中实现HTTP请求的一种方式,requests是第三方模块,该模块在实现HTTP请求时要比urlib、urllib3模块简化很多,操作更加人性化。 2 基本请求方式 由于requests模块为第三方模块,所以在使用requests模块时…

201521123044 《Java程序设计》第01周学习总结

1.本章学习总结 你对于本章知识的学习总结 1.了解了Java的发展史。 2.学习了什么是JVM,区分JRE与JDK,下载JDK。 3.从C语言的.c 到C的 .cpp再到Java的.java,每种语言编译程序各有不同,却有相似之处。 2. 书面作业 **Q1.为什么java程序可以跨平台运行&…

将一个java工程导入到myeclipse应该注意的地方

[原文]http://www.cnblogs.com/ht2411/articles/5471130.html 1. 最好新建一个myeclipse工程,然后从从文件系统导入该工程文件。 原因:很多项目可能是eclipse创建的,或者myeclipse的版本不一致,这样可能导致很多奇怪的现象&#x…

【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络基础理论篇】 07 线性回归 + 基础优化算法

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

浅谈命令查询职责分离(CQRS)模式

在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能问题。…