今天,我们介绍机器学习里非常常用的一个概念,KL 散度,这是一个用来衡量两个概率分布的相似性的一个度量指标。我们知道,现实世界里的任何观察都可以看成表示成信息和数据,一般来说,我们无法获取数据的总体,我们只能拿到数据的部分样本,根据数据的部分样本,我们会对数据的整体做一个近似的估计,而数据整体本身有一个真实的分布(我们可能永远无法知道),那么近似估计的概率分布和数据整体真实的概率分布的相似度,或者说差异程度,可以用 KL 散度来表示。

KL 散度,最早是从信息论里演化而来的,所以在介绍 KL 散度之前,我们要先介绍一下信息熵。信息熵的定义如下:

H=−∑i=1Np(xi)log⁡p(xi)" role="presentation">H=−∑i=1Np(xi)logp(xi)H=−∑i=1Np(xi)log⁡p(xi)

p(xi)" role="presentation" style="position: relative;">p(xi)p(xi) 表示事件 xi" role="presentation" style="position: relative;">xixi 发生的概率,信息熵其实反映的就是要表示一个概率分布需要的平均信息量。

在信息熵的基础上,我们定义 KL 散度为:

DKL(p||q)=∑i=1Np(xi)⋅(log⁡p(xi)−log⁡(q(xi))" role="presentation">DKL(p||q)=∑i=1Np(xi)⋅(logp(xi)−log(q(xi))DKL(p||q)=∑i=1Np(xi)⋅(log⁡p(xi)−log⁡(q(xi))

或者表示成下面这种形式:

DKL(p||q)=∑i=1Np(xi)⋅log⁡p(xi)q(xi)" role="presentation">DKL(p||q)=∑i=1Np(xi)⋅logp(xi)q(xi)DKL(p||q)=∑i=1Np(xi)⋅log⁡p(xi)q(xi)

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 个样本,构建如下的目标函数:

DKL(p||q)=∑i=1N{log⁡p(xi)−log⁡q(xi|θ)}" role="presentation">DKL(p||q)=∑i=1N{logp(xi)−logq(xi|θ)}DKL(p||q)=∑i=1N{log⁡p(xi)−log⁡q(xi|θ)}

因为我们要预估的是参数 θ" role="presentation" style="position: relative;">θθ,上面的第一项 log⁡p(xi)" role="presentation" style="position: relative;">logp(xi)log⁡p(xi) 与参数 θ" role="presentation" style="position: relative;">θθ 无关,所以我们要优化的其实是 −log⁡q(xi|θ)" role="presentation" style="position: relative;">−logq(xi|θ)−log⁡q(xi|θ),而这个就是我们熟悉的最大似然估计。

机器学习:Kullback-Leibler Divergence (KL 散度)的更多相关文章

  1. paper 23 :Kullback–Leibler divergence KL散度(2)

    Kullback–Leibler divergence KL散度 In probability theory and information theory, the Kullback–Leibler ...

  2. KL散度(Kullback–Leibler divergence)

    KL散度是度量两个分布之间差异的函数.在各种变分方法中,都有它的身影. 转自:https://zhuanlan.zhihu.com/p/22464760 一维高斯分布的KL散度 多维高斯分布的KL散度 ...

  3. 交叉熵cross entropy和相对熵(kl散度)

    交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异. 相对熵(relativ ...

  4. 【原】浅谈KL散度(相对熵)在用户画像中的应用

    最近做用户画像,用到了KL散度,发现效果还是不错的,现跟大家分享一下,为了文章的易读性,不具体讲公式的计算,主要讲应用,不过公式也不复杂,具体可以看链接. 首先先介绍一下KL散度是啥.KL散度全称Ku ...

  5. 浅谈KL散度

    一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence) ...

  6. ELBO 与 KL散度

    浅谈KL散度 一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information dive ...

  7. KL散度的理解(GAN网络的优化)

    原文地址Count Bayesie 这篇文章是博客Count Bayesie上的文章Kullback-Leibler Divergence Explained 的学习笔记,原文对 KL散度 的概念诠释 ...

  8. KL散度与JS散度

    1.KL散度 KL散度( Kullback–Leibler divergence)是描述两个概率分布P和Q差异的一种测度.对于两个概率分布P.Q,二者越相似,KL散度越小. KL散度的性质:P表示真实 ...

  9. KL散度非负性证明

    1 KL散度 KL散度(Kullback–Leibler divergence) 定义如下: $D_{K L}=\sum\limits_{i=1}^{n} P\left(x_{i}\right) \t ...

  10. 两个多维高斯分布之间的KL散度推导

    在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异.并且损失可以定义得很简单,比如二范数即可.但是对于已知参数的两个确定分布之间的差异,我们就要通过推导 ...

随机推荐

  1. 基本数据类型dict

    1. 字典 dict 用{}来表示 键值对数据 {key:value} 唯一性 键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键 可哈希不可变的数据类型:int str tuple bool ...

  2. sudo配置教程

    一.相关说明 1.sudo配置文件是/etc/sudoers:另外会自动包含/etc/sudoers.d目录下的文件(/etc/sudoers文件最后有一句“#includedir /etc/sudo ...

  3. WannaCry(永恒之蓝)病毒处理方法

    1.直接关闭server服务 打开cmd执行关闭server服务即可: net stop server 控制面板--管理工具--服务里手动关掉 2.防火墙限制445端口 3.打补丁 [KB401259 ...

  4. chrome google mozilla firefox bookmarks import export

    chrome导出导入bookmarks 1◆ google帐号 自己申请,脑补   2◆ google访问 脑补   suggestion   Lantern   3◆ 步骤 4◆ 导入 sample ...

  5. mac navicate 2013 - Lost connection to MySQL server at 'reading initial communication packet

    mac 本地mysql用navicate打开表时遇到如下错误: 2013 - Lost connection to MySQL server at 'reading initial communica ...

  6. laravel中的数据库迁移

    1.创建数据库迁移文件:生成数据库迁移文件,前面跟着时间戳: php artisan make:migration create_posts_table 创建数据库迁移文件:可以重命名数据表名: -- ...

  7. json 2017-04-21 10 17

    jo := SO(); jo.S['tttt'] := 'tttt'; TbSendedTidJson['jo'] := jo; ja := TbSendedTidJson['jo'];//取出来后, ...

  8. X86汇编语言实现的贪吃蛇游戏

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  9. win10环境下安装Ubantu双系统(超详解)

    win10环境下安装Ubantu双系统 1.准备工作: 先去ubantu官网(https://www.ubuntu.com/download)去下载ubantu镜像.根据自己的实际情况选择32位的或者 ...

  10. 升级pip10.0.0后出现ModuleNotFoundError: No module named 'pip'的问题

    pip10升级后各种pip install出错----- Traceback (most recent call last): File "/usr/local/bin/pip", ...