KL距离相对熵

1. 概述

KL距离,是 Kullback-Leibler 差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy)。它衡量的是相同事件空间里的两个概率分布的差异情况。

2. 定义

D ( p ∥ q ) = ∑ x ∈ X p ( x ) log ⁡ p ( x ) q ( x ) D(p \| q)=\sum_{x \in X} p(x) \log \frac{p(x)}{q(x)} D(pq)=xXp(x)logq(x)p(x)
其中, p ( x ) p ( x ) p(x) q ( x ) q(x) q(x)是两个概率分布。
定义中约定: 0 l o g ( 0 / q ) = 0 0 l o g ( 0 / q ) = 0 0log(0/q)=0 p l o g ( p / 0 ) = ∞ p l o g ( p / 0 ) = ∞ plog(p/0)=

3.说明:

  • 两个概率分布的差距越大,KL距离越大
  • 当两个概率分布相同时,KL距离为0
### 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]。 此函数实现了基本的相对熵计算逻辑,并适用于大多数场景中的离散概率分布比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值