KL散度

KL散度

  相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence),信息增益(information gain),KL距离。
在这里插入图片描述

概念解释

  它是描述两个概率分布P和Q差异的非对称性的度量(注意与JS散度区别)。它是非对称的,这意味着D(P||Q) ≠ D(Q||P)。
  它衡量的是相同事件空间里的两个概率分布的差异情况。其物理意义是:在相同事件空间里,概率分布P(x)的事件空间,若用概率分布Q(x)编码时,平均每个基本事件(符号)编码长度增加了多少比特。我们用D(P||Q)表示KL距离,计算公式如下:
在这里插入图片描述

  常用于NLP。在SNE可视化时也使用了KL距离作为优化函数。

  另外,有人将KL散度称为KL距离,但事实上,KL散度并不满足距离的概念 虽然KL被称为距离,但是其不满足距离定义的三个条件:1)非负性;2)对称性(不满足,P到Q的距离,不等于Q到P的距离);3)三角不等式(不满足,两边之和大于第三边,两边之差小于第三边)。

与相对熵的关系

  当两个概率分布完全相同时,即P(x)=Q(X),其相对熵为0 。我们知道,概率分布P(X)的信息熵为:
在这里插入图片描述
  其表示,概率分布P(x)编码时,平均每个基本事件(符号)至少需要多少比特编码。

  相对熵:Kullback–Leibler divergence
  交叉熵:cross entropy,通常“相对熵”也可称为“交叉熵”,虽然公式上看相对熵=交叉熵-信息熵,但由于真实分布p是固定的,D(p||q)由H(p,q)决定。当然也有特殊情况,彼时2者须区别对待。

### KL的数学符号表示 在数学和机器学习领域,KL通常用特定的符号来表示其定义和用途。以下是关于KL符号的一些重要说明: #### 数学表达形式 KL的标准数学记法如下所示: \[ D_{\text{KL}}(P \parallel Q) = \sum_{x} P(x) \log{\left(\frac{P(x)}{Q(x)}\right)} \] 这里 \(D_{\text{KL}}\) 表示KL函数本身[^1]。 - 符号解释: - \(P(x)\): 真实的概率分布。 - \(Q(x)\): 预测或估计的概率分布。 - 对数项中的比例因子 \(\frac{P(x)}{Q(x)}\) 是核心部分,用于衡量两个分布在某一点上的相对差异[^4]。 #### TensorFlow实现中的符号约定 在实际应用中,比如TensorFlow框架下,`tf.keras.losses.KLDivergence()` 函数实现了上述理论公式。具体调用方式可以参考以下代码片段[^5]: ```python import tensorflow as tf kld_loss_fn = tf.keras.losses.KLDivergence() loss_value = kld_loss_fn([0.4, 0.9, 0.2], [0.5, 0.8, 0.12]) print(f'Loss: {loss_value.numpy()}') # 输出损失值 ``` 此代码展示了如何通过张量操作计算两组离概率分布间的KL。 #### 关于非对称性的特殊标注 值得注意的一点是,\(D_{\text{KL}}(P \parallel Q)\neq D_{\text{KL}}(Q \parallel P)\),即KL不具备交换性质[^2]。这意味着当评估方向改变时(即将真实分布设为预测目标或将预测分布视为基础),所得数值可能完全不同。 --- ### 总结 综上所述,在涉及KL的研究或者工程实践中,应严格区分所使用的符号及其背后的具体含义,并注意该指标仅适用于描述单向距离而非传统意义上的双向“距离”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值