有关熵、相对熵(KL散度)、交叉熵、JS散度、Wasserstein距离的内容

2023-11-08 12:30

本文主要是介绍有关熵、相对熵(KL散度)、交叉熵、JS散度、Wasserstein距离的内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

  • 最近学了一些关于熵的内容,为增强自己对这些内容的理解,方便自己以后能够温习,随手记录了相关的介绍,可能有不对的地方,敬请谅解。

信息量

  • 任何事件都会承载一定的信息,事件发生的概率越大,其含有的信息量越少,事件发生的概率越小,其含有的信息量越多。比如昨天下雨了,是一个既定的事实,所以其信息量为0,天气预报说明天会下雨,是一个概率事件,其信息量相对较大。

  • 假设 X X X是一个离散型随机变量, p ( X = x 0 ) p(X=x_0) p(X=x0)表示随机变量取值为 x 0 x_0 x0的概率,那么 X = x 0 X=x_0 X=x0的信息量的计算公式:
    I ( x 0 ) = − log ⁡ ( p ( x 0 ) ) I(x_0) = -\log(p(x_0)) I(x0)=log(p(x0))

  • 熵描述的是随机变量不确定性的程度。

  • 假设随机变量 X X X n n n个取值, X X X取值为 x i x_i xi时的概率为 p ( x i ) p(x_i) p(xi),计算公式为:
    H ( X ) = − ∑ i = 0 n p ( x i ) log ⁡ ( p ( x i ) ) H(X) = -\sum_{i=0}^{n}p(x_i)\log(p(x_i)) H(X)=i=0np(xi)log(p(xi))

相对熵(KL散度)

  • 相对熵用于描述同一个变量在两个独立的概率分布之间的差异。

  • 假设 P P P表示真实分布, Q Q Q表示模型通过学习得到的预测分布,也称拟合分布。那么用 K L KL KL散度定义两个分布之间的差异:

    • P P P相对于 Q Q Q称为前向散度(常用于机器学习领域):
      D K L ( p ∣ ∣ q ) = E p ( log ⁡ ( p q ) ) = ∑ i = 0 n p ( x i ) log ⁡ ( p ( x i ) q ( x i ) ) D_{KL}(p||q) = E_p(\log(\frac{p}{q})) =\sum_{i=0}^n p(x_i) \log(\frac{p(x_i)}{q(x_i)}) DKL(p∣∣q)=Ep(log(qp))=i=0np(xi)log(q(xi)p(xi))

    • Q Q Q相对于 P P P称为反向散度(常用于强化学习邻域):
      D K L ( q ∣ ∣ p ) = E q ( log ⁡ ( q p ) ) = ∑ i = 0 n q ( x i ) log ⁡ ( q ( x i ) p ( x i ) ) D_{KL}(q||p) = E_q(\log(\frac{q}{p})) =\sum_{i=0}^n q(x_i) \log(\frac{q(x_i)}{p(x_i)}) DKL(q∣∣p)=Eq(log(pq))=i=0nq(xi)log(p(xi)q(xi))

    • 注意:上述公式,分子是哪个分布,计算KL散度参考的就是哪个分布,比如前向散度中, P P P就是参考分布,也称真实分布,而 Q Q Q就是近似分布,也称理论分布。在计算KL散度时,使用的是基于参考分布中的随机变量,也就是在计算时,我们使用的是参考分布中每个随机变量的概率值,以及近似分布中相应变量的概率值

  • 当分布 Q Q Q和分布 P P P越接近,说明这两个分布越相似,那么 K L KL KL散度值越小。

  • 由于通常情况下, D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL(p∣∣q) D K L ( q ∣ ∣ p ) D_{KL}(q||p) DKL(q∣∣p)不相等,所以KL散度不满足对称性。同时也不满足三角不等式

交叉熵

  • K L KL KL散度公式变形:
    D K L ( p ∣ ∣ q ) = ∑ i = 0 n p ( x i ) log ⁡ ( p ( x i ) ) − ∑ i = 0 n p ( x i ) log ⁡ ( q ( x i ) ) D_{KL}(p||q) = \sum_{i=0}^np(x_i)\log(p(x_i)) - \sum_{i=0}^np(x_i)\log(q(x_i)) DKL(p∣∣q)=i=0np(xi)log(p(xi))i=0np(xi)log(q(xi))

  • 上面等式中的 − ∑ i = 0 n p ( x i ) log ⁡ ( q ( x i ) ) - \sum_{i=0}^np(x_i)\log(q(x_i)) i=0np(xi)log(q(xi))就是交叉熵 H ( p , q ) H(p,q) H(p,q)

  • P P P的熵为:
    H ( p ) = − ∑ i = 0 n p ( x i ) log ⁡ ( p ( x i ) ) H(p) = -\sum_{i=0}^np(x_i)\log(p(x_i)) H(p)=i=0np(xi)log(p(xi))

  • 如果真实分布 P P P不变,那么 H ( p ) H(p) H(p)就是一个常数,所以在训练模型时,我们只需要关注交叉熵,最小化交叉熵的值。
    H ( p , q ) = − ∑ i = 0 n p ( x i ) log ⁡ ( q ( x i ) ) H(p,q) =- \sum_{i=0}^np(x_i)\log(q(x_i)) H(p,q)=i=0np(xi)log(q(xi))

