熵_相对熵_散度

1 信息量

意外越大,越不可能发生,概率就越小,信息量也就越大,也就是信息越多。比如说“今天肯定会天黑”,实现概率100%,说了和没说差不多,信息量就是0。
详见:2. 信息量

1.1 公式

I ( x ) = − l o g P ( x ) I(x)=-logP(x) I(x)=logP(x)
概率P(x)越小,信息量越大,可以简单理解为最小编码长度,比如概率0.125,log(1/0.125),如果以2为底做log,则需要3位二进制数描述。

2 熵

熵用于描述不确定性,越不确定,熵越高。熵是事件所属的整个分布的不确定性总量量化。可以说:熵越小,越容易被预测。

2.1 公式

H ( x ) = E x ∼ P [ I ( x ) ] = − E x ∼ P [ log ⁡ P ( x ) ] = − ∑ x P ( x ) log ⁡ P ( x ) H(\mathrm{x})=\mathbb{E}_{\mathbf{x} \sim P}[I(x)]=-\mathbb{E}_{\mathbf{x} \sim P}[\log P(x)]=-\sum_{x} P(x) \log P(x) H(x)=ExP[I(x)]=ExP[logP(x)]=xP(x)logP(x)
这里乘了概率P(x),等于计算了平均最小编码长度。

2.2 特性

  • 接近均匀分布的概率分布具有较高的熵
  • 接近确定性的分布 (输出几乎可以确定) 具有较低的熵

2.3 实例

import math
import scipy.statsarr = [1,10,100,1000]
e = 0
for x in arr:p = x/sum(arr)print(f"{x}, {round(p,5)} * {round(math.log(p),5)} = {round(p*math.log(p),5)}")e += p*math.log(p)
print(-e)
print(scipy.stats.entropy(arr))

运行结果

1, 0.0009 * -7.01302 = -0.00631
10, 0.009 * -4.71043 = -0.0424
100, 0.09001 * -2.40785 = -0.21673
1000, 0.90009 * -0.10526 = -0.09474
0.3601821726181299
0.3601821726181299
  • 首先要注意的是:数组里存放的是每个类别中元素的个数,而不是元素的具体值,本例中共1111个元素,分为四类。
  • p是每个类别出现的频率,取值在0-1之间,因此log§为负,频率p离1越近,log§离0越近。
  • 就每一类而言,有以下几种可能:
    • a.该类占整体比例越大,p越大,log§离0越近,相乘后,对整体熵(混乱程度)的贡献比较小
    • b.该类占整体比例越小,p越小,log§离0越远,相乘后,对整体熵(混乱程度)的贡献比较小
    • c.该类占整体比例适中,p值中等,log§也中等,相乘后,对整体熵(混乱程度)的贡献反而比较大
  • 其背后的逻辑是:
    • a.有一个类别可能性非常大(如a),绝大多数属于该类,就“蒙”这一类
    • b.有一个类别可能性非常小(如b),绝大多数不属于该类,“不蒙”这一类
    • c.如果数据被平均分成少数几个类别(c中的一种情况),那就很难“蒙对”了,这也是最不确定的情况

3 相对熵

相对熵可以用来衡量两个分布之间的差异程度。两者差异越小,KL散度越小。

3.1 KL散度

KL散度,KL距离,又叫相对熵(relative entropy),衡量两个概率分布之间的不同程度。

  • KL散度被称为:相对熵、互熵、鉴别信息、Kullback熵、Kullback-Leible散度(即KL散度的简写)。
  • KL散度常在损失函数中用于限制函数变化。
  • 在机器学习、深度学习领域中,KL散度被广泛运用于变分自编码器中(Variational AutoEncoder,简称VAE)、EM算法、GAN网络中。
  • KL散度是非对称的,如需考虑双向散度,请见JS散度。
  • KL散度结果为0-正无穷,很难给出一个绝对的阈值,但可以使用比较的方法计算相对的大小。

