机器学习基础--信息论相关概念总结以及理解

摘要:
熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)以及JS散度,在深度学习以及机器学习很多地方都用的到,尤其是对于目标函数和损失函数的定义。在逻辑回归问题中,目标函数就是用交叉熵定义的。

1. 信息量(熵)

信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进行量化。信息论的基本想法是一个不太可能的事件发生了,要比一个非常可能的事件发生,能提供更多的信息。事件发生的可能性大,信息量少;事件发生的可能性小,其信息量大。

比如:早上你出门碰到一个朋友,他告诉你今天是晴天,这句话的信息量就很小,因为天气你已经知道了,而且是个确定性事件,等同于废话。
要是他再告诉你,明天可能下雪,这句话的信息量就比刚刚的话要大好多。
可以看出信息量的大小与事件发生的可能性成反比。

  1. 非常可能发生的事件信息量要比较少。在极端情况下,确保能够发生的事件应该没有信息量。
  2. 较不可能发生的事件具有更高的信息量。
  3. 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。
      为了满足上面 3 个性质,定义了一事件 \(x=X\) 的自信息(self-information)为:
    \[
    I(x)=-log(P(x)) \tag{1}
    \]
    使用 \(x\) 表示随机变量,使用 \(x_1,x_2,...,x_i,...,x_N\) 或者 \(x\) 表示随机变量 \(x\) 可能的取值。当式(1)中 log 以 2 为底数时,\(I(x)\) 单位是比特(bit)或者香农(shannons);当 \(log\) 以自然常数 \(e\) 为底数时,\(I(x)\) 单位是奈特(nats)。这两个单位之间可以互相转换,通过比特度量的信息只是通过奈特度量信息的常数倍。(使用对数换底公式转化)在机器学习中大部分是以\(e\)为底。
    自信息只能处理单个的输出。我们可以使用香农熵(Shannon entropy)来对整个概率分布中的不确定性总量进行量化:
    \[
    H(P)=H(x)=
    E_{x∼P}[I(x)]=\sum_{i=1}^NP(x_i)I(x_i)=−\sum_{i=1}^NP(x_i)logP(x_i)\tag{2}
    \]
    式(2)后两个等号是在离散型变量的情况下成立,对于连续型变量,则需要求积分。当 x 是连续的,香农熵被称为微分熵(differential entropy)。
    熵的一些性质:
  • 那些接近确定性的分布(输出几乎可以确定)具有较低的熵。
  • 那些接近均匀分布的概率分布具有较高的熵。
    当一个事件的发生概率为\(p(x)\) 时,它的信息量就是\(−log(p(x))\)。那么我们将这个事件的所有可能发生的结果都罗列出来,求的该事件信息量的期望(信息量的算术平均)

    熵就是用来描述事件发生的不确定性。事件所含有的信息
    从KL散度的角度理解熵的概念将熵的定义式写为:
    \[
    H(P)=log(\frac{1}{P(x)})
    \]
    \(1\)为确定性事件,则事件\(P\)的熵(自信息)为与确定性事件的差异,也就是\(P\)变成确定性事件所需要的信息。

2. KL散度

KL 散度可以用来衡量两个分布的差异。

在概率论与统计中,我们经常会将一个复杂的分布用一个简单的近似分布来代替。KL 散度可以帮助我们测量在选择一个近似分布时丢失的信息量。

  假设原概率分布为 \(P(x)\),近似概率分布为 \(Q(x)\),则使用 KL 散度衡量这两个分布的差异:
\[
D_{KL}(P||Q)=E_{x∼P}[log(\frac{P(x)}{Q(x)})]=E_{x∼P}[logP(x)−logQ(x)] \tag{3}
\]
  如果 x 是离散型变量,式(3)还可以写成如下形式:
