KL 散度和 Jencent 不等式

1. KL 散度

KL 散度又叫相对熵(relative entropy)、信息散度(information divergence),指的是两个概率分布间差异的非对称性度量。

设 P(x)、Q(x) 为随机变量 X 上的两个概率分布,则在离散和连续随机变量的情形下,相对熵的定义分别为:

我们可以把 P(x) 当做随机变量 x 在理论上的分布,把 Q(x) 当做在实际场景中得到的分布,通过 KL 散度可以量化出实际场景中得到的分布距离理论上的分布有多远,该值越小,距离越近,该值越大,距离越远。当且仅当 P=Q 时,KL 值等于 0。

假如一个字符发射器,随机发出 0 和 1 两种字符,由于我们只知道变量只有 0 和 1 两个值,其理论上的概率分布为 A(0:0.5, 1:0.5),但在实际进行实验时并不知道 A 的具体分布。

接下来,通过实验两组实验得到概率分布 B 与 C,各个分布的具体情况如下:

  1. A(0) = 1/2,A(1) = 1/2
  2. B(0) = 1/4,B(1) = 3/4
  3. C(0) = 1/8,C(1) = 7/8

接下来,套用上面的公式计算下在真实、具体场景中、实验得到的 B、C 分布距离理论上的分布(A分布)有多远,即:计算 B、C 两个分布相对于理论上的 A 分布损耗,KL 散度。

import numpy as np


if __name__ == '__main__':

    A0, A1 = 1/2, 1/2
    B0, B1 = 1/4, 3/4
    C0, C1 = 1/8, 7/8

    KL_A_B = A0*np.log(A0/B0) + A1*np.log(A1/B1)
    print(KL_A_B)

    KL_A_C = A0 * np.log(A0 / C0) + A1 * np.log(A1 / C1)
    print(KL_A_C)

程序输出结果:

0.14384103622589042
0.4133392865922339

从计算结果可以看到,KL(A||B) 小于 KL(A||C) ,说明实验得到的 B 分布相对于理论分布损耗更少,更加接近于理论分布。

2. jensen 不等式

如果 f(x) 在区间 [a, b] 上是向下凸函数,则对任意的 x1、x2 … xn 有不等式:

即:

当 x1 = x2 = … = xn 时等号成立。如果 f(x) 是一个严格的凸函数,当且仅当 x 是常数时不等式取等号。

未经允许不得转载:一亩三分地 » KL 散度和 Jencent 不等式