信息熵与编码定理

article/2025/9/30 8:32:30

惊奇度与信息量
定性描述

惊奇度:一个事件的惊奇度是指该事件发生时我们所感到的惊奇程度
信息量:一条信息的信息量是指该信息所含信息的多少。一条信息越是让我们感到惊奇,它所含信息量就越大

对于一个掷骰子的试验,假设E代表掷出点数为偶数(概率为1/2),我们对于事件E发生的惊奇程度并不大,但是当E代表掷出点数为6(概率为1/6),我们的惊奇程度就会很大。同样的我们会认为,“明天太阳会从东边升起”这句话没有任何信息量,而“国足将在世界杯夺冠”,这句话信息量太大了。

定量描述
我们希望能够将这种惊奇度/信息量进行量化,一个合理的假设是:

事件的惊奇度/信息量只取决于事件发生的概率。

S ( p ) S(p) S(p)表示由概率为 p p p的事件发生以后所产生的惊奇程度,假定 S ( p ) S(p) S(p)对一切 0 &lt; p &lt; = 1 0&lt;p&lt;=1 0<p<=1有定义。下面我们从 S ( p ) S(p) S(p)应满足的条件出发确定 S ( p ) S(p) S(p)的形式:
公理1:
S ( 1 ) = 0 S(1)=0 S(1)=0,当听到一个必然事件发生时,不会感到任何惊奇
公理2:
S ( p ) S(p) S(p) p p p的严格连续递减函数,事件发生的概率越大,惊奇度越小
公理3:
S ( p q ) = S ( p ) + S ( q ) S(pq)=S(p)+S(q) S(pq)=S(p)+S(q),对于独立事件E和F,假设E发生的惊奇度为 S ( p ) S(p) S(p),F发生的惊奇度为 S ( q ) S(q) S(q),则二者同时发生的惊奇度等于二者分别发生的惊奇度之和
容易验证,对数函数可同时满足这四个条件:

S ( p ) = − l o g p S(p) = -log p S(p)=logp

当底数取2时,惊奇度/信息量的单位可用比特表示。

信息熵
信息熵的定义

考虑一个取值于 x 1 , x 2 , . . . , x n x_{1},x_{2},...,x_{n} x1,x2,...,xn的随机变量X,且相应概率分别为 p 1 , . . . , p n p_{1},...,p_{n} p1,...,pn,当观察到随机变量X的值,所引起的平均惊奇度为:

H ( x ) = − ∑ i = 1 n p i l o g p i H(x)=-\sum_{i=1}^{n}p_{i}logp_{i} H(x)=i=1npilogpi

规定 0 l o g 0 = 0 0log0=0 0log0=0。可以证明当 p i p_{i} pi相同时, H ( x ) H(x) H(x)达到最大值,所以 H ( x ) H(x) H(x)也可认为是随机变量 X X X的不确定程度。在信息论中, H ( x ) H(x) H(x)称为随机变量的熵,即观测到随机变量 X X X的值以后所接收的平均信息量。

信息熵的理解
在这里插入图片描述
熵、不确定度、惊奇度、信息量是从不同角度来看待X的同一特性:
随机变量 X X X的熵 H ( X ) H(X) H(X)=随机变量 X X X的不确定度=观测到随机变量 X X X的值后的平均惊奇度=观测到随机变量 X X X的值后的平均信息量

我们可以从以下不同角度来理解它们之间的关系:

随机变量X的熵H(X)代表了X取值的“混乱”程度,即我们对X取值的不确定程度,我们越是不确定X的取值,当我们观测到它的值时所产生的平均惊奇度就越大;
信息熵代表了信息内容的“混乱”程度,即我们对信息内容的不确定程度,我们越是不确定信息的内容,当我们获取该信息的内容时,它所带给我们的信息量就越大;
对于获取到的一条信息,我们越是感到惊奇说明它所包含的信息量越大;

随机向量的熵
随机向量 ( X , Y ) (X,Y) (X,Y)的联合不确定度为:

H ( X , Y ) = − ∑ i ∑ j p ( x i , y j ) l o g p ( x i , y j ) H(X,Y)=-\sum_{i}\sum_{j}p(x_{i},y_{j})logp(x_{i},y_{j}) H(X,Y)=ijp(xi,yj)logp(xi,yj)

Y = y j Y=y_{j} Y=yj已观测到, X X X Y = y j Y=y_{j} Y=yj条件下的剩余不确定度为:

H Y = y j ( X ) = − ∑ i p ( x i ∣ y j ) l o g p ( x i ∣ y j ) H_{Y=y_{j}}(X)=-\sum_{i}p(x_{i}|y_{j})logp(x_{i}|y_{j}) HY=yj(X)=ip(xiyj)logp(xiyj)

Y Y Y被观测到后, X X X的平均不确定度为:

H Y ( X ) = ∑ j H Y = y j ( X ) ⋅ p ( y j ) H_{Y}(X)=\sum_{j}H_{Y=y_{j}}(X)\cdot p(y_{j}) HY(X)=jHY=yj(X)p(yj)

定理1:
随机变量 X X X Y Y Y的联合不确定度可分解为 Y Y Y的不确定度与 Y Y Y被到测到后 X X X的平均不确定度之和:

H ( X , Y ) = H ( Y ) + H Y ( X ) H(X,Y)=H(Y)+H_{Y}(X) H(X,Y)=H(Y)+HY(X)

证明:

H ( X , Y ) = − ∑ i ∑ j p ( x i , y j ) l o g p ( x i , y j ) = − ∑ i ∑ j p ( y i ) p ( x i ∣ y j ) [ l o g p ( y i ) + l o g p ( x i ∣ y j ) ] = − ∑ j p ( y j ) l o g p ( y j ) ∑ i p ( x i ∣ y i ) − ∑ j p ( y j ) ∑ i p ( x i ∣ y i ) l o g p ( x i ∣ y i ) = H ( Y ) + H Y ( X ) \begin{aligned} H(X,Y)&amp;=-\sum_{i}\sum_{j}p(x_{i},y_{j})logp(x_{i},y_{j}) \\ &amp; =-\sum_{i}\sum_{j}p(y_{i})p(x_{i}|y_{j})[logp(y_{i})+logp(x_{i}|y_{j})] \\ &amp; = -\sum_{j}p(y_{j})logp(y_{j})\sum_{i}p(x_{i}|y_{i})-\sum_{j}p(y_{j})\sum_{i}p(x_{i}|y_{i})logp(x_{i}|y_{i})\\ &amp; =H(Y)+H_{Y}(X) \end{aligned} H(X,Y)=ijp(xi,yj)logp(xi,yj)=ijp(yi)p(xiyj)[logp(yi)+logp(xiyj)]=jp(yj)logp(yj)ip(xiyi)jp(yj)ip(xiyi)logp(xiyi)=H(Y)+HY(X)

引理:
x &gt; 0 x&gt;0 x>0时,下式恒成立,当且仅当 x = 1 x=1 x=1时等号成立
ln ⁡ x ⩽ x − 1 \ln x\leqslant x-1 lnxx1

定理2: 当另一个随机变量 Y Y Y被观测到后, X X X的不确定度在平均意义下减少,当二者独立时等号成立:

H Y ( X ) ⩽ H ( X ) H_{Y}(X) \leqslant H(X) HY(X)H(X)

编码定理

通信中的编码问题(最小期望码长):假设一个离散型随机变量X取值于 { x 1 , ⋅ ⋅ ⋅ , x N } \left \{x_{1}, \cdot \cdot \cdot ,x_{N}\right \} {x1,,xN},其相应概率为 { p ( x 1 ) , ⋅ ⋅ ⋅ , p ( x N ) } \left \{p(x_{1}), \cdot \cdot \cdot ,p(x_{N})\right \} {p(x1),,p(xN)},设计一个编码系统,将 x i x_{i} xi编成 n i n_{i} ni位的二进制序列,通过一个通信网络将从A处传送到B处,为避免混乱,要求编码后的序列不能出现一个序列是另一个序列的延伸。如何设计编码系统使得最终的期望码长最小。

