什么是信息熵?香农利用信息熵回答了什么问题_香农定律
第九个知识点:香农(Shannon)定义的熵和信息是什么
这是计算机理论的最后一篇.我们讨论信息理论的基础概念,什么是香农定义的熵和信息.
信息论在1948年被Claude E.Shannon建立.信息论最开始被应用于信号处理,但是经过几十年的发展,它现在已经被应用到各个学科了.这篇文章尝试简洁的介绍两个基础的概念,熵(entropy)和信息(information).如果你对这个感兴趣,我个人推荐你在这里学习更多.[1]
熵
熵是衡量一个或者多个变量不确定性的度量.
假设我们调查人们打开浏览器的时候打开的第一个网页.我们用抽样的方法将测试人员分出两组.四个来自Bristol Cryptogroup的密码学研究人员和在Bristol客车站被抽取的四个乘客.让我们做一个激进的假设,假设四个密码学研究者第一次都会访问http://bristolcrypto.blogspot.co.uk/ .
现在让我们评价一下他们的答案:显然,密码学家的答案是相当确定的(低不确定性),而如果答案来自乘客,则很难猜到(高不确定性).换句话说,我们说密码学家组的答案熵低,而乘客组的答案熵高.
因此香农的一个最著名的贡献就是香农熵的定义:
\(H = – \sum_ip_ilog_bp_i\)
其中\(p_i\)是一个之前答案出现的可能性.在计算机科学中,我们通常使用\(b = 2\)(bits).
如果我们计算熵值,我们就有
\(H_{cryptographer} = – \sum_i^41log_21=0\)
\(H_{passenger} = -\sum_1^4log_2(1/4)=2\)
所以乘客的答案的熵确实比密码学家的高!
信息
形式上,Shannon信息的定义在[2]中给出:
信息是衡量一个人在选择信息时的选择自由.
为了解释这个问题,让我们对前面的事例做一个小的修改.让我们从Bristol火车站再抓四个乘客,假设他们的答案也是随机门户,就像长途汽车站的乘客一样.
问题是:给定一个答案\(y\),你能说答案来自哪一组?
如果\(y\)是http://bristolcrypto.blogspot.co.uk/,那么我们马上就可以知道答案来自于我们的密码编码员组.但是如果y是随机的,我们就会遇到困难.因此我们就可以说http://bristolcrypto.blogspot.co.uk/包含比随机的更多的信息.
因此它们跟熵有什么关系?
扩展熵的定义,我们将条件熵定义为:
\[H(Y|X) = sum_{x \in X}p(x)H(Y|X=x) \]
这个公式描述了当\(X=x\)条件\(Y\)的熵.更明确的说,因为熵是一个变量的不确定性.因此,先前条件熵的定义实际上是当给定条件为”线索”(条件)\(X\)的不确定的\(Y\).
观察:考虑两个变量\(X\)和\(Y\).如果\(X\)包括\(Y\)的最小信息,然后给出一个额外的\(X\)的精确值对我们推断\(Y\)的值应该没有多大帮助,也就是说,它并没有明显的降低\(Y\)的不确定性.另一方面,如果\(X\)包含了\(Y\)的基本信息.那么当\(X\)给定时,\(Y\)的熵应该是低了很多.因此,条件熵可以看作是看作是对\(X\)对\(Y\)的信息是一种合理的度量!
另一个重要的指标就是互信息(Mutual Information).它是两个变量测量的度量.一种定义它的方法就是熵的减少值.
\(I(X;Y) = H(X)-H(X|Y)=H(Y)-H(Y|X)\)
密码学实例
信息论的概念广泛应用于密码学.一个典型的例子就是把密码学看作一个信道,明文是输入,密文是输出.侧信道的研究也得益于信息论.
[1] Thomas M. Cover and Joy A. Thomas. Elements of Information Theory 2nd Edition. Wiley-Interscience, 2 edition, July 2006.
[2] S. Vajda, Claude E. Shannon, and Warren Weaver. The mathematical theory of communication. The Mathematical Gazette, 34(310):312+, December 1950.
[3] http://en.wikipedia.org/wiki/Entropy_(information_theory)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167928.html原文链接:https://javaforall.cn
相关文章
- 故障分析 | ClickHouse 物化视图插入时间变为“1970-01-01 08:00:00”问题复盘
- 考研竞赛每日一练 day 8 一道利用极限定义以及泰勒展开加级数判别法证明级数收敛性的问题
- 利用 Redsocks 解决透明代理的远程抓包问题
- 利用chroot和fake filesystem解决物联网设备研究时的工具移植问题
- 二叉树应用-折纸问题
- 使用lua+redis解决发多张券的并发问题
- oracle更新xml节点问题的一些细节
- 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案详解编程语言
- reduce hadoop利用MySQL、MapReduce、Hadoop轻松解决大数据问题(mysqlmap)
- Win10商店连接问题莫名其妙?这几招很实用
- 解决Oracle连接被占用问题(Oracle连接占用)
- 分析利用Oracle服务日志进行问题优化分析(oracle服务日志)
- 问题利用Mysql实现多个sum计算(mysql多个sum)
- PowerShell 修复 Robocopy的权限问题
- Linux日志乱码困扰:解决中文乱码问题(linux日志中文乱码)
- 网络解决Linux服务器网络连接问题(linux服务器连不上)
- 如何快速利用Linux命令行解决显示问题(linux 命令行 显示)
- 解决MSSQL用户名密码乱码问题(mssql用户名密码乱码)
- 解决Redis连接不上的问题(怎么连接上redis)
- 利用Oracle临时表解决复杂数据问题(oracle临时表应用)
- MySQL数据库遭遇两个冲突问题,如何解决(mysql下了两个冲突)
- 安全利用Redis减少程序的线程安全性问题(redis非线程)
- 利用Oracle NVLIF函数解决空值问题(oracle nvlif)
- 问题利用Redis加速数据一致性的保障(redis解决数据不一致)
- 2处理利用Redis缓存解决L2垃圾收集问题(redis缓存的垃圾L)