Jensen-Shannon散度(JS散度)

devtools/2024/10/11 0:45:15/

Jensen-Shannon散度Jensen-Shannon Divergence, JS散度)是概率分布之间的一种相似性度量。它是基于Kullback-Leibler散度(KL散度)的对称版本,并且具有一些更好的性质,例如它总是非负的,并且是有界的。

JS散度在信息论和机器学习中广泛使用,特别是在衡量两个分布之间的相似性和区分度时。相比于KL散度,它对称且更加稳定,不容易出现无限大的情况。

1. JS散度的定义

给定两个概率分布 P P P Q Q Q (它们可以是离散或连续分布),JS散度定义为:

J S ( P ∣ ∣ Q ) = 1 2 K L ( P ∣ ∣ M ) + 1 2 K L ( Q ∣ ∣ M ) JS(P || Q) = \frac{1}{2} KL(P || M) + \frac{1}{2} KL(Q || M) JS(P∣∣Q)=21KL(P∣∣M)+21KL(Q∣∣M)

其中 M M M P P P Q Q Q 的平均分布,即:

M = 1 2 ( P + Q ) M = \frac{1}{2}(P + Q) M=21(P+Q)

K L ( P ∣ ∣ Q ) KL(P || Q) KL(P∣∣Q) 是经典的Kullback-Leibler散度,用于衡量分布 P P P 相对于分布 Q Q Q 的相对熵,定义为:

K L ( P ∣ ∣ Q ) = ∑ x P ( x ) log ⁡ P ( x ) Q ( x ) KL(P || Q) = \sum_x P(x) \log \frac{P(x)}{Q(x)} KL(P∣∣Q)=xP(x)logQ(x)P(x)

在连续情形下,KL散度通过积分表示:

K L ( P ∣ ∣ Q ) = ∫ P ( x ) log ⁡ P ( x ) Q ( x ) d x KL(P || Q) = \int P(x) \log \frac{P(x)}{Q(x)} \, dx KL(P∣∣Q)=P(x)logQ(x)P(x)dx

2. JS散度的性质

JS散度有一些重要的性质,使得它在实际应用中非常有用:

  • 非负性 J S ( P ∣ ∣ Q ) ≥ 0 JS(P || Q) \geq 0 JS(P∣∣Q)0,并且只有在 P = Q P = Q P=Q 时等于0,即当两个分布完全相同时,JS散度为0。

  • 对称性:JS散度是对称的,即 J S ( P ∣ ∣ Q ) = J S ( Q ∣ ∣ P ) JS(P || Q) = JS(Q || P) JS(P∣∣Q)=JS(Q∣∣P),这点与KL散度不同,后者不是对称的。

  • 有界性:JS散度的值介于0和 log ⁡ 2 \log 2 log2 之间,特别是在离散分布的情况下。即:

    0 ≤ J S ( P ∣ ∣ Q ) ≤ log ⁡ 2 0 \leq JS(P || Q) \leq \log 2 0JS(P∣∣Q)log2

    这意味着它是有界的度量,不像KL散度在某些情况下会趋向无穷大。

3. 与KL散度的关系

JS散度是KL散度的对称化和平均化版本。它通过引入中间分布 M M M 解决了KL散度的两个问题:

  • 不对称性:KL散度 K L ( P ∣ ∣ Q ) ≠ K L ( Q ∣ ∣ P ) KL(P || Q) \neq KL(Q || P) KL(P∣∣Q)=KL(Q∣∣P),JS散度通过将 P P P Q Q Q 的平均分布 M M M 引入进来,使得它对称。
  • KL散度的无限问题:当 P P P Q Q Q 在某些点上取值为0时,KL散度可能会趋向无穷大,而JS散度通过引入均值分布 M M M 来避免这种情况。

4. JS散度的应用