JS散度

  • JS散度描述的是两个分布的相似程度。

  • 对于概率分布 P P P Q Q Q,js散度的计算公式如下:
    J S ( P ∣ ∣ Q ) = 1 2 D K L ( P ∣ ∣ M ) + 1 2 D K L ( Q ∣ ∣ M ) JS(P||Q) = \frac{1}{2}D_{KL}(P||M) + \frac{1}{2}D_{KL}(Q||M) JS(P∣∣Q)=21DKL(P∣∣M)+21DKL(Q∣∣M)

  • 其中 M M M P P P Q Q Q的平均分布。平均分布的计算过程如下:

    • 对于同一个事件 i i i,假设事件 i i i P P P中发生的概率为 P ( i ) P(i) P(i),在 Q Q Q中发生的概率为 Q ( i ) Q(i) Q(i),那么事件 i i i M M M中发生的概率为:
      M ( i ) = P ( i ) + Q ( i ) 2 M(i) = \frac{P(i) + Q(i)}{2} M(i)=2P(i)+Q(i)

    • 注意:当两个分布不存在重叠部分时,计算它们的平均分布没有意义,因为事件 i i i P P P中发生,在 Q Q Q中却不发生。这里说的重叠是指 P P P Q Q Q的支撑集不相交,简单来说,就是 P P P Q Q Q的随机变量的取值集合没有交集。

  • 如果 P P P Q Q Q的分布不重叠,那么计算得到的JS散度是一个常数。(个人解释如下,不完全正确,仅供参考)

    • 如果 P P P Q Q Q的分布不重叠,根据KL散度的定义可知,在计算KL散度时,会基于参考分布的随机变量来计算,那么由此计算得到的 M M M会是相应分布的 1 2 \frac{1}{2} 21。进而 D K L ( P ∣ ∣ M ) = ∑ i = 0 n P ( x i ) log ⁡ ( P ( x i ) 1 2 P ( x i ) ) = ∑ i = 0 n P ( x i ) log ⁡ ( 2 ) = log ⁡ ( 2 ) ∑ i = 0 n p ( x i ) = log ⁡ 2 D_{KL}(P||M) = \sum_{i=0}^{n}P(x_i)\log(\frac{P(x_i)}{\frac{1}{2}P(x_i)}) = \sum_{i=0}^{n}P(x_i)\log(2) = \log(2) \sum_{i=0}^np(x_i) = \log2 DKL(P∣∣M)=i=0nP(xi)log(21P(xi)P(xi))=i=0nP(xi)log(2)=log(2)i=0np(xi)=log2,同样可以计算 D K L ( Q ∣ ∣ M ) = log ⁡ 2 D_{KL}(Q||M) = \log2 DKL(Q∣∣M)=log2,所以 J S ( P ∣ ∣ Q ) = log ⁡ 2 JS(P||Q) = \log2 JS(P∣∣Q)=log2,所以计算得到的JS散度是一个常数。

Wasserstein距离

  • 当两个分布不重叠时,计算 K L KL KL散度是无意义的,因为在 P P P中出现的事件 i i i,在 Q Q Q中不会出现,即 q ( x i ) = 0 q(x_i) = 0 q(xi)=0,而在计算 K L KL KL散度的公式中, D K L ( p ∣ ∣ q ) = ∑ i = 0 n p ( x i ) log ⁡ ( p ( x i ) q ( x i ) ) D_{KL}(p||q) =\sum_{i=0}^n p(x_i) \log(\frac{p(x_i)}{q(x_i)}) DKL(p∣∣q)=i=0np(xi)log(q(xi)p(xi)) q ( x i ) q(x_i) q(xi)是分母,所以此时 K L KL KL散度无意义。

  • Wasserstein距离用于描述两个分布之间的距离。

  • 分布 P P P Q Q Q的Wasserstein距离定义如下:
    W ( P , Q ) = i n f γ ∼ Γ ( P , Q ) E ( X , Y ) ∼ γ ( ∣ ∣ X − Y ∣ ∣ ) W(P, Q) = inf_{\gamma \sim \Gamma(P, Q) } E_{(X, Y) \sim \gamma}(||X-Y||) W(P,Q)=infγΓ(P,Q)E(X,Y)γ(∣∣XY∣∣)

    • 其中 Γ ( P , Q ) \Gamma(P, Q) Γ(P,Q)表示 P P P Q Q Q所有可能的联合分布集合, γ \gamma γ表示所有可能联邦分布中的一个, ( X , Y ) ∼ γ (X, Y)\sim \gamma (X,Y)γ表示从联合分布中随机采样一个样本 ( X , Y ) (X, Y) (X,Y) ∣ ∣ X − Y ∣ ∣ ||X - Y|| ∣∣XY∣∣表示计算样本 ( X , Y ) (X, Y) (X,Y)的距离, E ( X , Y ) ∼ γ ( ∣ ∣ X − Y ∣ ∣ ) E_{(X, Y)\sim \gamma}(||X-Y||) E(X,Y)γ(∣∣XY∣∣)表示在联合分布为 γ \gamma γ时,样本距离的期望值。整个式子也就是找到一个可能的联合分布 γ \gamma γ,使得这个期望值最小。
    • 如果把分布 P P P Q Q Q看成是土堆 A A A和土堆 B B B,那么Wassersteion距离就是将土堆 A A A,推到土堆 B B B的最少运算成本,也就是将一个分布变换为另一个分布的最小成本

Reference:https://zhuanlan.zhihu.com/p/74075915

这篇关于有关熵、相对熵(KL散度)、交叉熵、JS散度、Wasserstein距离的内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369857

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

js react 笔记 2

起因, 目的: 记录一些 js, react, css 1. 生成一个随机的 uuid // 需要先安装 crypto 模块const { randomUUID } = require('crypto');const uuid = randomUUID();console.log(uuid); // 输出类似 '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验