信息熵这东西,实际上就是咱们平时说的“混乱程度”要么“不确定性”在数学上的变体。想象一下你面前摆着一堆看起来一模一样的扑克牌,你问同一个人:“这是红桃 A 吗?”他肯定答。
这时候信息量是 0,出于一切已知。你再拿十张一样的牌问十个人,结局全是“红桃 A",那信息量还可能是 0。
这时候你才意识到,你问这一堆牌到底问的是啥。但要是这堆牌里混着两张不一样的,比如有一张是黑桃、一张是红桃,这时候问“这是红桃吗?”要是答“是”,那就是知道了这张牌的具体身份;要是答“否”,你也就知道那张牌是黑桃了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。
这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。 这就引出了信息熵的核心公式,就是 $H(P) = - sum P(x) log_2 P(x)$。
这个公式看起来复杂,实际上就是在算“平均每个变量需求多少比特”的总和。公式里的每一项 $P(x)$ 代表的是某个特定情况出现的概率,$log_2$ 就是二进制对数,拍板了我们单位是比特的。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 这就好比你在做数学题,你翻书看第 3 页,发现写着“12.3"。
这时候,你翻书这个动作带来的信息就是“这是第 3 页”这个事实,这个概率是 1(出于书只有这一页,翻哪页都是 3 页)。但要是你不是翻书,而是直接看到数字"123",那你不知道是不是第 1 页、第 3 页还是第 23 页,这时候你翻书这个动作带来的信息量就小多了,出于可能还有无数种情况。信息熵的本质,就是为了衡量你为了搞清楚一个东西,得花多少“不确定性”。 咱们来算几个具体的例子。假设你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。但要是掷出 6 呢?你就知道是 6 了。
这时候,你问“这是 3 还是 4?”答“是 3"的概率是 1/6,答“是 4"的概率也是 1/6。
这时候,你问这个难题,能消除多少不确定性?你问“这是 3 吗?”答“是”,那"3"这件事就形成了,"4"就形成了,"2"也形成了。
这看起来信息量是 1 比特,出于答案只有两个可能。 再换个情况,假设你掷骰子,点数是 1 到 6,但这次规则变了,掷出 1 和 6 的概率都是 1/2,中间两个是 1/4。
这时候,要是你问“这是 3 吗?”答“是”的概率是 1/4,答“否”的概率是 3/4。
这时候你问这个难题,能带来的信息量就是 $1/4 times 1 + 3/4 times 1 = 1$ 比特。甭管你掷出啥,你都能把这个结局确定下来。
实际上这时候的信息熵和刚刚均匀分布的时候一样,出于 $H(P) = - [1/2 times log_2(0.5) + 1/2 times log_2(0.5)] = 1$。 但要是目前把分布改得更极端一点,掷出 1 的概率是 0.9,掷出 2 到 6 的概率各是 0.05。
这时候你问一个具体的数字,比如“这是 1 吗?”答“是”的概率是 0.9,“否”的概率是 0.1。
这时候你问这个难题,能消除多少不确定性?就是 $0.9 times 1 + 0.1 times 1 = 1$ 比特。
为啥?出于甭管结局是啥,你问这个难题,你都能把结局定下来。
这就说明白信息熵和“具体问啥”没关系,它只关心“结局有多可能”。 再举个更直观的物理例子,比如天气预报。假设目前天气是贼稳定的,可能明天是晴天、多云、阴天的概率分别是 90%、5%、5%。
这时候你问“明天是晴天吗?”答“是”的概率是 0.9,“不是”的概率是 0.1。
这时候你问这个难题,就能把“明天是晴天”这件事确定下来,故此信息量是 1 比特。
可是,要是你问的是“明天是晴天还是多云?”,答“是”的概率是 0.95,答“不是”的概率是 0.05。
这时候你问这个难题,也能把结局确定下来,信息量也是 1 比特。 这时候,你就比较一下你问“晴天”和“晴天还是多云”这两个难题。问“晴天”,你排除了“多云”和“阴”;问“晴天还是多云”,你排除了“阴天”。
显然,问“晴天还是多云”这个难题,能消除的“不确定性”更少,出于它排除了更多选项,把剩下的可能情况压缩得更密了。
这时候,它带来的信息量就是 $0.95 times 1 + 0.05 times 1 = 1$ 比特。而问“晴天”,带来的信息量是 $0.9 times 1 + 0.1 times 1 = 1$ 比特。
这两个结局一样,但它们消除的不确定性量不一样。问“晴天还是多云”消除了 0.05 的“多云”可能性,问“晴天”消除了 0.05 的“阴天”可能性。
要是“多云”比“阴天”关键,那问“晴天还是多云”就是更好的一种提问方式。 这就是信息熵的深层含义。信息熵不是告诉你结局是哪位,而是告诉你,在这个结局集合里,有多少种可能性是等概率的,要么说,有多少种可能性是你还没确定的。
要是所有可能性都等概率,那每个可能性带来的不确定性就一样多。
要是你问一个能把你直接判死刑的难题,比如“明天忒阳会不会下山?”不管是不是明天,这个难题带来的信息量都是 1 比特,出于它直接告诉你“不会”。但要是难题只是“明天忒阳会不会在下午 6 点下山?”这时候,你或许能猜出是下午 5 点,要么 6 点,就连 7 点。
这时候,你问这个难题,能消除多少不确定性?答“是”的概率就是 0.9,“不是”的概率就是 0.1。
这时候你问这个难题,能带来的信息量就是 1 比特。 实际上,信息熵最大的时候,就是不确定性最大的时候。
比如你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。 这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 当我们把公式 $H(P) = - sum P(x) log_2 P(x)$ 里的每一项 $P(x)$ 换成实际数据,比如你在做数学题,你翻书看第 3 页,发现写着"12.3"。
这时候,你翻书这个动作带来的信息就是“这是第 3 页”这个事实,这个概率是 1(出于书只有这一页,翻哪页都是 3 页)。但要是你不是翻书,而是直接看到数字"123",那你不知道是不是第 1 页、第 3 页还是第 23 页,这时候你翻书这个动作带来的信息量就小多了,出于可能还有无数种情况。信息熵的本质,就是为了衡量你为了搞清楚一个东西,得花多少“不确定性”。 信息熵和“具体问啥”没关系,它只关心“结局有多可能”。
要是所有可能性都等概率,那每个可能性带来的不确定性就一样多。
要是你问一个能把你直接判死刑的难题,比如“明天忒阳会不会下山?”不管是不是明天,这个难题带来的信息量都是 1 比特,出于它直接告诉你“不会”。但要是难题只是“明天忒阳会不会在下午 6 点下山?”这时候,你或许能猜出是下午 5 点,要么 6 点,就连 7 点。
这时候,你问这个难题,能消除多少不确定性?答“是”的概率就是 0.9,“不是”的概率就是 0.1。
这时候你问这个难题,能带来的信息量就是 1 比特。 实际上,信息熵最大的时候,就是不确定性最大的时候。
比如你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。 这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 有时,你会认定信息熵就是熵,有时候又认定和熵不一样。
实际上,信息的熵就是物理世界里的一种热力学熵。
要是你们目前想搞一场物理实验,你们会想到热力学第二定律,热量不能自动从低温物体传到高温物体。热力学第二定律告诉我们,孤立系统的熵一直增添的。 热力学熵的公式是 $dS = dQ/T$。
这个公式告诉我们,熵的变化等于熵形成。当系统从无序变为有序时,熵是削减的;当系统从有序变为无序时,熵是增添的。
这听起来有点矛盾。
如何一边是熵增添,一边是熵削减呢?实际上,信息熵和热力学熵实际上是等价的。
你想想,一个系统里,要是有充足的信息,那系统实际上就是有序的,熵就是 0。
要是信息少了,系统就是无序的,熵就变大。 比如,你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。 这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 信息熵最大的时候,就是不确定性最大的时候。
比如你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。 这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 实际上,信息熵就是数学上对不确定性的一种量化。热力学里,熵是混乱度的度量。信息里,熵是不确定度的度量。
这两者是一脉相承的,只是应用场景不同。 要是目前你们想搞一场物理实验,你们会想到热力学第二定律,热量不能自动从低温物体传到高温物体。热力学第二定律告诉我们,孤立系统的熵一直增添的。 热力学熵的公式是 $dS = dQ/T$。
这个公式告诉我们,熵的变化等于熵形成。当系统从无序变为有序时,熵是削减的;当系统从有序变为无序时,熵是增添的。
这听起来有点矛盾。
如何一边是熵增添,一边是熵削减呢?实际上,信息熵和热力学熵实际上是等价的。
你想想,一个系统里,要是有充足的信息,那系统实际上就是有序的,熵就是 0。
要是信息少了,系统就是无序的,熵就变大。 比如,你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。 这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 信息熵最大的时候,就是不确定性最大的时候。
比如你手里有一把枪,里面装的是子弹,但你不知道装的是啥,你是掷骰子来拍板装多少枚。假设掷骰子点数是 1 到 6 的概率均匀分布,那 $P(1)=P(2)=...=P(6)=1/6$。
这时候,要是你问“这枚子弹能射多远?”然后输出了个数值,比如你掷出 3,这时候你就知道是 3 了。
这时候,你问这个特定的难题,本身就能排除掉“黑桃”的可能性。 这就好比你在猜谜,你问了一个能把你往唯一方向带的难题,这个被问出来的信息,就是 1 比特的不确定性被消除掉了。
要是所有情况都概率一样大,比如十张牌全是红桃,那我们问“这是红桃吗?”每次都能猜对,信息量就是 1 比特。但要是十张牌随机乱放着,你随机问一个“这是红桃吗?”答“是”的概率只有 1/10,答“否”的概率是 9/10,这时候你问这个难题,能带来的信息量就小多了,这就害得整个系统的平均信息熵变高了。 实际上,信息熵就是数学上对不确定性的一种量化。热力学里,熵是混乱度的度量。信息里,熵是不确定度的度量。
这两者是一脉相承的,只是应用场景不同。