引理1:
为了将 X X X的可能取值编码成0-1序列,且任何一个序列都不能是另一序列的延伸,其充要条件为:

∑ i = 1 N ( 1 2 ) n i ⩽ 1 \sum_{i=1}^{N}\left ( \frac{1}{2} \right )^{n_{i}}\leqslant 1 i=1N(21)ni1

证明:
w j w_{j} wj x i x_{i} xi中编码长度为j的个数, j = 1 , 2 , 3... j=1,2,3... j=1,2,3...,显然有:

w 1 2 n − 1 + w 2 2 n − 2 + ⋅ ⋅ ⋅ + w n − 1 2 + w n ⩽ 2 n w_{1}2^{n-1}+w_{2}2^{n-2}+\cdot \cdot \cdot +w_{n-1}2+w_{n}\leqslant 2^{n} w12n1+w22n2++wn12+wn2n

两边同除以 2 n 2^{n} 2n得:

∑ j = 1 n w j ( 1 2 ) j = ∑ i = 1 N ( 1 2 ) n i ⩽ 1 \sum_{j=1}^{n}w_{j}\left ( \frac{1}{2}\right )^{j}=\sum_{i=1}^{N}\left ( \frac{1}{2} \right )^{n_{i}}\leqslant 1 j=1nwj(21)j=i=1N(21)ni1

无噪声编码定理
无噪声编码定理:
假设每个信号单位从位置A到位置B的过程没有发生错误,则编码的期望码长不小于随机变量的信息熵:

∑ i = 1 N n i p ( x i ) ⩾ H ( X ) = − ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) \sum_{i=1}^{N}n_{i}p\left ( x_{i} \right )\geqslant H(X)=-\sum_{i=1}^{N}p\left ( x_{i} \right )\log p\left ( x_{i} \right ) i=1Nnip(xi)H(X)=i=1Np(xi)logp(xi)

证明:
p i = p ( x i ) p_{i}=p(x_{i}) pi=p(xi) q i = 2 − n i / ∑ j = 1 N 2 − n j q_{i}=2^{-n_{i}}/\sum_{j=1}^{N}2^{-n_{j}} qi=2ni/j=1N2nj,则有 ∑ i = 1 N p i = ∑ i = 1 N q i = 1 \sum_{i=1}^{N}p_{i}=\sum_{i=1}^{N}q_{i}=1 i=1Npi=i=1Nqi=1

− ∑ i = 1 N p i log ⁡ ( p i q i ) = − log ⁡ e ∑ i = 1 N p i ln ⁡ ( p i q i ) = log ⁡ e ∑ i = 1 N p i ln ⁡ ( q i p i ) ⩽ log ⁡ e ∑ i = 1 N p i ( q i p i − 1 ) = log ⁡ e ( ∑ i = 1 N p i − ∑ i = 1 N q i ) = 0 \begin{aligned} -\sum_{i=1}^{N}p_{i}\log(\frac{p_{i}}{q_{i}})&amp;=-\log e \sum_{i=1}^{N}p_{i}\ln (\frac{p_{i}}{q_{i}})\\ &amp;=\log e \sum_{i=1}^{N}p_{i}\ln (\frac{q_{i}}{p_{i}})\\ &amp;\leqslant \log e \sum_{i=1}^{N}p_{i}(\frac{q_{i}}{p_{i}}-1)\\ &amp;=\log e (\sum_{i=1}^{N}p_{i}-\sum_{i=1}^{N}q_{i})=0 \end{aligned} i=1Npilog(qipi)=logei=1Npiln(qipi)=logei=1Npiln(piqi)logei=1Npi(piqi1)=loge(i=1Npii=1Nqi)=0