\[
D_{KL}(P||Q)=\sum_{i=1}^NP(x_i)logP(x_i)Q(x_i)=\sum_{i=1}^NP(x_i)[logP(x_i)−logQ(x_i)] \tag{4}
\]
  对于连续型变量,则式(4)不能这么写,需要求积分。如果 x 是连续型变量,则式(3)中概率分布最好用 \(p(x)\)和\(q(x)\) 代替 \(P(x)\)和\(Q(x)\)。习惯上,用小写字母表示连续型变量的概率密度函数(probability density function,PDF),用大写字母表示离散型变量的概率质量函数(probability mass function,PMF)。(PDF和PMF都是用来描述概率分布)

KL 散度的一些性质:

  • KL 散度是非负的。
  • KL 散度为 0,当且仅当 P 和 Q 在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是“几乎处处”相同的。
  • KL 散度不是真的距离,它不是对称的,即 \(D_{KL}(P||Q)≠D_{KL}(Q||P)\),故称其为散度

3. 交叉熵

交叉熵(cross-entropy)和 KL 散度联系很密切。同样地,交叉熵也可以用来衡量两个分布的差异。以离散型变量 x 为例:
\[
H(P,Q)=−E_{x∼P}logQ(x)=−\sum_{i=1}^NP(x_i)logQ(x_i) \tag{5}
\]
  交叉熵 H(P,Q)=H(P)+DKL(P||Q)。其中 H(P)(即 H(x) ,其中 x∼P)为分布 P 的熵,DKL(P||Q) 表示两个分布的 KL 散度。当概率分布 P(x) 确定了时,H(P) 也将被确定,即 H(P) 是一个常数。在这种情况下,交叉熵和 KL 散度就差一个大小为 H(P) 的常数。下面给出一个简单的推导:

  我们将式(4)中 KL 散度的公式再进行展开:
\[
D_{KL}(P||Q)=\sum_{i=1}^NP(x_i)[logP(x)−logQ(x)]=\sum_{i=1}^NP(x_i)logP(x_i)−\sum_{i=1}^NP(x_i)logQ(x_i)=−[−\sum_{i=1}^NP(x_i)logP(x_i)]+[−\sum_{i=1}^NP(x_i)logQ(x_i)]=−H(P)+H(P,Q) \tag{6}
\]
即 \(H(P,Q)=H(P)+D_{KL}(P||Q)\)。

最好自己手推一下 公式很简单 手推可以加深印象。

交叉熵的一些性质:

  • 非负。
  • 和 KL 散度相同,交叉熵也不具备对称性,即 \(H(P,Q)≠H(Q,P)\)。
  • 对同一个分布求交叉熵等于对其求熵。
      为什么既有 KL 散度又有交叉熵?在信息论中,熵的意义是对 \(P\) 事件的随机变量编码所需的最小字节数,KL 散度的意义是“额外所需的编码长度”如果我们使用 Q 的编码来表示 P,交叉熵指的是当你使用 Q 作为密码来表示 P 是所需要的 “平均的编码长度”。但是在机器学习评价两个分布之间的差异时,由于分布 P 会是给定的,Q为生成的分布,来衡量量分布的差异,所以此时 KL 散度和交叉熵的作用其实是一样的,而且因为交叉熵少算一项\(H(P)\),更加简单,所以选择交叉熵会更好。

4. JS散度

JS散度也是用于度量两个概率分布的相似度,其解决了KL散度不对称的缺点。
再GAN公式的推导中会用到,到时候再回来。
\[
JS(p||q)=\frac{1}{2}KL(p||\frac{p+q}{2})+\frac{1}{2}KL(q||\frac{p+q}{2}) \tag{7}
\]
JS散度的一些性质:

  • 值域\(JS(P||Q)\in[0,1]\),P,Q两分布相同为0,相反为1
  • 对称性

