KL散度(大部分转载)

首先KL散度是一种距离,就是两个熵相减得到的差值。用基于P的编码去编写来自P或Q的样本。让两者相减,得到基于P的编码的P或Q的样本所产生的信息量,也就是基于同一个条件下,两个分布的差异,差异也就是距离。

熵的定义公式中,log函数不局限于固定的底,不同的底对应了熵的不同度量单位。如果以2为底,则熵的单位就是比特(bit),如果以自然对数e为底,则熵单位为纳特(nat).

而熵公式中,对概率取负对数,表示一个事件发生时候携带的信息量。把各种事件发生表示的信息量乘以其发生的概率之后求和,就表示整个系统所有信息量的期望值。而由于概率p是可能基于某种条件的,那么就容易认识到,熵可以变成,基于不同条件下的信息量的多少,即是一个主观值。

现在我又在疑问,对概率取对数,是个啥意思呢。我们知道,对数函数log_x (y),他可以保证,当y=1的时候,log函数为0,也就是当事件的概率为1,一定发生,则信息量为0。y不能为0,而随着y越小,-log_x (y)函数的值就越大,也就是一个单调递减函数,一个事件发生的几率越低,其产生的信息量越大。

同时,

那么度量两个分布的区别或距离,那么就可以自然的想象成,在同样的条件下,两者所含的信息量的差异,但是这样并不合理,因为,信息量相同,并不代表两者的分布很接近。所以就变换成,在一个分布M作为条件,那么M在M的条件下,熵肯定为0,即\sum{-1*\log \left( 1 \right)}。这就有个交叉熵的概念。

(未完)

猜你喜欢

转载自www.cnblogs.com/jumanggege/p/12052457.html