KL散度相关知识点总结

KL散度

定义及说明

KL散度(KL divergence)是度量两个分布之间差异的函数。测量两个概率分布之间的距离。如果两个分布越接近,那么KL散度越小,如果越远,KL散度就会越大。

考虑一个未知的分布 p ( x ) p(x) p(x),假定用一个 近似的分布 q ( x ) q(x) q(x) 对其进行建模。
如果我们使用 q(x) 来建立一个编码体系,用来把 x 的值传给接收者,那么由于我们使用了q(x)而不是真实分布p(x),平均编码长度比用真实分布p(x)进行编码增加的信息量(单位是 nat )为:
K L ( p ∣ ∣ q )    =    − ∫ p ( x ) ln ⁡ ( q ( x ) ) d x −    ( − ∫ p ( x ) ln ⁡ ( p ( x ) ) d x )    =    − ∫ p ( x ) ln ⁡ ( q ( x ) p ( x ) ) d x KL(p\vert\vert q)\;=\;-\int p(x)\ln\left(q(x)\right)dx-\;(-\int p(x)\ln\left(p(x)\right)dx)\;\\=\;-\int p(x)\ln\left(\frac{q(x)}{p(x)}\right)dx KL(pq)=p(x)ln(q(x))dx(p(x)ln(p(x))dx)=p(x)ln(p(x)q(x))dx
这就被称为 分布 p ( x ) p(x) p(x)和分布q(x)之间的相对熵(relative entropy) 或者 KL散度(Kullback-Leibler divergence)

也就是说,当我们知道真实的概率分布之后,可以给出最有效的编码。如果我们使用了不同于真实分布的概率分布,那么我们一定会损失编码效率,并且在传输时增加的平均额外信息量至少等于两个分布之间的KL散度。

公式

K L ( p ∥ q ) = ∑ p ( x ) ln ⁡ ( p ( x ) q ( x ) )          离 散 概 率 分 布 的 公 式 KL\left(p\parallel q\right) = \sum p\left(x\right)\ln\left(\frac{p\left(x\right)}{q\left(x\right)}\right) \;\;\;\;离散概率分布的公式 KL(pq)=p(x)ln(q(x)p(x))

K L ( p ∥ q ) = ∫ p ( x ) ln ⁡ ( p ( x ) q ( x ) ) d x          连 续 概 率 分 布 的 公 式 KL\left(p\parallel q\right)=\int p\left(x\right)\ln\left(\frac{p\left(x\right)}{q\left(x\right)}\right)dx\;\;\;\;连续概率分布的公式 KL(pq)=p(x)ln(q(x)p(x))dx

性质

  1. 不对称性
    尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即
    K L ( p ∥ q )      ≠ K L ( q ∥ p ) KL\left(p\parallel q\right)\;\;\neq KL\left(q\parallel p\right) KL(pq)=KL(qp)
  2. 非负性
    证明:KL散度满足 K L ( p ∥ q ) ⩾ 0 KL\left(p\parallel q\right)\geqslant0 KL(pq)0,当且仅当 p ( x ) = q ( x ) p\left(x\right) = q\left(x\right) p(x)=q(x)时等号成立
    设实直线上的函数f(x) 是一个非负函数,且:
    ∫ − ∞ + ∞ f ( x ) d x    =    1 \int_{-\infty}^{+\infty}f(x)dx\;=\;1 +f(x)dx=1
    如果 g 是任意实可测函数且函数 [公式] 是凸的,那么有Jensen不等式如下:
    φ ( ∫ − ∞ + ∞ g ( x ) f ( x ) d x ) ≤ ∫ − ∞ + ∞ φ ( g ( x ) ) f ( x ) d x \varphi(\int_{-\infty}^{+\infty}g(x)f(x)dx)\leq\int_{-\infty}^{+\infty}\varphi(g(x))f(x)dx φ(+g(x)f(x)dx)+φ(g(x))f(x)dx
    注意到, − ln ⁡ x -\ln x lnx 是严格的凸函数 且 ∫ − ∞ + ∞ q ( x ) d x    =    1 \int_{-\infty}^{+\infty}q(x)dx\;=\;1 +q(x)dx=1
    φ ( x ) = − ln ⁡ x \varphi(x) =-\ln x φ(x)=lnx g ( x ) = q ( x ) p ( x ) g(x)=\frac{q(x)}{p(x)} g(x)=p(x)q(x) f ( x ) = q ( x ) f(x) = q(x) f(x)=q(x):
    把 Jensen 不等式应用于 KL散度,直接可得
    K L ( p ∥ q ) = ∫ p ( x ) − ln ⁡ ( q ( x ) p ( x ) ) d x ≥ − ln ⁡ ( ∫ q ( x ) d x ) = 0 KL\left(p\parallel q\right)=\int p\left(x\right)-\ln\left(\frac{q\left(x\right)}{p\left(x\right)}\right)dx\geq-\ln\left(\int q\left(x\right)dx\right)=0 KL(pq)=p(x)ln(p(x)q(x))dxln(q(x)dx)=0
    只有 q ( x ) = p ( x ) q(x) = p(x) q(x)=p(x) 对于所有 x x x 都成立时,等号才成立。

