浅谈熵和打升级 (A brief talk about entropy and Sheng ji)
2017-01-07 10:54
591 查看
本文将结合打升级来大概总结一下信息论中熵的含义,及其与系统随机性,混乱程度和可预测性的一些关系。后续可能会修改本文添加更多内容。关于熵的内容介绍主要来自于Wikipedia。
然后我们考虑一个更数学一点的例子,掷硬币。我们首先考虑一个两面都是正面的硬币,那么它掷出正面的概率就是1,那么这个事件就没有随机性,熵为0,每一次结果都可以准确预测。然后我们假设一枚均匀的硬币,那么掷出正反面的概率都是一样的,都是0.5。那么我们可以认为每掷一次硬币传递的信息都是1个单位,想象一下穿梭在互联网中的1和0的数据流。这里我们先引入信息量的计算公式:
I(xi)=−logbp(xi) 其中,p(xi) 是事件 xi 发生的概率,底数 b 可以取不同的值,当 b=2 时,信息量的单位是 bit(这里其实是 bit 这个词的来历)。于是在上面的例子中,p(掷正面)=0.5,那么计算可知掷一次正面带来的信息量就是 1bit。这里我们再引入熵的计算公式为:
H(x)=∑i=1np(xi)I(xi)=−∑i=1np(xi)logbp(xi)
于是我们,我们计算可得,H(掷两面都为正的硬币)=0,H(掷均匀硬币)=1。对比二者,我们可以说,掷均匀硬币的这个事件的熵更大,更随机,更不可预测,信息更多,系统更混乱。
好,接下来结合打升级谈一下。四个人打升级两幅牌共108张,庄家扣底可以多换8张牌,其他人没人拿25张牌。我们先计算一下起手的时候庄家和闲家拿到几张 A 的概率。比如庄家拿到 n 张 A 的概率是(假设庄家见 A 就拿,不会把 A 扣进底牌中):
p(xn)=Cn8∗C33−n100C33108 而闲家拿到 n 张 A 的概率是:
p(xn)=Cn8∗C25−n100C25108 于是可以得到庄家拿到几张 A 的概率分布为:
闲家拿到几张 A 的概率分布为
如果我们认为庄家有A就会在第一轮出A,那么庄家打出A所带来的信息量为:
I(庄家首轮出A)=0.0709 相对的,庄家首轮不打A的信息量为:
I(庄家首轮不出A)=4.3831 可以看出来,庄家首轮不出A比出A带来的信息量大得多。如果我们把庄家首轮出牌看出一个事件,那么这个事件的熵为:
H(庄家首轮出牌)=0.2775
单独看这个数值感觉没什么意义,我们可以换个角度对比一下。如果我们用一副牌而不是两幅牌来打升级,庄家和闲家拿到几个 A 的概率则分别为:
类似的,我们可以计算出庄家首轮出 A 和不出 A 的信息量分别为:
I(庄家首轮出A)=0.2974 I(庄家首轮不出A)=2.4246庄家首轮出牌的熵可以计算为:
H(庄家首轮出牌)=0.6936 可以看出,打一副牌时,庄家首轮出牌的熵更大,也就是更混乱,信息更多,更难预测。其实这也契合打牌的时间感觉,打两副牌时庄家手里握有A的概率更大,首轮出A的情况更为常见更好预测;而打一副牌时则更容易出现庄家起手没有A的情况,也就是说打一副牌时,首轮庄家的出牌更难预测一些。
注:其实根据熵,我们还可以衡量某个事件能被准确预测的程度。通过Fano’s inequality可以给出预测准确度的上界。无奈我对Fano’s inequality的理解还不过透彻,暂时没法写出来,以后更理解了可能会再补充道这里。
再注:关于熵的话题的兴趣来自于今天看的一篇Science上的文章,Limits of Predictability in Human Mobility。关于打升级话题的兴趣来自于最近在放假。
熵(Entropy)
信息论中的熵是接收的每条消息中包含的信息的平均量,或者也可以换句话说,熵是信息内容不可预测性的一种度量。仔细想想其实这两种说法是等价的,但这样说可能比较抽象,我们考虑一个形象的例子。在大选之前,我们往往会进行一些民意调查(poll),原因在于民调的结果对于我们是未知的,于是民调带给了我们一些新的信息。如果我们在第一民调之后随即马上又进行第二次民调,那么第二次民调给我们带来的信息就不如第一次那么多。也就是说,第二次民调的熵小于第一次民调的熵。然后我们考虑一个更数学一点的例子,掷硬币。我们首先考虑一个两面都是正面的硬币,那么它掷出正面的概率就是1,那么这个事件就没有随机性,熵为0,每一次结果都可以准确预测。然后我们假设一枚均匀的硬币,那么掷出正反面的概率都是一样的,都是0.5。那么我们可以认为每掷一次硬币传递的信息都是1个单位,想象一下穿梭在互联网中的1和0的数据流。这里我们先引入信息量的计算公式:
I(xi)=−logbp(xi) 其中,p(xi) 是事件 xi 发生的概率,底数 b 可以取不同的值,当 b=2 时,信息量的单位是 bit(这里其实是 bit 这个词的来历)。于是在上面的例子中,p(掷正面)=0.5,那么计算可知掷一次正面带来的信息量就是 1bit。这里我们再引入熵的计算公式为:
H(x)=∑i=1np(xi)I(xi)=−∑i=1np(xi)logbp(xi)
于是我们,我们计算可得,H(掷两面都为正的硬币)=0,H(掷均匀硬币)=1。对比二者,我们可以说,掷均匀硬币的这个事件的熵更大,更随机,更不可预测,信息更多,系统更混乱。
好,接下来结合打升级谈一下。四个人打升级两幅牌共108张,庄家扣底可以多换8张牌,其他人没人拿25张牌。我们先计算一下起手的时候庄家和闲家拿到几张 A 的概率。比如庄家拿到 n 张 A 的概率是(假设庄家见 A 就拿,不会把 A 扣进底牌中):
p(xn)=Cn8∗C33−n100C33108 而闲家拿到 n 张 A 的概率是:
p(xn)=Cn8∗C25−n100C25108 于是可以得到庄家拿到几张 A 的概率分布为:
拿几张A | n=0 | n=1 | n=2 | n=3 | n=4 | n=5 | n=6 | n=7 | n=8 |
---|---|---|---|---|---|---|---|---|---|
概率 | p=0.048 | p=0.186 | p=0.302 | p=0.268 | p=0.141 | p=0.046 | p=0.009 | p=9e-4 | p=4e-5 |
拿几张A | n=0 | n=1 | n=2 | n=3 | n=4 | n=5 | n=6 | n=7 | n=8 |
---|---|---|---|---|---|---|---|---|---|
概率 | p=0.112 | p=0.295 | p=0.322 | p=0.190 | p=0.066 | p=0.014 | p=0.002 | p=1e-4 | p=3e-6 |
I(庄家首轮出A)=0.0709 相对的,庄家首轮不打A的信息量为:
I(庄家首轮不出A)=4.3831 可以看出来,庄家首轮不出A比出A带来的信息量大得多。如果我们把庄家首轮出牌看出一个事件,那么这个事件的熵为:
H(庄家首轮出牌)=0.2775
单独看这个数值感觉没什么意义,我们可以换个角度对比一下。如果我们用一副牌而不是两幅牌来打升级,庄家和闲家拿到几个 A 的概率则分别为:
拿几张A | n=0 | n=1 | n=2 | n=3 | n=4 |
---|---|---|---|---|---|
概率 | p=0.186 | p=0.406 | p=0.305 | p=0.093 | p=0.010 |
拿几张A | n=0 | n=1 | n=2 | n=3 | n=4 |
---|---|---|---|---|---|
概率 | p=0.354 | p=0.436 | p=0.180 | p=0.029 | p=0.002 |
I(庄家首轮出A)=0.2974 I(庄家首轮不出A)=2.4246庄家首轮出牌的熵可以计算为:
H(庄家首轮出牌)=0.6936 可以看出,打一副牌时,庄家首轮出牌的熵更大,也就是更混乱,信息更多,更难预测。其实这也契合打牌的时间感觉,打两副牌时庄家手里握有A的概率更大,首轮出A的情况更为常见更好预测;而打一副牌时则更容易出现庄家起手没有A的情况,也就是说打一副牌时,首轮庄家的出牌更难预测一些。
注:其实根据熵,我们还可以衡量某个事件能被准确预测的程度。通过Fano’s inequality可以给出预测准确度的上界。无奈我对Fano’s inequality的理解还不过透彻,暂时没法写出来,以后更理解了可能会再补充道这里。
再注:关于熵的话题的兴趣来自于今天看的一篇Science上的文章,Limits of Predictability in Human Mobility。关于打升级话题的兴趣来自于最近在放假。
相关文章推荐
- gitinspector+jenkins 开发代码统计CI
- 批处理统计文件夹内的所有文件的数量和总大小的bat
- C#实现统计字数功能的方法
- PowerShell统计文件夹下文件个数的方法
- 如何统计全天各个时间段产品销量情况(sqlserver)
- C#统计字符串中数字个数的方法
- C语言中使用lex统计文本文件字符数
- 如何统计在一篇文章中某个单词出现了几次,以及第一次出现的位置
- SQL进行排序、分组、统计的10个新技巧分享
- PHP实现统计在线人数功能示例
- php实现统计目录文件大小的函数
- C++统计中英文大小写字母、数字、空格及其他字符个数的方法
- js统计网页在线时间的脚本
- C语言实现统计字符串单词数
- JavaScript统计网站访问次数的实现代码
- jQuery圆形统计图开发实例
- jQuery统计指定子元素数量的方法
- Oracle数据库按时间进行分组统计数据的方法
- php下统计用户在线时间的一种尝试
- php ajax网站浏览统计功能的简单实现第1/2页