3.1.1 定义

一个离散随机变量X的可能取值为X=x1,x2,…xn,对应的概率pi=p(X=xi)。

3.1.2 离散公式

D K L ( p ∥ q ) = ∑ i = 1 n p ( x ) log ⁡ p ( x ) q ( x ) D_{K L}(p \| q)=\sum_{i=1}^{n} p(x) \log \frac{p(x)}{q(x)} DKL(pq)=i=1np(x)logq(x)p(x)
上述公式描述的是p相对于q的散度,针对每个x,计算不同分布中概率p(x)与q(x)的比值,当无差异时,其值为1,log(1)为0(见下方log函数图),此x项对应项则为0,否则根据其概率p(x)与差异的大小的乘积累加。当两个分布一致时,其KL散度为0。

3.1.3 连续公式

D K L ( p ∥ q ) = ∫ x p ( x ) log ⁡ p ( x ) q ( x ) d x D_{KL}(p \| q)=\int_x p(x) \log \frac{p(x)}{q(x)} d x DKL(pq)=xp(x)logq(x)p(x)dx
与离散公式类似,差异是将离散x变为连续值计算积分,其目标也是让x取值范围中所有值p(x)与q(x)一致。

3.1.4 用途

  • 用户画像
    使用KL散度去计算同一类型商品不同用户群体之间的金额(或其余指标)的KL散度,如果都很接近,说明这个类型商品不是不同用户群体之间的差异点,可以进行剔除,只保留有差异性的商品类型(KL散度较大)。

3.2 JS散度

3.2.1 定义

JS散度是基于KL散度的变体,解决了KL散度非对称的问题,同样是二者越相似,JS散度越小。

3.2.2 特性

JS散度的取值范围在0-1之间,完全相同时为0。

3.2.3 公式

J S ( P 1 ∣ ∣ P 2 ) = 1 2 K L ( P 1 ∣ ∣ P 1 + P 2 2 ) + 1 2 K L ( P 2 ∣ ∣ P 1 + P 2 2 ) J_S(P_1||P_2)=\frac{1}{2}KL(P_1||\frac{P_1+P_2}{2})+\frac{1}{2}KL(P_2||\frac{P_1+P_2}{2}) JS(P1∣∣P2)=21KL(P1∣∣2P1+P2)+21KL(P2∣∣2P1+P2)
把数据1和数据2放一块作为一个整体,再用数据1和数据2分别和整体比。

4 交叉熵

4.1 公式

交叉熵常作为损失函数使用,用于评价离散值的预测:
H ( p , q ) = ∑ x p ( x ) ⋅ log ⁡ ( 1 q ( x ) ) \mathrm{H}(\mathrm{p}, \mathrm{q})=\sum_{x} p(x) \cdot \log \left(\frac{1}{q(x)}\right) H(p,q)=xp(x)log(q(x)1)
p表示真实标签的分布,q则为训练后的模型的预测标签分布,交叉熵损失函数可以衡量p与q的相似性。如果把q换成p,则计算的是数据的熵。

4.2 交叉熵损失函数

交叉熵作为分类的损失函数时,由于实际上每个实例只属于一个分类,则只有一个p(x)为1,其它p(x)都为0,那么只需要考虑模型预测为该类别的概率q(x)。展开式示例如下:
H ( P 1 , Q 1 ) = − ∑ i P 1 ( i ) log ⁡ 2 Q 1 ( i ) = − ( 1 log ⁡ 0.4 + 0 log ⁡ 0.3 + 0 log ⁡ 0.05 + 0 log ⁡ 0.05 + 0 log ⁡ 0.2 ) ≈ 0.916 \begin{array}{c} H\left(P_{1}, Q_{1}\right)=-\sum_{i} P_{1}(i) \log _{2} Q_{1}(i) \\ =-(1 \log 0.4+0 \log 0.3+0 \log 0.05+0 \log 0.05+0 \log 0.2) \approx 0.916 \end{array} H(P1,Q1)=iP1(i)log2Q1(i)=(1log0.4+0log0.3+0log0.05+0log0.05+0log0.2)0.916
当预测完全正确,q(x)=1,log(1/q(x))=0,p(x)=1,H(p,q)=0。
当预测概率为40%,q(x)=0.4,log(1/0.4)=0.916,p(x)=1,H(p,q)=0.916,预测不准,loss大。
当预测概率为90%,q(x)=0.9,log(1/0.9)=0.105,p(x)=1,H(p,q)=0.105,预测较准,loss小。
如果说第一项是“狗”,实际也真是狗,第一项的P(x)=1,也希望预测的q(x)接近1(它是个概率取值在0-1之间);它离1越远(近0),越要惩罚它。

