相对熵(KL散度)

今天开始来讲相对熵,我们知道信息熵反应了一个系统的有序化程度,一个系统越是有序,那么它的信息熵就越低,反

之就越高。下面是熵的定义

 

如果一个随机变量的可能取值为,对应的概率为,则随机变

的熵定义为

 

            

 

有了信息熵的定义,接下来开始学习相对熵。

 

Contents

 

   1. 相对熵的认识

   2. 相对熵的性质

   3. 相对熵的应用

 

 

1. 相对熵的认识

 

   相对熵又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度(即KL散度)等。设

   是取值的两个概率概率分布,则的相对熵为

 

              

 

   在一定程度上,熵可以度量两个随机变量的距离。KL散度是两个概率分布P和Q差别的非对称性的度量。KL散度是

   用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q

   表示数据的理论分布,模型分布,或P的近似分布。

 

 

2. 相对熵的性质

 

   相对熵(KL散度)有两个主要的性质。如下

 

   (1)尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即

 

       

 

   (2)相对熵的值为非负值,即

 

       

 

       在证明之前,需要认识一个重要的不等式,叫做吉布斯不等式。内容如下

 

       

 

 

3. 相对熵的应用

 

   相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增

   大时,它们的相对熵也会增大。所以相对熵(KL散度)可以用于比较文本的相似度,先统计出词的频率,然后计算

   KL散度就行了。另外,在多指标系统评估中,指标权重分配是一个重点和难点,通过相对熵可以处理。

 

   在Julia中,有一个KLDivergence包,用来计算两个分布之间的K-L距离,它需要依赖Distributions包,用

   法详见:https://github.com/johnmyleswhite/KLDivergence.jl

 

             

 

 

### JavaScript 中实现相对熵计算方法 相对熵(也称为 Kullback-Leibler ),用于衡量两个概率分布之间的差异程。其定义如下: \[ D_{KL}(P || Q) = \sum_{i} P(i) \cdot \log{\frac{P(i)}{Q(i)}} \] 其中 \(P\) \(Q\) 是两个离的概率分布。 以下是基于上述公式的 JavaScript 实现代码示例: ```javascript function calculateRelativeEntropy(P, Q) { if (P.length !== Q.length) { throw new Error("Probability distributions must have the same length."); } let relativeEntropy = 0; for (let i = 0; i < P.length; i++) { if (P[i] === 0) continue; // 避免除零错误 if (Q[i] === 0) { throw new Error("Q distribution cannot contain zero values when corresponding P is non-zero."); } relativeEntropy += P[i] * Math.log(P[i] / Q[i]); } return relativeEntropy; } // 示例输入 const P = [0.1, 0.2, 0.3, 0.4]; // 概率分布 P const Q = [0.2, 0.3, 0.3, 0.2]; // 概率分布 Q console.log(calculateRelativeEntropy(P, Q)); // 输出相对熵值 ``` #### 关键点说明 - **输入验证**:如果 `P` `Q` 的长不一致,则抛出异常,因为两者必须具有相同的维[^1]。 - **除零处理**:当 `P[i]` 或 `Q[i]` 出现零时需特别注意。如果 `P[i]` 为零,则跳过该项;但如果 `Q[i]` 为零而对应的 `P[i]` 不为零,则会引发未定义行为,因此应提前检测并抛出错误[^2]。 此函数实现了基本的相对熵计算逻辑,并适用于大多数场景中的离概率分布比较。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值