机器学习:Kullback-Leibler Divergence (KL 散度)
今天,我们介绍机器学习里非常常用的一个概念,KL 散度,这是一个用来衡量两个概率分布的相似性的一个度量指标。我们知道,现实世界里的任何观察都可以看成表示成信息和数据,一般来说,我们无法获取数据的总体,我们只能拿到数据的部分样本,根据数据的部分样本,我们会对数据的整体做一个近似的估计,而数据整体本身有一个真实的分布(我们可能永远无法知道),那么近似估计的概率分布和数据整体真实的概率分布的相似度,或者说差异程度,可以用 KL 散度来表示。
KL 散度,最早是从信息论里演化而来的,所以在介绍 KL 散度之前,我们要先介绍一下信息熵。信息熵的定义如下:
p(xi)" role="presentation" style="position: relative;">p(xi)p(xi) 表示事件 xi" role="presentation" style="position: relative;">xixi 发生的概率,信息熵其实反映的就是要表示一个概率分布需要的平均信息量。
在信息熵的基础上,我们定义 KL 散度为:
或者表示成下面这种形式:
DKL(p||q)" role="presentation" style="position: relative;">DKL(p||q)DKL(p||q) 表示的就是概率 q" role="presentation" style="position: relative;">qq 与概率 p" role="presentation" style="position: relative;">pp 之间的差异,很显然,散度越小,说明 概率 q" role="presentation" style="position: relative;">qq 与概率 p" role="presentation" style="position: relative;">pp 之间越接近,那么估计的概率分布于真实的概率分布也就越接近。
KL 散度可以帮助我们选择最优的参数,比如 p(x)" role="presentation" style="position: relative;">p(x)p(x) 是我们需要估计的一个未知的分布,我们无法直接得知 p(x)" role="presentation" style="position: relative;">p(x)p(x) 的分布,不过我们可以建立一个分布 q(x|θ)" role="presentation" style="position: relative;">q(x|θ)q(x|θ) 去估计 p(x)" role="presentation" style="position: relative;">p(x)p(x),为了确定参数 θ" role="presentation" style="position: relative;">θθ,虽然我们无法得知 p(x)" role="presentation" style="position: relative;">p(x)p(x) 的真实分布,但可以利用采样的方法,从 p(x)" role="presentation" style="position: relative;">p(x)p(x) 中采样 N" role="presentation" style="position: relative;">NN 个样本,构建如下的目标函数:
因为我们要预估的是参数 θ" role="presentation" style="position: relative;">θθ,上面的第一项 logp(xi)" role="presentation" style="position: relative;">logp(xi)logp(xi) 与参数 θ" role="presentation" style="position: relative;">θθ 无关,所以我们要优化的其实是 −logq(xi|θ)" role="presentation" style="position: relative;">−logq(xi|θ)−logq(xi|θ),而这个就是我们熟悉的最大似然估计。
机器学习:Kullback-Leibler Divergence (KL 散度)的更多相关文章
- paper 23 :Kullback–Leibler divergence KL散度(2)
Kullback–Leibler divergence KL散度 In probability theory and information theory, the Kullback–Leibler ...
- KL散度(Kullback–Leibler divergence)
KL散度是度量两个分布之间差异的函数.在各种变分方法中,都有它的身影. 转自:https://zhuanlan.zhihu.com/p/22464760 一维高斯分布的KL散度 多维高斯分布的KL散度 ...
- 交叉熵cross entropy和相对熵(kl散度)
交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异. 相对熵(relativ ...
- 【原】浅谈KL散度(相对熵)在用户画像中的应用
最近做用户画像,用到了KL散度,发现效果还是不错的,现跟大家分享一下,为了文章的易读性,不具体讲公式的计算,主要讲应用,不过公式也不复杂,具体可以看链接. 首先先介绍一下KL散度是啥.KL散度全称Ku ...
- 浅谈KL散度
一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence) ...
- ELBO 与 KL散度
浅谈KL散度 一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information dive ...
- KL散度的理解(GAN网络的优化)
原文地址Count Bayesie 这篇文章是博客Count Bayesie上的文章Kullback-Leibler Divergence Explained 的学习笔记,原文对 KL散度 的概念诠释 ...
- KL散度与JS散度
1.KL散度 KL散度( Kullback–Leibler divergence)是描述两个概率分布P和Q差异的一种测度.对于两个概率分布P.Q,二者越相似,KL散度越小. KL散度的性质:P表示真实 ...
- KL散度非负性证明
1 KL散度 KL散度(Kullback–Leibler divergence) 定义如下: $D_{K L}=\sum\limits_{i=1}^{n} P\left(x_{i}\right) \t ...
- 两个多维高斯分布之间的KL散度推导
在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异.并且损失可以定义得很简单,比如二范数即可.但是对于已知参数的两个确定分布之间的差异,我们就要通过推导 ...
随机推荐
- 15. 3Sum C++
参考资料: https://leetcode.com/problems/3sum/discuss/7402/Share-my-AC-C%2B%2B-solution-around-50ms-O(N*N ...
- linux 逻辑卷管理 /dev/mapper/VolGroup-lv_root 100%调整分区大小
1.解决过程 # df -h // 查看分区 # umount /home // 取消挂载 # e2fsck -f /dev/mapper/VolGroup-lv_home // 分区检测 ...
- ActiveMQ producer 流量控制
http://activemq.apache.org/producer-flow-control.html 翻译: 流量控制是指:如果broker检测到destination的内存限制.temp文件限 ...
- mac bash 下使用vi 快捷方式——因为没有alt键 所以没有办法 用vi模式也非常方便的
set -o emacs ##切到emacs模式 set -o vi ##切到vi模式 set -o ## 查看当前选项的设置状态 所以你只需要在.bashrc下加入 set -o vi 然后,使用E ...
- [转]JVM内存模型
最近排查一个线上java服务常驻内存异常高的问题,大概现象是:java堆Xmx配置了8G,但运行一段时间后常驻内存RES从5G逐渐增长到13G #补图#,导致机器开始swap从而服务整体变慢.由于Xm ...
- Oracle中如何添加和修改包含日期的数据
平时我们在sql sverver中我们添加包含日期的数据时,是直接将日期变成日期格式字符串,但是在Oracle中就不行了, 那么,如何添加包含日期数据 如:在oracle执行insert语句 /** ...
- JAVA8的LocalDateTime使用心得和工具类
今天做不成的事,明天也不会做好. 同学们,JAVA8出了这么久,不知道你们有没有用过它的LocalDateTime类型,还是依然用Date类型呢?其实,LocalDateTime类型给我们提供了很多便 ...
- css中的position属性值的探究
css的position属性指定了元素的定位类型,然后通过top,botton,left,right来具体定位. 在具体定位之前必须使用position属性,否则所有的具体定位属性都无法生效. pos ...
- ural1519
题解: 插头dp 具体可以看看cdq论文 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ...
- Iterator,迭代器模式,C++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...