JS散度在很多领域都得到了广泛应用,主要包括:

  • 机器学习:在生成对抗网络(GANs)中,JS散度被用于衡量生成分布与真实分布之间的差异,用以训练生成器和判别器。不过,由于JS散度在某些情况下会导致梯度消失问题,Wasserstein距离(特别是WGAN中的Wasserstein-1距离)后来在GANs中得到更广泛的应用。

  • 文本分析和自然语言处理:JS散度常用于比较文本或文档的词频分布。例如,在主题模型中,它可以用来度量不同主题之间的差异。

  • 生物信息学:在比较基因序列或表达谱时,JS散度可以用来衡量不同生物样本或基因型之间的差异。

  • 信息论:JS散度在信息论中作为一种度量,用来量化不同概率分布之间的信息差异。

5. JS散度的直观解释

JS散度的本质是通过测量两个分布 P P P Q Q Q 与它们的“中间分布” M M M 之间的差异,来衡量 P P P Q Q Q 的相似性。具体来说:

  • 如果 P P P Q Q Q 非常相似,它们与中间分布 M M M 的差异都会很小,JS散度接近于0。
  • 如果 P P P Q Q Q 差异很大,它们与 M M M 的差异会较大,JS散度的值也会增大。

这使得JS散度在度量两个概率分布的相似性时,比单纯的KL散度更加灵活和稳定。

总结

Jensen-Shannon散度是一种改进的、对称的概率分布相似性度量,能够有效克服KL散度的局限性。它具有非负性、对称性和有界性等良好性质,广泛应用于机器学习、自然语言处理、生物信息学和信息论等领域。JS散度的直观含义是通过比较两个分布与它们的中间分布的差异,来量化两个分布之间的相似性。


http://www.ppmy.cn/devtools/123903.html

相关文章

【笔记学习篇】一篇文章搞定Mybatis-快速回顾

概述 5.1.1 Mybatis简介 Mybatis是一款优秀的持久层框架,它以sql为中心,支持定制化sql、存储过程以及高级映射。 使用Mybatis框架,可以无需手动编写基础的JDBC代码、无需手动设置参数和转换结果集到对象。 Mybatis可以使用简单的xml或注解来…

java速成指南

密码都是 123 适用于php .net 7天转java 【腾讯文档】快速上手培训-阿龙 分享给你多个文件 https://docs.qq.com/s/jUcRQ4VPA4grzx8SPYzrBa 第一节 安装jdk,maven,idea_哔哩哔哩_bilibili

心觉:开发潜意识的详细流程和步骤是什么

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作195/1000天 最近领教了一下潜意识的力量和吸引力法则 我想要一张可以放在榻榻米壁柜上的迷你型的电动升降桌,桌面60cm…

网络编程(17)——asio多线程模型IOThreadPool

十七、day17 之前我们介绍了IOServicePool的方式,一个IOServicePool开启n个线程和n个iocontext,每个线程内独立运行iocontext, 各个iocontext监听各自绑定的socket是否就绪,如果就绪就在各自线程里触发回调函数。为避免线程安全问题&#xf…

Python测试框架--Allure

严格意义上讲 Allure 不算是测试框架,但是它是生成漂亮测试报告的开源工具,搭配 Pytest 测试框架食用更搭。 也就是说 Allure 是在 Pytest 执行完生成的测试数据的基础上,对测试数据进行处理统计,生成格式统一、美观的测试报告。 …

分治算法(3)_快速选择_数组中的第K个最大元素

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 分治算法(3)_快速排序_数组中的第K个最大元素 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论&#…

速盾:游戏被攻击怎么办?

随着游戏行业的发展,游戏被攻击的情况也越来越多见。游戏被攻击可能导致游戏服务器崩溃、用户数据泄露、游戏体验受影响等问题。作为游戏开发者或运营商,面对游戏被攻击的情况,应该采取一系列的措施来应对。 首先,要及时发现游戏…

Python 基于 flask 的前程无忧招聘可视化系统,Python大数据招聘爬虫可视化分析

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…