KL散度与JS散度
1.KL散度
KL散度( Kullback–Leibler divergence)是描述两个概率分布P和Q差异的一种测度。对于两个概率分布P、Q,二者越相似,KL散度越小。
KL散度的性质:P表示真实分布,Q表示P的拟合分布
- 非负性:KL(P||Q)>=0,当P=Q时,KL(P||Q)=0;
 - 反身性:KL(P||P)=0
 - 非对称性:D(P||Q) ≠ D(Q||P)
 - KL散度不满足三角不等
 

python 代码实现:
from scipy import stats P = [0.2, 0.4, 0.4]
Q = [0.4, 0.2, 0.5]
print(stats.entropy(P,Q))
0.1446821953906301
KL散度很容易梯度消失,KL 散度假设这两个分布共享相同的支撑集(也就是说,它们被定义在同一个点集上)。如果2个分布相聚太远或者2个分布之间没有重叠,计算出来的值为无穷大。
2.JS散度
- JS散度的取值范围在0-1之间,完全相同时为0
 - JS散度是对称的
 

from scipy import stats
import numpy as np
P =np.asarray( [[0.00934234 , 2.1068802],[0.01882005 , 2.03656788],[ 0.25182744 , 2.14507649]]) Q = np.asarray([[ 0.34670991, -0.24534987],[ 0.93025953 ,-0.69697827],[ 0.47976121, -0.33842087]])
M = (P+Q)/2
print(0.5*stats.entropy(P, M)+0.5*stats.entropy(Q, M))
KL散度与JS散度的更多相关文章
- KL散度、JS散度、Wasserstein距离
		
1. KL散度 KL散度又称为相对熵,信息散度,信息增益.KL散度是是两个概率分布 $P$ 和 $Q$ 之间差别的非对称性的度量. KL散度是用来 度量使用基于 $Q$ 的编码来编码来自 $P$ 的 ...
 - 【深度学习】K-L 散度,JS散度,Wasserstein距离
		
度量两个分布之间的差异 (一)K-L 散度 K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量.在概率学和统计学上,我们经常会使用一种更简单的.近 ...
 - KL与JS散度学习[转载]
		
转自:https://www.jianshu.com/p/43318a3dc715?from=timeline&isappinstalled=0 https://blog.csdn.net/e ...
 - 信息论相关概念:熵 交叉熵 KL散度 JS散度
		
目录 机器学习基础--信息论相关概念总结以及理解 1. 信息量(熵) 2. KL散度 3. 交叉熵 4. JS散度 机器学习基础--信息论相关概念总结以及理解 摘要: 熵(entropy).KL 散度 ...
 - 【python深度学习】KS,KL,JS散度 衡量两组数据是否同分布
		
目录 KS(不需要两组数据相同shape) JS散度(需要两组数据同shape) KS(不需要两组数据相同shape) 奇怪之处:有的地方也叫KL KS距离,相对熵,KS散度 当P(x)和Q(x)的相 ...
 - 【GAN与NLP】GAN的原理 —— 与VAE对比及JS散度出发
		
0. introduction GAN模型最早由Ian Goodfellow et al于2014年提出,之后主要用于signal processing和natural document proces ...
 - JS散度
		
https://blog.csdn.net/weixinhum/article/details/85227476
 - Generative Adversarial Nets[Wasserstein GAN]
		
本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是 ...
 - Generative Adversarial Nets[Pre-WGAN]
		
本文来自<towards principled methods for training generative adversarial networks>,时间线为2017年1月,第一作者 ...
 
随机推荐
- 学会C#
			
一.字符串插值 (String Interpolation) C# 6之前我们拼接字符串时需要这样 var Name = "Jack"; var results = "H ...
 - 四、Vue过渡与动画、过渡css类名、自定义指定、过滤器
			
一.过渡 动画 1.1简单的过渡动画使用 parent.vue [0]定义一个待显示的数据 [1]定义一个显示隐藏flag [2]使用动画过滤标签,name用来连接style样式:v-show用来控制 ...
 - Acwing198 反素数
			
原题面:https://www.acwing.com/problem/content/200/ 题目大意:对于任何正整数x,其约数的个数记作g(x),例如g(1)=1.g(6)=4.如果某个正整数x满 ...
 - springBoot (适合ssm)
			
很多小白在学ssm的时候,选用idea,网上应该有很多教程,创建maven项目,创建spring项目的都有,五花八门. 最近接触了springBoot,这个项目类型适用于ssm,还不用去创建很多文件夹 ...
 - idea基于springboot搭建ssm(maven)
			
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liboyang71/article/det ...
 - CSS - 美化字体 =>  CSS的-font-smoothin属性优化
			
body{ margin: 0; font-family: Arial, Helvetica, sans-serif; line-height: 1.2em; back ...
 - 快速进阶Vue3.0
			
在2019.10.5日发布了Vue3.0预览版源码,但是预计最早需要等到 2020 年第一季度才有可能发布 3.0 正式版. 可以直接看 github源码. 新版Vue 3.0计划并已实现的主要架构改 ...
 - 十七、JavaScript之幂运算
			
一.代码如下 二.执行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
 - K均值聚类算法
			
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...
 - 吴裕雄--天生自然C++语言学习笔记:C++ STL 教程
			
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++ 标准模板库的核心包括以 ...