目录

  • 信息熵的概述
  • 离散型随机变量的信息熵公式
  • 信息熵公式理解
  • 编码的约束条件
  • 信息熵公式的推导

信息熵的概述

  看过很多博客,发现大多文章只是对信息熵做了一些大致的介绍,如:信息熵代表一个随机变量的不确定性程度;也可理解为一个随机变量其值域用信息量编码后的最小码长数学期望。
  但是对于信息熵的公式为何这样,网上没有找到相关的推导过程。针对这个问题,从信息熵代表一个随机变量其值域用信息量编码后的最小码长数学期望这一物理意义入手,本文使用最优化的方法,对信息熵公式进行了推导。过程中难免存在数学上的严谨性问题,欢迎各位指正。
  随机变量分为离散型和连续型两种,本文仅对离散型变量进行讨论,关于连续型,其原理也是大同小异。

离散型随机变量的信息熵公式

  设离散型随机变量X的值域为 { x 1 , x 2 , . . . , x i , . . . x n } \{x_1,x_2,...,x_i,...x_n\} {x1​,x2​,...,xi​,...xn​},其取值为 x i x_i xi​时的概率为 p i p_i pi​,则其信息熵为:
H ( X ) = ∑ i = 1 n p i log ⁡ b 1 p i H\left(X\right)=\sum_{i=1}^{n}p_i \log_b \frac{1}{p_i} H(X)=i=1∑n​pi​logb​pi​1​
  上面公式中,常取b=2,主要是因为计算机编码中常用二进制编码,所以本文也是采用b=2进行讨论。下面谈谈对这个公式的理解。

信息熵公式理解

  我们不妨先思考一个问题:假设离散型随机变量X的所有状态为 { x 1 , x 2 , . . . , x i , . . . x n } \{x_1,x_2,...,x_i,...x_n\} {x1​,x2​,...,xi​,...xn​},当状态为 x i x_i xi​时的概率为 p i p_i pi​,那么使用二进制进行编码,设每个状态 x i x_i xi​的最终编码长度为 l i l_i li​,那么 l i l_i li​分别是多长,才能使得最终的平均编码长度最小(即前面说的码长期望值最小),也即使得下面公式最小:
L = p 1 l 1 + p 2 l 2 + . . . + p n l n L=p_1l_1+p_2l_2+...+p_nl_n L=p1​l1​+p2​l2​+...+pn​ln​
  实际上解决了上面的问题后,最终会发现 L m i n = H ( X ) L_{min}=H\left(X\right) Lmin​=H(X),即最小的码长期望值,实际上就是随机变量X的信息熵。

编码的约束条件

  首先,针对上面的求最小化问题,我们仅仅是将其要优化的目标函数写出来而已,现在需要将此优化问题的条件补全,呈现出完整的最优化方程进行求解。
  我们要使平均码长最小,当然会想到使得每个 l i l_i li​最小(最好都等于1),那么这个平均长度自然最小。但是对应状态数大于2的随机变量X来说,这显然不可能,因为如果每个状态的编码长度为1(即编码是0或1),那么最多可以表示2个状态,其余状态无法表示。所以在编码长度方面,存在着一定的限制条件,此即为我们要找的最优化方程的限制条件。下面讨论一下关于编码的限制条件:

  1. 假设用二进制表示随机变量X(X的所有状态为 { x 1 , x 2 , x 3 , x 4 } \{x_1,x_2,x_3,x_4\} {x1​,x2​,x3​,x4​}),其编码长度不要求相同。如上图所示,假设可用的码长最长为3,所以上图中最多能代表的状态数为 2 3 = 8 2^3=8 23=8,现在只要编码4个状态,所以可以个状态的码长均为2(用00,01,10,11分别代表4个状态),也可以使用如上图所示的编码(图中黄色节点表示该节点还未被编码,绿色节点表示该节点已经被用于编码,灰色节点表示不能再被用于编码),当然也可以用其他的编码方式。但是无论如何进行编码,都要符合这个条件:母节点的编码被使用后,其下面所有的字节点编码均不能再使用,不然会导致编码重复,无法实现编码的单一性。如:用编码0来代表 x 1 x_1 x1​,则0下面的字节点 00 , 01 , . . . , 011 00,01,...,011 00,01,...,011均不能为其他状态使用(比如,假设有3个状态其编码分别为0,1,01,则在使用中,如果出现01编码,无法判断它是代表的哪个状态,其有可能是01单个状态,也有可能是0、1两个一前一后的状态。)
  2. 现假设最长的编码长度为 l X l_X lX​,则理论上可以编码表示 2 l X 2^{l_X} 2lX​个可能状态,但是对于编码为0的状态,显然它一个状态就占用了人家 2 l X − 1 2^{l_X-1} 2lX​−1种可能状态的坑。显然,对于某一状态 x i x_i xi​,其编码长度为 l x i l_{x_i} lxi​​,则就这一个状态就占用了一共 2 l X − l x i 2^{l_X-l_{x_i}} 2lX​−lxi​​种可能状态的坑。前面说过,最长的编码长度为 l X l_X lX​,则理论上只有 2 l X 2^{l_X} 2lX​种可能状态坑,而且各个状态的坑之间不能有重叠(不然无法保证单一性,最后无法辨别,前面1中有说),所以就有下面这个约束条件:
    ∑ i = 1 n 2 l X − l x i ≤ 2 l X ⟹ 1 2 l 1 + 1 2 l 2 + . . . + 1 2 l n ≤ 1 \sum_{i=1}^{n}2^{l_X-l_{x_i}} \leq 2^{l_X} \Longrightarrow \frac{1}{2^{l_1}}+\frac{1}{2^{l_2}}+...+\frac{1}{2^{l_n}} \leq 1 i=1∑n​2lX​−lxi​​≤2lX​⟹2l1​1​+2l2​1​+...+2ln​1​≤1