5 参考

5.1 log曲线

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

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

相关文章

流批一体计算引擎-4-[Flink]消费kafka实时数据

Python3.6.9 Flink 1.15.2消费Kafaka Topic PyFlink基础应用之kafka 通过PyFlink作业处理Kafka数据 1 环境准备 1.1 启动kafka (1)启动zookeeper zkServer.sh start(2)启动kafka cd /usr/local/kafka/ nohup ./bin/kafka-server-start.sh ./config/server.properties >&g…

【仿牛客网笔记】 Kafka,构建TB级异步消息系统——发送系统通知、显示系统通知

定义时间主题 判断消息内容是否为空,消息格式是否错误。 系统通知是后台发给用户 发送站内通知 构造一个Message对象 设置站内的值 判断是否有数据,然后放入到message中 对CommentController、LikeController、FollowController进行处理。 需要注入…

kafka集群压测与优化

影响kafka集群性能的因数有多个,网络带宽、cpu、内存、磁盘读写速度、副本数、分区数、broker数量、内存缓存等因素都会影响kafka集群的性能 1.优化kafka集群配置 server.properties配置文件优化 num.network.threads4 num.io.threads4 socket.send.buffer.bytes…

熵,信息熵,香农熵,微分熵,交叉熵,相对熵

2019-07-13 https://blog.csdn.net/landstream/article/details/82383503 https://blog.csdn.net/pipisorry/article/details/51695283 https://www.zhihu.com/question/41252833 https://cloud.tencent.com/developer/article/1397504 按顺序查看更容易理解 0、背景 在信息论中…

【Hive】云任务大量卡住故障分析

项目场景: 上一章节我们简单介绍到了JVM调优相关的知识,本章节结合日常故障处理进一步说明相关的使用 问题描述 在云上,hive任务出现大面积卡住的现象,但并无任何报错信息,具体如下: 原因分析&#xff1…

Linux服务器出现异常和卡顿排查思路和步骤

目录 前言一、查看内存使用情况二、查看磁盘使用情况三、top命令3.1 jmap分析堆内存配置信息和使用情况3.2 jstack分析线程的执行情况3.3 jstat查看各个区域占堆百分比 四、其他指令总结 前言 Linux 服务器出现异常和卡顿的原因有很多,以下是一些常见的原因&#x…

熵、交叉熵和散度

熵 自信息 I(x) - log p(x) 对于分布为P(x)的随机变量X,自信息的数学期望 即熵H(X)定义为: 熵越高,随机变量信息越高,反之越少。不同概率分布对应熵如下:P p()熵10001/21/41/41/31/31/3 概率分布越均匀&#xff0…

【腾讯轻量应用服务器上部署kafka并通过flink读取kafka数据】

环境准备 经过1个月的摸索,最终选择在腾讯云上搭建一个学习环境。当时选择原因还是新用户有优惠(150左右3年),但现在看1核2g的配置勉强够用,建议后续小伙伴选择时最好是2核4g配置。 由于是单节点安装,需要准备如下资源&#xff1…

【Twitter Storm系列】flume-ng+Kafka+Storm+HDFS 实时系统搭建

