算法面试高频知识点:KL散度和JS散度

图片说明

这是我之前写在公众号里的一篇文章,在此分享到牛客上,一来是希望能和牛客上的朋友们一起交流学习CV算法以及相应的知识。

KL散度

KL散度(Kullback-Leibler divergence),可以以称作相对熵(relative entropy)或信息散度(information divergence)。KL散度的理论意义在于度量两个概率分布之间的差异程度,当KL散度越高的时候,说明两者的差异程度越大;而当KL散度低的时候,则说明两者的差异程度小。如果两者相同的话,则该KL散度应该为0。

接下来我们举一个具体的例子:

我们设定两个概率分布分别为P和Q,在假定为连续随机变量的前提下,他们对应的概率密度函数分别为p(x)和q(x)。我们可以写出如下公式:

从上面的公式可以看出,当且仅当P=Q时,KL(P||Q) = 0。此外我们也发现KL散度具备非负的特性,即P(P||Q) >= 0。但是从公式中我们也可以发现,Kl散度不具备对称性,也就是说P对于Q的KL散度并不等于Q对于P的KL散度。因此,KL散度并不是一个度量(metric)

我们在来看看离散的情况下KL散度的公式:

接下来我们对上面的式子进行展开:

最后得到的第一项类似熵的形式,这一项称作P和Q的交叉熵(cross entropy),后面一项就是熵。

JS散度

在信息论中,熵代表着信息量,H(P)代表着基于P分布自身的编码长度,也就是最优的编码长度(最小字节数)。而H(P,Q)则代表着用P的分布去近似Q分布的信息,自然需要更多的编码长度。并且两个分布差异越大,需要的编码长度越大。所以两个值相减是大于等于0的一个值,代表冗余的编码长度,也就是两个分布差异的程度。所以KL散度在信息论中还可以称为相对熵(relative entropy)。

对深度学习中的生成模型来说,我们希望最小化真实数据分布与生成模型分布之间的KL散度,从而使得生成模型尽可能接近真实数据的分布。在实际实践中,我们是几乎不可能知道真实数据分布的,我们使用训练数据形成的经验分布在逼近

JS散度全称Jensen-Shannon散度,我们这里简称JS散度。在概率统计中,JS散度也与前面提到的KL散度一样具备了测量两个概率分布相似程度的能力,它的计算方法基于KL散度,继承了KL散度的非负性等,==但有一点重要的不同,JS散度具备了对称性。==

JS散度的公式如下,我们设定两个概率分布为P和Q,另外我们还设定M = 0.5 * (P + Q),KL为KL散度公式。

如果我们把KL散度公式打入展开的话,结果如下所示:

#面经##秋招##实习##面试八股文##面霸的自我修养#
全部评论
确实是高频的知识点啊
点赞 回复 分享
发布于 2022-08-14 15:19

相关推荐

挣K存W养DOG:玩小红书玩的,觉得自己很幽默😅
点赞 评论 收藏
分享
03-20 12:22
门头沟学院 Java
牛客998737654号:没有hc了吧,但是我接到到后端的面试邀请
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客企业服务