由此可得:

− ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) ⩽ − ∑ i = 1 N p i log ⁡ q i = ∑ i = 1 N n i p i + log ⁡ ( ∑ j = 1 N 2 − n j ) ⩽ ∑ i = 1 N n i p i \begin{aligned} -\sum_{i=1}^{N}p\left ( x_{i} \right )\log p\left ( x_{i} \right )&amp;\leqslant - \sum_{i=1}^{N}p_{i}\log q_{i}\\ &amp;= \sum_{i=1}^{N}n_{i}p_{i}+\log(\sum_{j=1}^{N}2^{-n_{j}})\\ &amp;\leqslant\sum_{i=1}^{N}n_{i}p_{i} \end{aligned} i=1Np(xi)logp(xi)i=1Npilogqi=i=1Nnipi+log(j=1N2nj)i=1Nnipi

定理:
对于大部分随机变量 X X X,不存在一组编码系统使得期望码长达到下界 H ( X ) H(X) H(X),但是总存在一个编码系统,使得期望码长与 H ( X ) H(X) H(X)之间的误差小于1
证明:
n i = ⌈ − log ⁡ p ( x i ) ⌉ n_{i}=\left \lceil -\log p(x_{i}) \right \rceil ni=logp(xi),即:

− log ⁡ p ( x i ) ⩽ n i ⩽ − log ⁡ p ( x i ) + 1 -\log p(x_{i}) \leqslant n_{i}\leqslant -\log p(x_{i}) +1 logp(xi)nilogp(xi)+1

代入期望码长公式 L = ∑ i = 1 N n i p ( x i ) L=\sum_{i=1}^{N}n_{i}p(x_{i}) L=i=1Nnip(xi)得:

− ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) ⩽ L ⩽ − ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) + 1 -\sum_{i=1}^{N}p\left ( x_{i} \right )\log p\left ( x_{i} \right )\leqslant L\leqslant -\sum_{i=1}^{N}p\left ( x_{i} \right )\log p\left ( x_{i} \right )+1 i=1Np(xi)logp(xi)Li=1Np(xi)logp(xi)+1

H ( X ) ⩽ L &lt; H ( X ) + 1 H(X)\leqslant L&lt; H(X)+1 H(X)L<H(X)+1

有噪声编码定理
假设每个信号单位的传送是独立的,且以概率p正确地从A处传送到B处,这样的通信系统称为二进制对称通道。若不经过处理直接传送便会发生误传,一种减少误传信号的方法是将信号重复多次,在译码时按多数原则进行翻译。
假设p=0.8,通过将信号重复3次进行编码译码。如000、001、010、100都代表0,111,110,101,011代表1。此时,传输一位错误的概率为:

0. 2 3 + 3 × 0. 2 2 × 0.8 = 0.104 0.2^{3}+3\times 0.2^{2}\times 0.8=0.104 0.23+3×0.22×0.8=0.104

错误率由0.2减小到0.104,事实上,只要重复足够多次可以将误传概率变得任意小,但是这种方法是以牺牲传输效率为代价的。但值得庆幸的是将传输错误概率减小到0的同时,传输效率并不会减小到0,这正是香农在信息论中提出的含噪声编码定理。
有噪声编码定理:
对于二进制对称系统,为使传送一比特的误差概率变得任意小,传输平均速率存在一个上限 C ∗ C^{*} C,称为通道容量。

C ∗ = 1 + p log ⁡ p + ( 1 − p ) log ⁡ ( 1 − p ) C^{*}=1+p\log p+(1-p)\log(1-p) C=1+plogp+(1p)log(1p)

转载自:
作者:Like_eb56
链接:https://www.jianshu.com/p/0123c6ee18c3
来源:简书


http://chatgpt.dhexx.cn/article/ei1HbQSn.shtml

相关文章

熵编码算法Range encoding工程原理和实现

