KL散度相关理解以及视频推荐
以下内容基于对[中字]信息熵,交叉熵,KL散度介绍||机器学习的信息论基础这个视频的理解,请务必先看几遍这个视频。
假设一个事件可能有多种结果,每一种结果都有其发生的概率,概率总和为1,也即一个数据分布。我们可以用哈夫曼编码作为最佳编码方案编码这些事件,并将多次事件发生的情况信息以哈夫曼编码的形式传递出去。
有一个结论是:在一个数据分布p上,用p对应的最佳编码方案来传递信息,这样传递的信息的期望量。这个期望量也被称为这个数据分布p作为一个信息的信息熵,是一个信息的一种属性。
信息熵就是,在一个数据分布p上,用p对应的最佳编码方案来传递信息,这样传递的信息的期望量。
交叉熵就是,在真实的数据分布p上,用你预测的分布q对应的最佳编码方案来传递信息,这样传递的信息的期望量。如果p和q完全一致,那么q的最佳编码方案就是p的最佳编码方案,传递的信息总量就是最少的,也就是说,交叉熵的值最小。
KL散度就是,【在一个数据分布p上,用分布q对应的最佳编码方案来传递信息,这样传递的信息的期望量】,与【在数据分布p上用分布p对应的最佳编码方案来传递信息,这样传递的信息的期望量】(也即p的信息熵),的差值。它衡量了两个分布的差别,KL散度越大说明两个分布差别越大,KL散度的最小值为0,表示两个分布完全相同。
在深度学习分类任务训练过程中,真实的数据分布就是p(y|x),其中x是样本特征,y是label向量(one-hot形式),用[0,0,0,1,0,0,0,0]这种形式表示,你可以把它看成一个分布,分别表示x是8种东西中的某一种的概率,由于y是label所以有一个是1,其他的全是0。预测的分布就是p(ŷ|x),其中x还是刚才的那个样本特征,ŷ可以是[0.1,0.2,0.05,0.6,0.01,0.01,0.01,0.02]这种形式,表示我们预测出的x可能是8中东西中的某一种的概率的分布。我们在写代码的时候,通常是使用y和ŷ的交叉熵来作为我们的loss。而实际上,我们也使用的是KL散度作为loss,效果和用交叉熵完全一样。这是因为p(y|x)对应的事件的信息熵的值永远为0. 因为p(y|x)的分布是[0,0,0,1,0,0,0,0]这样的,也就是说表示,x一定属于第四类,也就是说哈夫曼编码根本用不上,不需要编码,肯定是第四个,也就是p(y|x)对应的事件的信息熵的值永远为0。所以此时KL散度就等于交叉熵了。
那么如果是在变分推断VI或者变分自动编码器VAE中呢?在这两个场景下,我们通常要计算p(z|x)这个分布,也就是说给定x,把它编码成什么样的z是最好的。其中z是隐变量,不像前面的y一样是ground truth,不像y一样信息量为零。我们在这两种场景下实际上是将x编码为z,z有它自己的复杂的分布。由于我们要把x编码成z,通常是把一个高维的x编码成低维的z,因此我们需要z本身的分布能表示越多的信息越好,也就是z的分布本身的信息熵越大越好。因此此时我们使用的loss函数就是KL散度,假设我们的样本通过编码器后拿到的隐变量是ẑ,它的分布是p,隐空间中关于对于我们的样本最好的隐变量是z,它的分布是q,那我们就有了两个优化目标了,一个就是找到一个信息量最大的分布q,用来承载样本们将要传递过来的信息,另一个就是让编码器编码的分布p尽量接近q,也就是让原来高维的信息x,尽量的充分利用这个低维空间能承载的信息量。在VAE中,我们实际上把这个q固定为标准高斯分布了,因为在有前提(指x)的情况下,把z的分布建模成指数族分布的信息熵是最高的,也就是能承载更多的信息。在VAE的一般情况下,q是无限个高斯分布的混合,因此我们很难找到一个有公式的p(z|x)来逼近这个q,因此我们使用一个神经网络来作为p(z|x)这个分布,让它去接近q。
KL散度相关理解以及视频推荐的更多相关文章
- KL散度的理解(GAN网络的优化)
原文地址Count Bayesie 这篇文章是博客Count Bayesie上的文章Kullback-Leibler Divergence Explained 的学习笔记,原文对 KL散度 的概念诠释 ...
- (转)KL散度的理解
KL散度(KL divergence) 全称:Kullback-Leibler Divergence. 用途:比较两个概率分布的接近程度.在统计应用中,我们经常需要用一个简单的,近似的概率分布 f * ...
- PRML读书会第十章 Approximate Inference(近似推断,变分推断,KL散度,平均场, Mean Field )
主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:02:04 我们在前面看到,概率推断的核心任务就是计算某分布下的某个函数的期望.或者计算边缘概率分布.条件 ...
- 相对熵(KL散度)
https://blog.csdn.net/weixinhum/article/details/85064685 上一篇文章我们简单介绍了信息熵的概念,知道了信息熵可以表达数据的信息量大小,是信息处理 ...
- 从香农熵到手推KL散度
信息论与信息熵是 AI 或机器学习中非常重要的概念,我们经常需要使用它的关键思想来描述概率分布或者量化概率分布之间的相似性.在本文中,我们从最基本的自信息和信息熵到交叉熵讨论了信息论的基础,再由最大似 ...
- 机器学习、深度学习中的信息熵、相对熵(KL散度)、交叉熵、条件熵
信息熵 信息量和信息熵的概念最早是出现在通信理论中的,其概念最早是由信息论鼻祖香农在其经典著作<A Mathematical Theory of Communication>中提出的.如今 ...
- 【原】浅谈KL散度(相对熵)在用户画像中的应用
最近做用户画像,用到了KL散度,发现效果还是不错的,现跟大家分享一下,为了文章的易读性,不具体讲公式的计算,主要讲应用,不过公式也不复杂,具体可以看链接. 首先先介绍一下KL散度是啥.KL散度全称Ku ...
- 浅谈KL散度
一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence) ...
- 非负矩阵分解(1):准则函数及KL散度
作者:桂. 时间:2017-04-06 12:29:26 链接:http://www.cnblogs.com/xingshansi/p/6672908.html 声明:欢迎被转载,不过记得注明出处哦 ...
随机推荐
- Codeforces Round #496 (Div. 3) E1. Median on Segments (Permutations Edition) (中位数,思维)
题意:给你一个数组,求有多少子数组的中位数等于\(m\).(若元素个数为偶数,取中间靠左的为中位数). 题解:由中位数的定义我们知道:若数组中\(<m\)的数有\(x\)个,\(>m\)的 ...
- 2019-2020 ACM-ICPC Brazil Subregional Programming Contest Problem M Maratona Brasileira de Popcorn (二分)
题意:有\(n\)袋爆米花,某个队伍有\(c\)个队员,每个队员每秒做多可以吃\(t\)粒爆米花,但一袋爆米花只能由一个队员吃完,并且一个队员只能吃连续的一袋或几袋,不能隔着吃某一袋,求将所有爆米花吃 ...
- Python append() 与深拷贝、浅拷贝
在leetcode77中,发现list.append的结果不对.原代码: class Solution: def combine(self, n: int, k: int) -> List[Li ...
- bnuoj-53073 萌萌哒身高差 【数学】【非原创】
"清明时节雨纷纷,路上行人欲断魂." 然而wfy同学的心情是愉快的,因为BNU ACM队出去春游啦!并且,嗯... 以下是wfy同学的日记: 昨天,何老师告诉我们:明天我们去春游, ...
- Ubuntu 编译并执行含opencv的cpp文件
# compilation g++ main.cpp -o main `pkg-config --cflags --libs opencv` # execution ./img-display lin ...
- Python Web Framework All In One
Python Web Framework All In One Django and Flask are the top Python web frameworks so far. Django ht ...
- element-ui & babel-plugin-component config bug
element-ui & babel-plugin-component config bug vue-cli bad babel.config.js module.exports = { pr ...
- C# 6.0 Features , C# 7.0 Features
1 1 1 C# 6.0 Features http://stackoverflow.com/documentation/c%23/24/c-sharp-6-0-features#t=20160828 ...
- js console.log color all in one
js console.log color all in one console.log color Chrome console.log 语法 / grammar %c, %s, css style ...
- tree traversal
tree traversal tree 遍历 中序,顺序,左中右 先序,先父节点,中左右 后序,先子节点,左右中 二叉搜索树 "use strict"; /** * * @auth ...