让数据和分布的吻合度最高,似然函数可以衡量数据和分布的相似程度,另一个常见的方式就是KL散度(又叫相对熵)
1、熵是什么呢?
熵是一个描述信息量的量纲。就是描述数据中含有多少信息量,记为H,
定义如下:
如果我们使用 log2 作为底,熵可以被理解为:我们编码所有信息所需要的最小位数(minimum numbers of bits)
2、能够量化数据中的信息,就可以来衡量近似数据分布带来的损失————KL散度 (不是KL距离)
KL散度是相对熵,也是熵的变形,在原有熵的基础上,加入近似的概率分布q,计算他们每个取值对应的对数的差值,
也就是说,KL散度计算的就是: 原数据的分布与近似分布概率的对数差的期望值
如果对数为2,log2,就可以理解为 一共损失了多少位信息。
使用KL散度进行优化
通过不断改变预估分布的参数,可以得到不同的KL散度值,当KL散度值在某个范围内最小的时候就是我们想要的最优参数,也就是优化的过程。
应用:文档之间的相似度计算,推荐系统之间的应用等等
JS散度(Jensen-Shannon)
JS散度度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是0到1之间。定义如下:
KL散度和JS散度度量的时候有一个问题:
如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。