本文主要是介绍为什么信息熵要定义成-Σp*log(p)?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
From https://www.zhihu.com/question/30828247
链接:https://www.zhihu.com/question/30828247/answer/64816509
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我从一个非常直观的角度来解释一下熵的定义为什么如题主所示。
第一,假设存在一个随机变量,可以问一下自己当我们观测到该随机变量的一个样本时,我们可以接受到多少信息量呢?毫无疑问,当我们被告知一个极不可能发生的事情发生了,那我们就接收到了更多的信息;而当我们观测到一个非常常见的事情发生了,那么我们就接收到了相对较少的信息量。因此信息的量度应该依赖于概率分布,所以说熵的定义应该是概率的单调函数。
第二,假设两个随机变量和是相互独立的,那么分别观测两个变量得到的信息量应该和同时观测两个变量的信息量是相同的,即:。而从概率上来讲,两个独立随机变量就意味着,所以此处可以得出结论熵的定义应该是概率的函数。因此一个随机变量的熵可以使用如下定义:
此处的负号仅仅是用来保证熵(即信息量)是正数或者为零。而函数基的选择是任意的(信息论中基常常选择为2,因此信息的单位为比特bits;而机器学习中基常常选择为自然常数,因此单位常常被称为nats)。
最后,我们用熵来评价整个随机变量平均的信息量,而平均最好的量度就是随机变量的期望,即熵的定义如下:
总的来说,题主给出的定义符合第一点(单调性),但是不符合第二点。
以上内容参考自Bishop 的著作《Pattern Recognition and Machine Learning》链接:https://www.zhihu.com/question/30828247/answer/168054140
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
刚好看《数学之美》中有一个非常直观的例子:
假设我们没有看世界杯的比赛,但是想知道哪支球队会是冠军,只能去问已经看过比赛的观众,但是我们只能猜测某支球队是或不是冠军,然后观众用对或不对来回答,我们想要猜测次数尽可能少,所用的方法就是二分法。假如有 16 支球队,分别编号,先问是否在 1-8 之间,如果是就继续问是否在 1-4 之间,以此类推,直到最后判断出冠军球队是哪只。如果球队数量是 16,我们需要问 4 次来得到最后的答案。那么世界冠军这条消息的信息量就是 4。在计算机中,这条信息的信息量就是 4 比特,如果一共是 32 支球队参赛,那么世界冠军的信息量就是 5 比特,可以看到信息量跟可能情况的对数 log (以 2 为底)有关(这里大概有点知道为什么求熵的公式里会有一个 log 了)。
但是以往经验表示,如果世界杯有 32 支球队参赛,有些球队实力很强,拿到冠军的可能性更大,而有些队伍拿冠军的概率就很小。我们在之前用二分法计算的时候其实是看做每个球队夺冠的概率都相等,因此我们从最可能夺冠的几支球队中猜测冠军球队,实际需要的信息量是小于我们之前方法计算的信息量的。
准确的信息量应该是: H = -(p1 * logp1 + p2 * logp2 + ... + p32 * logp32),其中 p1, ..., p32 分别是这 32 支球队夺冠的概率。我们再回头验算一下,当每支球队夺冠概率相等都是 1/32 的时候,H = -(32 * 1/32 * log1/32) = 5,根据最大熵原理,每个事件概率相同时,熵最大,这件事越不确定。
这里我们只是说了如何计算,那么为什么求总信息量就是所有 -p*logp 再求和呢?维基百科一句话就让我明白了:-logp 就是一种可能性的信息量啊,一个事件总的信息量就是每一种可能的情况的信息量乘以它们发生的概率,其实就是信息量的数学期望。
这篇关于为什么信息熵要定义成-Σp*log(p)?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!