在压缩算法中&#xff0c;熵编码是其中重要的无损压缩步骤。熵编码算法根据香农定理&#xff0c;对出现概率大的源符号用较少的编码符号进行编码&#xff0c;对概率小的源符号用较多的编码符号进行编码&#xff0c;尽可能地逼近压缩的极限。 目前各类压缩工具使用的熵编码算法主…

七、熵编码算法(1):基础知识

一、熵编码的概念 熵 化学和热力学&#xff0c;用于度量能量退化的指标熵越高&#xff0c;物体或系统的做功能力越低 信息学中的熵 表示信源所发出信息的不确定性越是随机的、前后不相关的信息&#xff0c;其熵越高 信源编码定理 说明了香农熵与信源符号概率之间的关系信息的熵…

【Codecs系列】CABAC熵编码详解

Date: 2018.5.9 转载自&#xff1a;https://blog.csdn.net/listener51/article/details/60970635 目录 1. 信息熵的概念 &#xff12;. 定长编码 &#xff13;. 变长编码 3.1 哈夫曼编码 3.2 算术编码  3.2.1 传统编码方法 3.2.2 算术编码 3.2.3 二进制算术编码 4. …

第8章 熵编码

http://www.cnblogs.com/xkfz007/archive/2012/07/29/2614250.html 1. 熵编码 熵&#xff08;Entropy&#xff09;&#xff1a;信源的平均信息量&#xff0c;更精确的描述为表示信源所有符号包含信息的平均比特数 信源编码要尽可能的减少信源的冗余&#xff0c;使之接近熵 用…

熵编码之CABAC

CABAC&#xff08;Context-based Adaptive Binary Arithmetic Coding&#xff09;&#xff0c;基于上下文的自适应二进制算术编码。CABAC是H.264/AVC标准中两种熵编码中的一种&#xff0c;它的编码核心算法就是算术编码&#xff08;Arithmetic Coding&#xff09;。 算术编码 传…

信息熵、编码冗余/信息熵冗余、压缩与解压缩速度

信息熵&#xff1a;是指数据所带的信息量。信息量与信源包含的事件发生的概率有关&#xff0c;事件概率越大&#xff0c;信息量越小&#xff1b;事件概率越小&#xff0c;信息量越大。将信源所有可能事件的信息量进行平均&#xff0c;就得到信息的熵&#xff08;Entropy&#x…

信息熵和压缩编码

目录 一、信息熵是什么&#xff1f;二、两种编码压缩2.1 香农-范诺编码简述2.2 特例详解 三、哈夫曼编码3.1 哈夫曼编码简述3.2 特例详解 四、RGB图像压缩 一、信息熵是什么&#xff1f; 信息&#xff1a;信息&#xff0c;指音讯、消息、通讯系统传输和处理的对象&#xff0c;…

6.信息论(一):信息量、熵和最优编码

前言 信息论是由克劳德香农发展&#xff0c;用来找出信号处理与通信操作的基本限制&#xff0c;如数据压缩、可靠的存储和数据传输等。自创立以来&#xff0c;已被应用多个领域&#xff0c;例如自然语言处理(NLP)、机器学习等领域。 定长编码(Block Codes) 让我们从一个例子…

信息熵与编码

文章目录 一、信息熵的概念二、利用编码求压缩率1.香农-凡诺编码2.霍夫曼编码 三、实验证明图像字节四、文献参考 一、信息熵的概念 信息是个很抽象的概念。人们常常说信息很多&#xff0c;或者信息较少&#xff0c;但却很难说清楚信息到底有多少。比如一本五十万字的中文书到…

熵编码原理

熵编码原理 一.熵编码原理1.原理介绍2.常见方案3.整数位元法4.熵编码模型二.熵编码CABAC介绍1.二进制化2.上下文建模3.二进制算术编码常规编码区间重归一化旁路编码 一.熵编码原理 1.原理介绍 熵编码即编码过程中按熵原理不丢失任何信息的编码。信息熵为信源的平均信息量&…