信息论相关概念:熵 交叉熵 KL散度 JS散度的更多相关文章

  1. 信息论随笔3: 交叉熵与TF-IDF模型

    接上文:信息论随笔2: 交叉熵.相对熵,及上上文:信息论随笔 在读<数学之美>的时候,相关性那一节对TF-IDF模型有这样一句描述:"其实 IDF 的概念就是一个特定条件下.关键 ...

  2. KL与JS散度学习[转载]

    转自:https://www.jianshu.com/p/43318a3dc715?from=timeline&isappinstalled=0 https://blog.csdn.net/e ...

  3. 信息熵,交叉熵与KL散度

    一.信息熵 若一个离散随机变量 \(X\) 的可能取值为 \(X = \{ x_{1}, x_{2},...,x_{n}\}\),且对应的概率为: \[p(x_{i}) = p(X=x_{i}) \] ...

  4. [ch03-02] 交叉熵损失函数

    系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 3.2 交叉熵损失函数 交叉熵(Cross Entrop ...

  5. 【深度学习】K-L 散度,JS散度,Wasserstein距离

    度量两个分布之间的差异 (一)K-L 散度 K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量.在概率学和统计学上,我们经常会使用一种更简单的.近 ...

  6. 经典损失函数:交叉熵(附tensorflow)

    每次都是看了就忘,看了就忘,从今天开始,细节开始,推一遍交叉熵. 我的第一篇CSDN,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两 ...

  7. TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵

    TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激 ...

  8. KL散度与JS散度

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

  9. 熵(Entropy),交叉熵(Cross-Entropy),KL-松散度(KL Divergence)

    1.介绍: 当我们开发一个分类模型的时候,我们的目标是把输入映射到预测的概率上,当我们训练模型的时候就不停地调整参数使得我们预测出来的概率和真是的概率更加接近. 这篇文章我们关注在我们的模型假设这些类 ...

随机推荐

  1. Httpclient 工具类(get,put)

    package com.googosoft.until; import java.io.IOException; import org.apache.http.HttpEntity; import o ...

  2. yii2自定义报错页面

    在Yii2版本的advanced高级模板环境中:设置404自定义页面的方法 1.config/main.php文件 'errorHandler' => [ 'errorAction' => ...

  3. Analog power pin UPF defination

    在一个analog macro端口上,有些pin是always on的,有些是shut down的,如何描述这些pin的power属性?这是一个常见问题,驴就此机会大致描述一下常见的做法.对于这个问题 ...

  4. 【WPF学习】第十四章 事件路由

    由上一章可知,WPF中的许多控件都是内容控件,而内容控件可包含任何类型以及大量的嵌套内容.例如,可构建包含图形的按钮,创建混合了文本和图片内容的标签,或者为了实现滚动或折叠的显示效果而在特定容器中放置 ...

  5. HBuilder笔记

    官网: https://uniapp.dcloud.io/quickstart HBuilderX - 高效极客技巧 https://ask.dcloud.net.cn/article/13191 插 ...

  6. AT24C02芯片学习记录

    1.首先看AT24C02芯片的引脚说明 2.芯片的型号与存储容量(bit)的对应关系: 3.总线时序 我对时序的理解: 时钟线分两种:一种是外部时钟源控制时钟线低电平持续多久高电平持续多久,就像串口: ...

  7. rosserial学习记录

    1.参考博客:rosserial移植到STM32(CUBEMX+HAL库) 网址:https://blog.csdn.net/qq_37416258/article/details/84844051 ...

  8. Echarts字体和线条颜色设置操作笔记

    在网上偶然看到的一篇文章 感觉不错  下面是原著地址 原著地址:https://blog.csdn.net/eastmount/article/details/52823548

  9. List(数组)里面常用的属性和方法

    常用属性: length 长度 reversed 翻转 isEmpty 是否为空 isNotEmpty 是否不为空常用方法: add 增加 addAll 拼接数组 增加多个数据 list.addAll ...

  10. Codeforces Round #620 (Div. 2) E

    LCA的倍增 模板: ], depth[maxn]; int dist[maxn],head[maxn]; void add(int u,int v,int dist0){ a[tot].next=h ...