揭开“熵”的神秘面纱

前言

混乱?不确定?还是惊讶?

熵的概念起初让人困惑,是因为用这么多词来形容它:无序、不确定、惊讶、不可预测、信息量等。如果你现在对熵还是迷惑不解,那么是时候揭开它神秘的面纱了!

大纲

  • 谁发明了熵,为什么?
  • 如何进行高效无损的编码
  • 怎么计算平均编码长度
  • 寻找最小平均编码长度
  • 怎么计算熵
  • 和其他类似概念的比较
  • 总结

一、谁发明了熵,为什么?

1948年,克劳德-香农在他的论文“A Mathematical Theoty of Communication”首次提出了信息熵这个概念。

Claude Shannon

资源: https://en.wikipedia.org/wiki/Claude_Shannon

香农当时在寻找一种能够在不损失信息的情况下高效(率)发送信息的方式。


香农利用平均(编码)信息长度来衡量效率,因此怎么把原始信息用尽可能小的数据结构来编码便成了首要目标,且要求信息不应该丢失。因此,目的地的解码器必须能够无损的恢复出来原始信息。


香农将熵定义为从源发送到目的地信息的无损编码的最小平均编码大小(长度)。他介绍了如何计算熵,能够有助于对信道的有效利用。

上面的介绍可能对你来说不是很明显,我们来根据一些例子来了解高效和无损的发送消息意味着什么。

二、如何进行高效无损的编码?

假设你想从东京给纽约发送一条关于今天东京天气的消息,如下图。



这样效率高吗?

在这种场景下,东京的发送端和纽约的接收端都知道沟通的消息是关于东京的天气,所以像类似于"今天"、“东京”、“天气”之类的词没必要发送。我们只需要告诉天气的具体情况就可以了。


这样是不是变短了很多?但我们能不能更进一步?

因为目前我们只需要告诉“YES”或"NO"这种二进制的信息。所以我们需要精确的1位来编码上述信息。0代表“好天气”,1代表“坏天气”。



用0和1来编码

这样是不是更短了?

是的,在只有两种可能的信息(“Fine”和“Not fine”)的情况下,我们完成了对其无损的编码和解码。

但是,我们还想知道是“多云”还是“下雨”更多的信息呢?这样1个bit是没法表达这么多情况的?


增加了更多情况,1个bit还够用吗?

那使用2个bits呢?能解决上述问题吗?


2 bits

这样我们可以表达所有情况了。只需要2 bits便可发送信息。

但是有这么一个问题,:“多云”和“下雨”多属于“坏天气”,这样一来,“坏天气”就多余了,让我们去掉它。

去掉多余的“坏天气”

在上面的编码中,“好天气”的“00”中的第二个0不需要,因为当第一个数字为0的时候,就以及代表了“好天气”,且“多云”和“下雨”都是1开头,所以我们稍作更改。

所以更改后的编码,第一位表达了“好或者坏”。第二位表达了“多云或者下雨”。

但是如果东京下雪了怎么办?目前我们没法来表达“下雪”?

所以只能再增加一位,来表达“下雨”或者“下雪”之类的天气。


我们把“下雨”的编码做了变化:11 -> 110 ,增加了"下雪" :111,110和111明显不同,但为什么不用原来的11来继续表达“下雨”呢,因为在多个编码连续发送的时候,11易造成歧义,意思可能表达不明确。

举个例子,“下雨”:11,“下雪”:111。那么5-bit的“11111”既可以解码为“下雨、下雪”,也可以解码为“下雪、下雨”。所以我们用‘110’来编码“下雨”,这样‘110111’ 编码 “下雨、下雪”,‘111110'编码“下雪、下雨 ”,就不会有歧义。

所以,我们用3-bit来编码时,第一位代表“好或坏”,第二位代表“多云或其他”,第三位代表“下雨或下雪”。

举个例子,“0101110111”,代表着“好、多云、下雨、下雪”。“110010111”代表着“下雨、好、多云、下雪”。这样看起来,没有歧义,也无损且足够高效。

实际上,天气的类型不仅是这4种,在此我们只是简化下它。

至此,我们编码成功,但如果我们想知道现在的这种编码形式是不是达到了最小可能平均编码长度呢?这样就涉及到了如何计算平均编码长度?

三、如何计算平均编码长度

假设我们利用了上述的无损编码从东京发送了很多次天气信息到纽约,然后经过统计,获得了各种天气的概率分布。


四种天气的概率

接着,我们计算下发送这些信息的平均字节数

(0.6 x 1 bit)+(0.38 x 2 bits)+(0.01 x 3 bits)+(0.01 x 3 bits)=1.42 bits

经过计算,利用上述编码形式的话,每个信息的平均编码需要1.42个bits。上述的公式也表明了,平均字节数依赖于所编码的信息的概率分布。

假设,东京更容易下雨和下雪,那么平均编码长度又会有什么变化?

下雪和下雨的比重变大

(0.1 x 1 bit)+(0.1 x 2 bits)+(0.4 x 3 bits)+(0.4 x 3 bits)=2.7 bits

经过计算,我们需要2.7 bits.我们可以通过改变“下雪”和“下雨”的编码,来减小平均编码长度。


改变编码

(0.1 x 3 bit)+(0.1 x 3bits)+(0.4 x 1 bits)+(0.4 x 2 bits)=1.8 bits

经过计算,1.8 bits,远小于上述的2.7 bits