熵编码:CABAC

基于上下文的二进制算术编码&#xff08;Context-Based Adaptive Binary Arithmetic Coding,CABAC&#xff09;将自适应二进制算术编码和上下文模型相结合。是H.265/HEVC的主要熵编码方案。 主要包括三个步骤&#xff1a; 二进制化&#xff1b; 上下文建模&#xff1b; 二进…

熵编码:算术编码

算术编码不是简单的将每个信源符号映射成一个码字&#xff0c;而是对整个输入序列分配一个码字&#xff0c;所以平均意义上可以为每个信源符号分配长度小于1的码字。 算术编码操作简单&#xff0c;下面以一个实例讲解算术编码的原理&#xff1a; 设信源有a,b,c,d四种符号&…

GitLab-CI基础使用总结

思路梳理 下图是GitLab-ci的实现结构图&#xff1a; (实际结构会有出入&#xff0c;画成这样只是便于理解) GitLab:是一个基于 Git 的代码托管平台&#xff0c;提供了代码仓库管理、问题跟踪、CI/CD 等功能。它可以用于团队协作开发、版本控制、代码审查等场景。GitLab-runne…

Git --- Git Gui

目录 1. 创建和删除分支(了解即可) 2. Git Gui 3. 什么是ssh key 4. git/gitee生成密钥并通过 第一步&#xff1a;本地电脑配置 第二步&#xff1a;远程gitee仓库配置 第三步&#xff1a;修改你本地的ssh remote url. 不用https协议&#xff0c;改用git 协议 第四步&#x…

git与gerrit基础概念

序 本文记录了 git 与 gerrit 学习所得 重点关注于当前所用到的实际操作部分&#xff0c;其余理论部分以及更复杂用法留待将来用到时继续补充 1 Git 与 Gerrit Git 是当前全世界流行的分布式版本控制工具&#xff0c;但是只适用于纯文本文件&#xff0c;包括markdown、网页、…

Git入门|Git的基本用法(一)

1. Git的安装 首先在安装之前确认一下系统有没有安装Git。在Terminal中输入&#xff1a; git --version若确认系统没有安装git&#xff0c;可通过以下指南安装&#xff1a; Getting Started - Installing Git 2. 创建本地Git库 每次进行新项目时&#xff0c;都需要创建一个…

Gitlab-CI入门配置

Gitlab-CI使用及.gitlab-ci.yml配置 Gitlab-CI/CD 持续集成测试篇 Gitlab-CI/CD使用场景在这里插入代码片 首先&#xff0c;公司使用Gitlab作为工作仓库进行代码发布及版本控制&#xff0c;Gitlab内置了CI/CD的工具&#xff0c;这些工具可以用于代码提交的同时完成镜像构建、…

Gitlab CI/CD:入门指南

功能概览 CI/CD工作流 上图是基本的CI/CD工作流&#xff0c;与之对应的&#xff0c;gitlab几乎提供了上述流程节点所需的所有相关功能&#xff1a; 阶段功能 1. Verify 通过持续集成自动构建和测试你的应用程序 使用GitLab代码质量&#xff08;GitLab Code Quality&#xff09…

GitLab-CI 基础介绍

转载自 kubeclub GitLab-CI 工作原理 将代码托管到 git 仓库在项目的根目录下创建 .gitlab-ci.yml 文件&#xff0c;在文件中包含了构建、测试以及部署等脚本&#xff0c;这些脚本被分组为 stage&#xff0c;共同组成了 pipelineGitLab 检测到 ci.yml 文件&#xff0c;使用 G…

GitLab CI Pipeline

GitLab 不单单只是作为一个代码版本控制的仓库&#xff0c;很多场景下使用 GitLab 作为整合 CI 持续集成就 CD 持续发布的工作平台&#xff0c;那么就是 GitLab 的 CI Pipeline 功能了。 CI Pipeline 试想一下&#xff0c;如果开发人员只需要编写代码&#xff0c;而编译、打包…