以下内容基于对[中字]信息熵,交叉熵,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散度相关理解以及视频推荐的更多相关文章

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

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

  2. (转)KL散度的理解

    KL散度(KL divergence) 全称:Kullback-Leibler Divergence. 用途:比较两个概率分布的接近程度.在统计应用中,我们经常需要用一个简单的,近似的概率分布 f * ...

  3. PRML读书会第十章 Approximate Inference(近似推断,变分推断,KL散度,平均场, Mean Field )

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:02:04 我们在前面看到,概率推断的核心任务就是计算某分布下的某个函数的期望.或者计算边缘概率分布.条件 ...

  4. 相对熵(KL散度)

    https://blog.csdn.net/weixinhum/article/details/85064685 上一篇文章我们简单介绍了信息熵的概念,知道了信息熵可以表达数据的信息量大小,是信息处理 ...

  5. 从香农熵到手推KL散度

    信息论与信息熵是 AI 或机器学习中非常重要的概念,我们经常需要使用它的关键思想来描述概率分布或者量化概率分布之间的相似性.在本文中,我们从最基本的自信息和信息熵到交叉熵讨论了信息论的基础,再由最大似 ...

  6. 机器学习、深度学习中的信息熵、相对熵(KL散度)、交叉熵、条件熵

    信息熵 信息量和信息熵的概念最早是出现在通信理论中的,其概念最早是由信息论鼻祖香农在其经典著作<A Mathematical Theory of Communication>中提出的.如今 ...

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

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

  8. 浅谈KL散度

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

  9. 非负矩阵分解(1):准则函数及KL散度

    作者:桂. 时间:2017-04-06  12:29:26 链接:http://www.cnblogs.com/xingshansi/p/6672908.html 声明:欢迎被转载,不过记得注明出处哦 ...

随机推荐

  1. 恢复win10 LTSC 2019 图片查看器功能

    1.开始–运行–输入"regedit"打开注册表. 2. 在打开的注册表编辑器中,从左侧依次展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win ...

  2. 网络之一次http请求的完整过程

    关于网络的知识平时可能真正用的比较少,但是有一些点还是需要总结的: 完成一次http请求要大致可以分为7个步骤: 一.TCP三次握手 第一次握手:建立连接.客户端发送连接请求报文段,将SYN位置为1, ...

  3. springmvc拦截器实现登录验证

    首先创建一个实体类: Customer: 1 package com.petcare.pojo.base; 2 3 import java.sql.Date; 4 import java.sql.Ti ...

  4. Leetcode(27)-移除元素

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  5. tensorflow-gpu+"Failed to create session"

    成因: 未给系统指定相应使用的GPU 解决: 层面1: 针对单个程序: CUDA_VISIBLE_DEVICES=0 python main.py import os; os.environ['CUD ...

  6. Vue Component Registration All In One

    Vue Component Registration All In One Vue 注册自定义组件 <template> <div class="back-to-top-c ...

  7. javascript nested object merge

    javascript nested object merge deep copy Object reference type function namespace(oNamespace, sPacka ...

  8. how to tell a function arguments length in js

    how to tell a function arguments length in js JavaScript函数不对参数值(参数)执行任何检查 https://www.w3schools.com/ ...

  9. html5 & iOS

    html5 & iOS Apple App Store审核指南 https://developer.apple.com/app-store/review/guidelines/ Apple审核 ...

  10. Apache HTTP Server & WS (websockets)

    Apache HTTP Server & WS (websockets) Apache HTTP Server Version 2.4 https://httpd.apache.org/doc ...