因此我们可以把 KL 散度看做两个分布 p(x) 和 q(x)之间不相似程度的度量。

最小化 Kullback-Leibler 散度等价于最大化似然函数

假设我们想要对未知分布 p ( x ) p(x) p(x) 建模,可以试着使用一些参数分布 q ( x ∣ θ ) q(x\vert\theta) q(xθ)来近似 p ( x ) p(x) p(x) q ( x ∣ θ ) q(x\vert\theta) q(xθ)由可调节的参数 θ \theta θ控制(例如一个多元高斯分布)。

通过最小化 p ( x ) p(x) p(x) q ( x ∣ θ ) q(x\vert\theta) q(xθ) 之间关于 θ \theta θ 的 KL散度可以确定 θ \theta θ
但是因为不知道 p(x),所以不能直接这么做。

如果已经观察到了服从分布 p ( x ) p(x) p(x) 的有限数量的训练点集 { x n } \{x_n\} {xn},其中 n = 1 , . . . , N n=1,...,N n=1,...,N ,那么关于 p ( x ) p(x) p(x) 的期望就可以通过这些点的有限加和,使用公式 E ( f ) ≃ 1 N ∑ n = 1 N f ( x n ) E(f)\simeq\frac1N\sum_{n=1}^Nf(x_n) E(f)N1n=1Nf(xn)来近似,即:
K L ( p ∥ q ) ≃ 1 N ∑ n = 1 N [ − ln ⁡ ( q ( x n ∣ θ ) )    +    ln ⁡ ( p ( x n ) ) ] KL\left(p\parallel q\right)\simeq\frac1N\sum_{n=1}^N\lbrack-\ln\left(q(x_n\vert\theta)\right)\;+\;\ln\left(p(x_n)\right)\rbrack KL(pq)N1n=1N[ln(q(xnθ))+ln(p(xn))]
公式右侧的第二项与 θ \theta θ 无关,第一项是使用训练集估计的分布 q ( x ∣ θ ) q(x\vert\theta) q(xθ)下的 θ \theta θ 的负对数似然函数。

因此最小化KL散度等价于最大化似然函数。

KL散度的测度论定义

如果 μ \mu μ ν \nu ν 是 集合 X X X上的测度,且 μ ≪ ν    \mu\ll\nu\; μν

由Radon–Nikodym theorem, μ \mu μ ν \nu ν 的KL散度定义如下:

D K L ( μ ∣ ∣ ν ) = ∫ X ln ⁡ ( d μ d ν ) d μ D_{KL}(\mu\vert\vert\nu)=\int_X\ln\left(\frac{d\mu}{d\nu}\right)d\mu DKL(μν)=Xln(dνdμ)dμ

KL散度、JS散度和交叉熵

KL散度在上面进行讨论了

JS散度(Jensen-Shannon divergence)

JS散度也称JS距离,是KL散度的一种变形。
J S ( P ∣ ∣ Q ) = 1 2 K L ( P ( x ) ∣ ∣ P ( x ) + Q ( x ) 2 ) + 1 2 K L ( Q ( x ) ∣ ∣ P ( x ) + Q ( x ) 2 ) JS(P\vert\vert Q)=\frac12KL(P(x)\vert\vert\frac{P(x)+Q(x)}2)+\frac12KL(Q(x)\vert\vert\frac{P(x)+Q(x)}2) JS(PQ)=21KL(P(x)2P(x)+Q(x))+21KL(Q(x)2P(x)+Q(x))

一般地,JS散度是对称的,其取值是 0 到 1 之间。如果两个分配 P,Q 离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为 0。梯度消失了

但是不同于KL主要又两方面:
(1)值域范围
JS散度的值域范围是[0,1],相同则是0,相反为1。相较于KL,对相似度的判别更确切了。
(2)对称性
J S ( P ∣ ∣ Q ) = J S ( Q ∣ ∣ P ) JS(P||Q)=JS(Q||P) JS(PQ)=JS(QP),从数学表达式中就可以看出。

JS散度解决了KL不对称的问题,JS是对称的。
很明显,如果P1,P2完全相同,那么JS =0, 如果完全不相同,那么就是1.

交叉熵(Cross Entropy)

在神经网络中,交叉熵可以作为损失函数,因为它可以衡量 P P P Q Q Q的相似性。
H ( P , Q ) = ∑ P ( x ) ln ⁡ ( 1 Q ( x ) ) H(P,Q)={\textstyle\sum_{}}P(x)\ln\left(\frac1{Q(x)}\right) H(P,Q)=P(x)ln(Q(x)1)
交叉熵和相对熵的关系:
D ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D(P\vert\vert Q)=H(P,Q)-H(P) D(PQ)=H(P,Q)H(P)
以上都是基于离散分布的概率,如果是连续的数据,则需要对数据进行Probability Density Estimate来确定数据的概率分布,就不是求和而是通过求积分的形式进行计算了。

  1. VAE(1)——从KL说起
  2. KL散度理解
  3. kl散度的理解
  4. 理解JS散度(Jensen–Shannon divergence)
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值