技术交流群:59701880 深圳广州hadoop好友会 微信公众号:后续博客的文档都会转到微信公众号中。 一直以来都想接触Storm实时计算这块的东西,最近在群里看到上海一哥们罗宝写的FlumeKafkaStorm的实时日志流系统的搭建文档,自己也跟…

学习笔记之信息量、熵、KL散度、交叉熵的一些介绍

文章目录 信息量熵KL散度(相对熵)交叉熵参考 信息量 以前我也一直只是知道信息量的计算公式,也有想过为什么会是这样,但是因为要学的东西太多了,就没怎么深究,直到看了“交叉熵”如何做损失函数&#xff1…

AI产品经理是如何理解机器学习的(附注释)

本期目的:回顾之前敲代码的日常,利用生活场景帮助AI产品经理认识机器学习及学习过程中常用算法和评价指标。 适用读者:AI/数据产品经理。 阅读重点:品,细品,结合班级故事再品。 最近看了很多关于机器学习…

卢伟冰称小米今年库存会回到更健康水位 将加大门店整合调整

雷递网 乐天 3月25日 小米集团(股票代码为:1810)今日发布财报,财报显示,小米集团2022年营收为2800亿元,较上年同期的3283亿元下降14.7%。小米2022年经调净利为85亿元。 小米2022年第四季度营收为660.47亿元…

小米年营收2800亿:经调整利润85亿 电动汽车业务投入31亿

雷递网 雷建平 3月24日 小米集团(股票代码为:1810)今日发布财报,财报显示,小米集团2022年营收为2800亿元,较上年同期的3283亿元下降14.7%。 2022年,小米集团的境外市场收入为1378亿元&#xff0…

什么是低代码开发平台(apaas)?低代码开发平台的价值有哪些

手码6500字,带你快速看懂:什么是低代码开发平台(apaas),低代码有哪些价值,以及低代码平台的使用逻辑和心得。 一、什么是低代码开发平台(apaas)? 低代码开发平台是一种a…

详解如何在ChatGPT内构建一个Python解释器

这篇文章主要为大家详细介绍了如何在ChatGPT内构建一个Python解释器,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下 目录 引用:Art Kulakov 《How to Build a Python Interpreter Inside ChatGPT》 这个灵感来自…

如何画各种“图”?

我们在写文档过程中,多多少少都会画一些图来说明程序的功能,这篇文章就来说明一些常用的"图"怎么画。 1,画图工具 常用的有这么几种 Visio:这是很常用的,基本上的图都可以用这个来画。StarUML&#xff1a…

patreon cg人物插画作品合集分享

1、wlop大神作品4K-8K精选无水印图片http://theme.chengxuz.com/265.html 2、加拿大女画师sakimi chan作品1-98期插画http://theme.chengxuz.com/250.html 3、画师Mirco Cabbia插画作品合集欣赏http://theme.chengxuz.com/306.html 4、画师Sciamano240插画作品分享http://th…

如何画场景插画?场景插画的起稿、构图技巧!

如何画场景插画?绘画初学者如何构图?绘画初学者如何起稿?学习绘画难吗?怎样才能学好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能绘画好一个场景,不知道如何起稿也不知道…

手把手教你实现手绘风格图形

大家好,我是 漫步,今天分享一篇高难度的图形绘制文章。 Rough.js[1]是一个手绘风格的图形库,提供了一些基本图形的绘制能力,比如:虽然笔者是个糙汉子,但是对这种可爱的东西都没啥抵抗力,这个库的…

Python自动绘制UML类图、函数调用图(Call Graph)

文章目录 1. 引言2. 绘制UML类图2.1 安装graphviz2.2 安装pyreverse2.3 绘制UML类图 3. 绘制函数调用图3.1 安装graphviz3.2 安装pycallgraph3.3 使用示例第一种:从命令行调用第二种:从API调用 小结 1. 引言 在设计软件、分析代码时,我们常常…