信息熵公式的推导

  经过前面的介绍,我们现在可以将上面提到的最小编码期望值问题,表示成一个最优化方程的求解问题了。
  问题描述: 对于随机变量X,其所有的可能状态为 { x 1 , x 2 , . . . , x n } \left\{x_1,x_2,...,x_n\right\} {x1​,x2​,...,xn​},各个状态出现的概率分别为 { p 1 , p 2 , . . . , p n } \left\{p_1,p_2,...,p_n\right\} {p1​,p2​,...,pn​},现假设每个状态的编码长度为 { l 1 , l 2 , . . . , l n } \left\{l_1,l_2,...,l_n\right\} {l1​,l2​,...,ln​},其中 l i ∈ Z + l_i \in Z^+ li​∈Z+,求最短的平均编码长度,于是可以列出以下最优化式子:
{ m i n p 1 l 1 + p 2 l 2 + . . . + p n l n s . t . 1 2 l 1 + 1 2 l 2 + . . . + 1 2 l n ≤ 1 l i ≥ 0 a n d l i ∈ Z + , 1 ≤ i ≤ n \begin{cases} min & p_1l_1+p_2l_2+...+p_nl_n\\ s.t. & \frac{1}{2^{l_1}}+\frac{1}{2^{l_2}}+...+\frac{1}{2^{l_n}} \leq 1 \\ & l_i \geq 0\ and\ l_i \in Z^+,\ \ 1\leq i \leq n \end{cases} ⎩⎪⎨⎪⎧​mins.t.​p1​l1​+p2​l2​+...+pn​ln​2l1​1​+2l2​1​+...+2ln​1​≤1li​≥0 and li​∈Z+,  1≤i≤n​
  显然,平常的编码长度只能是整数问题,所以上面的式子是整数优化问题。但是对于更一般的问题,可以不局限于码长是整数,所以这里将码长为整数这一限制去除,得到下面的优化方程:
{ m i n p 1 l 1 + p 2 l 2 + . . . + p n l n s . t . 1 2 l 1 + 1 2 l 2 + . . . + 1 2 l n ≤ 1 l i ≥ 0 , 1 ≤ i ≤ n \begin{cases} min & p_1l_1+p_2l_2+...+p_nl_n\\ s.t. & \frac{1}{2^{l_1}}+\frac{1}{2^{l_2}}+...+\frac{1}{2^{l_n}} \leq 1 \\ & l_i \geq 0,\ \ 1\leq i \leq n \end{cases} ⎩⎪⎨⎪⎧​mins.t.​p1​l1​+p2​l2​+...+pn​ln​2l1​1​+2l2​1​+...+2ln​1​≤1li​≥0,  1≤i≤n​
  不妨令 l i ′ = − l i l^{'}_i=-l_i li′​=−li​,则可以化简为
{ m i n − ( p 1 l 1 ′ + p 2 l 1 ′ + . . . + p n l 1 ′ ) s . t . 2 l 1 ′ + 2 l 2 ′ + . . . + 2 l n ′ ≤ 1 l i ′ ≤ 0 , 1 ≤ i ≤ n \begin{cases} min & -\left(p_1l^{'}_1+p_2l^{'}_1+...+p_nl^{'}_1\right)\\ s.t. & 2^{l^{'}_1}+2^{l^{'}_2}+...+2^{l^{'}_n} \leq 1 \\ & l^{'}_i \leq 0,\ \ 1\leq i \leq n \end{cases} ⎩⎪⎪⎨⎪⎪⎧​mins.t.​−(p1​l1′​+p2​l1′​+...+pn​l1′​)2l1′​+2l2′​+...+2ln′​≤1li′​≤0,  1≤i≤n​
  再令 I i = 2 l i ′ I_i=2^{l^{'}_i} Ii​=2li′​,可得:
{ m i n − ( p 1 log ⁡ 2 I 1 + p 2 log ⁡ 2 I 2 + . . . p n log ⁡ 2 I n ) s . t . I 1 + I 2 + . . . + I n ≤ 1 0 ≤ I i , 1 ≤ i ≤ n \begin{cases} min & -\left(p_1\log_2I_1+p_2\log_2I_2+...p_n\log_2I_n\right)\\ s.t. & I_1+I_2+...+I_n\leq1\\ & 0\leq I_i,\ \ 1\leq i \leq n \end{cases} ⎩⎪⎨⎪⎧​mins.t.​−(p1​log2​I1​+p2​log2​I2​+...pn​log2​In​)I1​+I2​+...+In​≤10≤Ii​,  1≤i≤n​
  现在假设设取到最优解 { I 1 ′ , I 2 ′ , . . . , I n ′ } \left\{I^{'}_1,I^{'}_2,...,I^{'}_n\right\} {I1′​,I2′​,...,In′​}时,上式约束条件的等号不成立,即: I 1 ′ + I 2 ′ + . . . + I n ′ &lt; 1 I^{'}_1+I^{'}_2+...+I^{'}_n&lt;1 I1′​+I2′​+...+In′​<1,也即有: I 1 ′ + I 2 ′ + . . . + I n ′ + I x ′ = 1 , w h i l e I x ′ &gt; 0 I^{'}_1+I^{'}_2+...+I^{'}_n+I^{'}_x=1,while\ I^{'}_x&gt;0 I1′​+I2′​+...+In′​+Ix′​=1,while Ix′​>0,则可知 { I 1 ′ , I 2 ′ , . . . I i ′ ′ , . . . , I n ′ } , w h i l e I i ′ ′ = I i ′ + I x \left\{I^{'}_1,I^{'}_2,...I^{''}_i,...,I^{'}_n\right\},while\ I^{''}_i=I^{'}_i+I_x {I1′​,I2′​,...Ii′′​,...,In′​},while Ii′′​=Ii′​+Ix​,也是其中的一个解,而且显然该解比原先的解更好(使得目标函数更小)。由此可知,当取得最优解时,上式中的约束条件 I 1 + I 2 + . . . + I n ≤ 1 I_1+I_2+...+I_n\leq1 I1​+I2​+...+In​≤1 一定等号成立,现将其代入表达式可以求解得到最优解。
  将 I 1 + I 2 + . . . + I n = 1 ⟹ I n = 1 − ∑ i = 1 n − 1 I i I_1+I_2+...+I_n=1 \Longrightarrow I_n=1-\sum_{i=1}^{n-1}I_i I1​+I2​+...+In​=1⟹In​=1−∑i=1n−1​Ii​代入原最优化式子中,有:
{ m i n − [ p 1 log ⁡ 2 I 1 + p 2 log ⁡ 2 I 2 + . . . + p n − 1 log ⁡ 2 I n − 1 + p n log ⁡ 2 ( 1 − ∑ i = 1 n − 1 I i ) ] s . t 0 ≤ I i ≤ 1 , 1 ≤ i ≤ n − 1 \begin{cases} min &amp; -\left[p_1\log_2I_1+p_2\log_2I_2+...+p_{n-1}\log_2I_{n-1}+p_n\log_2\left({1-\sum_{i=1}^{n-1}I_i}\right)\right]\\ s.t &amp; 0\leq I_i \leq 1,\ \ 1\leq i \leq n-1 \end{cases} {mins.t​−[p1​log2​I1​+p2​log2​I2​+...+pn−1​log2​In−1​+pn​log2​(1−∑i=1n−1​Ii​)]0≤Ii​≤1,  1≤i≤n−1​
  当取最小值时,对 I 1 , I 2 , . . . , I n − 1 I_1,I_2,...,I_{n-1} I1​,I2​,...,In−1​求偏导则均为0,有:
{ p 1 I 1 ln ⁡ 2 − p n ( 1 − ∑ i = 1 n − 1 I i ) ln ⁡ 2 = 0 . . . p n − 1 I n − 1 ln ⁡ 2 − p n ( 1 − ∑ i = 1 n − 1 I i ) ln ⁡ 2 = 0 \begin{cases} \frac{p_1}{I_1\ln 2}-\frac{p_n}{\left({1-\sum_{i=1}^{n-1}I_i}\right)\ln 2}=0 \\ ... \\ \frac{p_{n-1}}{I_{n-1}\ln 2}-\frac{p_n}{\left({1-\sum_{i=1}^{n-1}I_i}\right)\ln 2}=0 \end{cases} ⎩⎪⎪⎨⎪⎪⎧​I1​ln2p1​​−(1−∑i=1n−1​Ii​)ln2pn​​=0...In−1​ln2pn−1​​−(1−∑i=1n−1​Ii​)ln2pn​​=0​
  经过化简可得:
{ p 1 ( 1 − I 1 − . . . − I n − 1 ) = p 1 I n = p n I 1 ⟹ I 1 p 1 = I n p n . . . p n − 1 ( 1 − I 1 − . . . − I n − 1 ) = p n − 1 I n = p n I n − 1 ⟹ I n − 1 p n − 1 = I n p n \begin{cases} p_1\left(1-I_1-...-I_{n-1}\right)=p_1I_n=p_nI_1 \Longrightarrow \frac{I_1}{p_1}=\frac{I_n}{p_n}\\ ...\\ p_{n-1}\left(1-I_1-...-I_{n-1}\right)=p_{n-1}I_n=p_nI_{n-1} \Longrightarrow \frac{I_{n-1}}{p_{n-1}}=\frac{I_n}{p_n} \end{cases} ⎩⎪⎨⎪⎧​p1​(1−I1​−...−In−1​)=p1​In​=pn​I1​⟹p1​I1​​=pn​In​​...pn−1​(1−I1​−...−In−1​)=pn−1​In​=pn​In−1​⟹pn−1​In−1​​=pn​In​​​
⟹ I 1 p 1 = I 2 p 2 = . . . = I n − 1 p n − 1 = I n p n , w h i l e ∑ i = 1 n I i = ∑ i = 1 n p i = 1 \Longrightarrow \frac{I_1}{p_1} = \frac{I_2}{p_2} = ... = \frac{I_{n-1}}{p_{n-1}} = \frac{I_n}{p_n} ,while \ \sum_{i=1}^{n}I_i=\sum_{i=1}^{n}p_i=1 ⟹p1​I1​​=p2​I2​​=...=pn−1​In−1​​=pn​In​​,while i=1∑n​Ii​=i=1∑n​pi​=1
  即最优解为: I 1 = p 1 , I 2 = p 2 , . . . , I n = p n I_1=p_1,I_2=p_2,...,I_n=p_n I1​=p1​,I2​=p2​,...,In​=pn​,也即 l 1 = − log ⁡ 2 I 1 = − log ⁡ 2 p 1 , l 2 = − log ⁡ 2 I 2 = − log ⁡ 2 p 2 , . . . , l n = − log ⁡ 2 I n = − log ⁡ 2 p n l_1=-\log_2I_1=-\log_2p_1, l_2=-\log_2I_2=-\log_2p_2,...,l_n=-\log_2I_n=-\log_2p_n l1​=−log2​I1​=−log2​p1​,l2​=−log2​I2​=−log2​p2​,...,ln​=−log2​In​=−log2​pn​。
  代入原式,则最短的平均编码长度为: H ( X ) = ∑ i = 1 n p i log ⁡ 2 1 p i H\left(X\right)=\sum_{i=1}^{n}p_i \log_2 \frac{1}{p_i} H(X)=∑i=1n​pi​log2​pi​1​,此式和信息熵的公式完全相同,上面的推导便也可看成是信息熵的一种推导过程。
  最后,对于信息熵的物理意义,我们可以这样进行理解:对于一个随机变量X,其各个状态出现的概率不同,我们要对其进行编码,所求得的最短平均编码长度便为信息熵。

信息熵的理解及推导过程相关推荐

  1. 【机器学习基础】结合论文理解XGBoost推导过程

    前言 XGBoost是一个可扩展的提升树模型,论文"XGBoost: A Scalable Tree Boosting System"发表在2016年的KDD会议上.文章包括了XG ...

  2. Softmax vs. SoftmaxWithLoss 推导过程

    Softmax vs. SoftmaxWithLoss Softmax function: Softmax Loss function(cross-entropy): SoftmaxWithLoss的 ...

  3. 数字录波器的理解——如何完成这一过程的(无数学推导过程)

    数字滤波器的理解 ······· 接触数字录波器之前一定接触过模拟滤波器,这种实实在在的东西-物理上存在的,给我们的感觉灰常好.我们都接触过复域也就是(频率分析域)的拉普拉斯变换和傅里叶变换,一个单位 ...

  4. 信息量和信息熵的理解

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

  5. 机器学习——线性回归的原理,推导过程,源码,评价

    https://www.toutiao.com/a6684490237105668620/ 2019-04-27 16:36:11 0.线性回归 做为机器学习入门的经典模型,线性回归是绝对值得大家深入 ...

  6. 【转】四元数的推导过程

    [转]四元数的推导过程 来自:https://blog.csdn.net/qq_28773183/article/details/80083607 四元数旋转推导过程 1.基本概念 (1) 四元数的一 ...

  7. Java实现基数排序及其推导过程 Radix Sort

    本文带来八大排序算法之基数排序. 基数排序(radix sort)属于"分配式排序"(distribution sort),又称"桶子法"(bucket sor ...

  8. 余弦函数导数推导过程_人工智能数学基础----导数

    人工智能数学基础----导数 人工智能数学基础系列文章 1. 人工智能数学基础----导数 2. 人工智能数学基础----矩阵 3. 人工智能数学基础----线性二阶近似 人工智能的学习对于数学要求还 ...

  9. numpy求逆矩阵_线性代数精华2——逆矩阵的推导过程

    点击上方蓝字,和我一起学技术. 上一讲当中我们复习了行列式的内容,行列式只是开胃小菜,线性代数的大头还是矩阵. 矩阵的定义很简单,就是若干个数按照顺序排列在一起的数表.比如m * n个数,排成一个m ...

最新文章

  1. 体验 PHP under .NET Core
  2. Java ClassLoader findSystemClass()方法与示例
  3. java动态同步_java并发基础-Synchronized
  4. jQueryEasyUI Messager基本使用
  5. MVC3.0与C#截取字符串
  6. byte用json存 c++_.NET Core 3.1中的Json互操作最全解读收藏级
  7. JQuery操作cookie插件
  8. (转)解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
  9. 上海自考计算机应用基础实践,上海自考《计算机应用基础》试题练习(八)
  10. mysql手册05_存储过程和存储函数
  11. Eclipse下载安装配置测试(超详细)
  12. python with打开多个文件_在python中使用with打开多个文件的方法
  13. 京东数据分析软件 | 如何获取京东平台的“增长榜单”
  14. Linux 简要大纲
  15. Jenkins版本升级指南
  16. 如何用PhotoShop去掉图片上的某些文字
  17. Struts框架简介
  18. 提升算法数据结构的几个网站
  19. python学习第十天
  20. 2021阳城一中高考成绩查询,2017阳城一中录取分数线(附2017高考成绩喜报)

热门文章

  1. 阻燃计算机电缆的标准,阻燃GB12666-90标准DJVVP3-22铠装计算机电缆
  2. 您可以在 2023年开始的 100 个副业,看看有没有适合你的
  3. HYSBZ - 2038 小Z的袜子(hose) (莫队入门)
  4. aspen为什么不能用_我是如何学习Aspen Plus软件的---入门必看
  5. 效果图如何做出插画风格?SketchUp 插画风效果图渲染技巧
  6. (php毕业设计)基于php图书馆预约选座管理系统源码
  7. GPS信号转发器,GPS信号覆盖,GPS信号放大器,GPS信号增强器
  8. 王者荣耀用java_王者荣耀版Java教程第五期:Java类与对象(1)
  9. “晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
  10. 测试总监: 你这么坚决离职,下家找好了吗?