尽管这种编码产生了较小的平均编码长度,但是我们的代价是失去了先前编码方案中的良好语义性。但是,我们着眼于平均编码长度,不关心编译的语义和解码的难易程度。

至此,我们学会了如何计算平均编码大小,但是怎么样的编码方案才能达到最小平均编码大小的目的呢?

四、寻找最小平均编码长度

假设我们知道了天气的概率分布,那么怎么计算对应的最小平均编码长度的编码方案呢?

计算特定概率分布天气的最小平均编码长度的编码方案

“下雨”的最小编码方案是什么?需要几位?

方案1:我们用1位去编码“下雨”,那么“0”代表“下雨”。为了包含所有情况且不含歧义,至少还需要2位去表达其他信息。


用1bit编码“下雨”

在这用情况下,不是最佳的,因为“好”和“多云”更容易发生,所以我们应该给他们保留1位,来使得平均编码长度更小。用超过1位来编码“下雨”,因为它出现的频率更低。

方案2:用2位编码“下雨”。把“下雨”和“好”做个交换。



但这样还是存在着和方案一相同的问题:用更多的bits去描述更容易出现的类型(如多云,用 3bits来描述)

方案3:用3位编码“下雨”。把“多云”和“下雨”做一交换。这样我们得到了最小平均编码长度。



(0.5 x 1 bit)+(0.25 x 2bits)+(0.125 x 3 bits)+(0.125 x 3 bits)=1.75 bits

方案4:用4位编码“下雨”。这样编码就会变得冗余。所以,用3 bits 编码最合适。但是回顾整个流程,我们经过了很多次试错才找到了最终的答案。那有没有其他方法更容易找到答案呢?

那么问题转化为:给定概率分布,是否存在简单的方法来计算无损的平均编码长度的最小值?也就是我们如何计算熵

五、怎么计算熵?

假设我们有8种消息类型,且每种都是等可能性发生。那么在不含歧义的情况下,去编码它们需要的最小字节数是多少?



面对八种不同的情况,我们需要多少bits去编码?

1 bit可以编码0或1(2个值)。2 bits可以编码4个值。3 bits可以编码8个值,3 bits = 2x2x2 = 8 (000, 001, 010, 011, 100, 101, 110 and 111)。



如果我们减少位数,那么就会造成歧义。如果增加位数,那么就会造成冗余。实际上,如果我们有N个不同的取值,需要用bits来表达的话,那么只需要



bits就可以,不必超过更多了。

举个例子,


换句话说,如果一个消息类型在N次中发生了1次,那么上述的式子就给出了其最小编码长度。假设 P=1/N,则其代表了消息发生的概率,那么上式也可以这么表达:



让我们结果之前的知识,计算最小平均编码长度(以bits为单位),也就是熵:


P(i)是第i个消息类型的概率。 您可能需要坐下来思考这个公式的简洁性和美感。 其实这个公式并没有魔力,我们仅使用每种消息类型的最小编码大小来计算平均编码大小

继续用上述天气的例子来加深我们的理解。



计算每种情况各自对应的最小编码

所以,其最小平均编码长度(也就是熵):

(0.5 x 1 bit)+(0.25 x 2 bits)+(0.125 x 3 bits)+(0.125 x 3 bits)=1.75 bits

六、和其他类似概念的比较

熵有很多类比:无序,不确定,惊讶,不可预测,信息量等等。

如果熵很高(平均编码长度很大),则意味着有许多具有小概率的消息类型。因此,每次新消息到达时,与以前的消息类型相比都不同。您可能会将其视为无序不确定性不可预测性

如果某消息类型的概率比其他消息类型小得多,则会出现意外情况,因为平均上来说,你会期望其他更频繁发送(概率更高)的消息类型。

此外,罕见的消息类型比更频繁的消息类型具有更多信息,因为它消除了其他可能性并告诉我们更具体的信息。

在天气预报中,发送"下雨”(”下雨“”的概率分布为12.5%),我们将概率分布(“好,多云,下雪”)的不确定性降低了87.5%,前提是我们之前没有信息。如果我们发送“好”(50%),我们只会将不确定性降低50%。

如果熵高,则平均编码长度明显是长的,这意味着每个消息倾向于具有更多(特定)信息。同样,这就是高熵与无序,不确定性,惊讶,不可预测性,信息量相关的原因。

低熵意味着我们大多数时候都会收到更可预测的信息,这意味着*更少的无序更少的不确定性更少的惊喜更多的可预测性更少(特定)的信息

我希望这些类比不再让你感到困惑。

七、总结

本文首先介绍了信息熵概念的提出,以及如何计算它。

接着以天气的例子说明了如果无损和高效的编码信息,怎么计算编码长度,然后到计算平均编码长度

接着,又经过多次试错最后找到了最小平均编码长度的编码方案。

然后,怎么快速的找到最小的平均编码长度,也就是让随机过程中的每个事件的编码最小,你的整体肯定会最小。

最后说明了高熵和低熵以为这什么。


通过本文,我们收获了:

  • 信息熵的概念,提出它的动机。
  • 计算熵
    • 某事件的熵
    • 某随机过程的熵(加权平均)
  • 给定了概率分布,计算其最小编码长度
  • 高熵:混乱、无序、难以预测、更多不确定性、惊喜
  • 低熵:更少的无序、更稳定、更易预测。(最小化交叉熵,意味着更容易去做预测)

参考链接:https://medium.com/activating-robotic-minds/demystifying-entropy-f2c3221e2550

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355