《学数学会上瘾》读书笔记1-香龙公式的学习(关于信息熵)

devtools/2024/12/23 17:35:50/

最近开始读《学数学会上瘾》这个书,相当不错,笔记之:

中文是最有效率的语言吗?
1948年,美国数学家克劳德·香农提出了一个表征符号系统中单位符
号平均信息量的指标——信息熵,还给出了一个计算信息熵的公
式,这个公式十分简洁

PI:公式里的是指在某种符号系统中某个符号出现的频率。
比如,文字就是一种符号系统,每个汉字就是一种符号。而频率就
是某个字在某类文字材料中出现的比例。如果你统计了一本100万字
的书,这本书中某个字出现了1万次,那么这个字的频率就是:1
万/100万=0.01=1%。
香农的这个公式就是要把某个符号系统中的符号频率全都统计出
来,代入上述公式,就是这个符号系统的信息熵。
这听上去有点儿抽象,进行实际运算就容易理解了。比如,符号系
统只有一个符号,信息熵会如何?
因为只有一个符号,所以它的频率必然是100%,也就是1。1的对数
是0,所以按这个公式,计算结果就是0。
针对这个结果,香农给出的解释是,如果一个符号系统只有单个符
号,那么这个符号系统什么信息都不能传递,单个字符能传递的信
息量是0。如果一种文字只包含一个字母“a”,那么这种语言任何信
息也不能传递。有人说可以用不同长度的“a”来表示不同的信息,但
这要求不同长度的“a”之间有某种“分隔符”,而这种分隔符就是另一
种符号。
那么有两种符号会如何?我们先假设两种符号的出现频率都是
50%=0.5。那么按公式“log 2 0.5=-1”,总信息熵就是:
-1×(0.5×(-1)+0.5×(-1))=1
所以,这种符号系统的信息熵就是1,其含义是:“这种符号系统的
每个符号可以传递1bit信息。”此时能看出,之所以公式前面要有一
个系数-1,就是为了使结果数值总是大于等于0,因为人对正数的感
受比较直观。
影响信息熵的因素有两个:一个是符号的多少,一个是符号的频率
分布。我们可以固定一个变量,看看另一个变量对信息熵的影响。
我们先假设每个符号的频率是相等的,字符数不断增加会如何?假
设某符号系统有N 个符号,每个符号的频率是1/N,则该系统的信息熵
是:



也就是说,符号越多,
信息熵越大。
那么再考虑一下,如果符号数量固定,符号的频率分布改变,对信
息熵的值影响如何?稍加计算就会发现,符号的频率分布越不均
匀,信息熵越小。如果只有两个符号,其中一个符号的出现频率占
90%,另一个只占10%,将其代入公式,可以计算出这种符号系统的
信息熵是0.47左右。而之前算过两个符号频率相等的话,信息熵是
1。
计算结果有了,我们来解读一下。为什么符号越多信息熵越大,也
就是说单个符号提供的信息越多?
你可以设想,英语不是由26个字母组成的,而是包含1000个字母。
那么,即使元音字母还是只有a,e,i,o,u这5个,每个单词要求至
少 有 一 个 元 音 字 母, 那 么 用 1000 个 字 母, 你 也 可 能 构 造 出
1000×5×2=10000个双字母的单词。而大学英语六级的词汇量只有
6000个左右,1万个单词已经非常多了。如果再考虑3个字母的组
合,单词量就足够用了。
所以,英语文章如果可以用1000个字母的符号系统改写,那么几乎
其中所有单词都可以用3个或更少的字母组合来表示,文章长度将大
大减少,所以单个字母的信息量是不是就增加了?
而汉字系统恰恰有点儿像有几千个字母的拼写系统,所以汉字中单
个字的信息熵会比英文字母高。
我们再看看为什么符号频率越均匀,信息熵越高。这是因为符号频
率越均匀,连续多个符号之间的关联性越小,也就是每个符号都很
关键,不能丢,所以单个符号信息量大。反之,符号出现的关联越
大,则有些符号就可以省略,说明这些符号提供的信息量少。
比如,在英语里,很多单词拼写中的字母组合经常是一起出现的,
例如“ing”“tion”等。在这些组合中,即使丢掉一个字母或出现次序错
误,通常也不妨碍阅读。在以下英文句子中,其中很多单词的拼写
都有次序错误,但是阅读起来完全无障碍,这就说明这些字母提供
的信息量少:
Aoccdrnig to a rscheearch at Cmabrigde Uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer be at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe.
中文字与字之间的关联就小多了,一句话丢掉很多字的话,这句话
的意思就很难还原了。而字与字之间关联小,意味着字与字之间出
现的频率差距不大,根据上一个字,不容易猜到下一个字。这时,
每个字提供的信息量就大。
那么,英语与中文的信息熵究竟有多大?2019年,国外知名数学博
主约翰·D. 库克发表了一篇博客文章,他计算了一下中文的信息熵。
他使用的中文词频数据是一位美国大学的研究者2004年发布在网上
的。在统计结果中,出现频率最高的汉字是“的”,大约是4.1%;第
二位是“一”,但频率只有1.5%。库克根据这个词频,计算出单个汉
字的信息熵是9.56。一般认为单个英文字母的信息熵为3.9,所以中
文的效率优势是很大的。

再比如,很多人玩过一个耳语传话的游戏:一些人以耳语的形式把
一句话传给下一个人,看最终的结果与开始的信息区别有多大。通
常,到六七个人之后,这句话就被改得面目全非。下次各位可以试
试传一句简单的英语,看看是不是容易保持原来的句子。
因此,当有外国人问“为什么你们中国人讲话总是这么大声”时,你
可以回答:“因为中文语音的信息熵低,我不得不大声说,确保对方
每个字都听清楚。”
另外,中文的影视作品都喜欢加上字幕,甚至还有弹幕文化,其基
础原因还是在于汉字信息熵高,语音信息熵低。中文视频打上字
幕,就不用太注意去听对白,观看时大脑就能放松些。而用英语打
弹幕的话,屏幕上都是长长的句子,会严重影响正常的视频收看,
所以说英语的地区就没法形成弹幕文化。
为什么香农将这个表征信息量大小的指标命名为“信息熵”?它与物
理中的“熵”有联系吗?当然是有联系的。物理中的“熵”,一种直观
的定义就是表征一个系统的“混乱”程度,越混乱,熵值越大,越有
序,熵值越低。
而对“混乱”的一种直观定义就是,当略微改变一个系统的状态时,
其与原先状态的可区分程度。举例来说就是,对一个井井有条、十
分干净整洁的屋子,稍微挪动一样东西,就很容易发现变化,而对
一个杂乱不堪的屋子,移动很多东西之后,感觉仍然是杂乱不堪
的。
在信息熵中,为什么语言越“混乱”,信息量越大?这一点可以从语
言的上下文关联度来考虑。英语单词中的字母相关度是很高的,比
如之前提到过的“ing”“tion”,还有各种前缀、后缀。

因为相关度大,在“ing”或者“tion”这样的后缀组合里拿掉一个字母,
完全不影响阅读,说明这些组合中单个字母提供的信息量很小。
中文的上下文关联度就低很多,所以单个汉字信息量就大。而上下
文关联度高,也可以理解为符号系统“有序”,而关联度小就是“无
序”,所以把信息量用“熵”来命名再恰当不过了,而且它确实与物理
中的“熵”有许多相似的性质。


http://www.ppmy.cn/devtools/144749.html

相关文章

CNN分类-卷积神经网络(Convolutional Neural Network)

CNN分类-卷积神经网络(Convolutional Neural Network) 源代码 CNN分类的用途介绍 什么是卷积神经网络(CNN)? 卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习…

Jenkins搭建并与Harbor集成上传镜像

Jenkins介绍 Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)的实践中。它帮助开发人员自动化构建、测试和部署过程,从而提高开发效率、代码质量和项目交付速度。通过丰富的插件支持…

四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能

经过前面3节完成金融问答机器人基本流程,这章将使用Gradio构建web应用,同时加入memory令提示模板带有记忆的,使用LCEL构建问答链。 加载向量数据库 from langchain.vectorstores import Chroma from langchain_huggingface import HuggingF…

OpenSSL 心脏滴血漏洞(CVE-2014-0160)

OpenSSL 心脏滴血漏洞(CVE-2014-0160) Openssl简介: 该漏洞在国内被译为"OpenSSL心脏出血漏洞”,因其破坏性之大和影响的范围之广,堪称网络安全里程碑事件。 OpenSSL心脏滴血漏洞的大概原理是OpenSSL在2年前引入了心跳(hearbea0机制来维特TS链接的…

【老白学 Java】HashSet 应用 - 卡拉 OK(五)

HashSet 应用 - 卡拉 OK(五) 文章来源:《Head First Java》修炼感悟。 通过前几篇文章,老白也了解了基本排序方法,接下来要讨论的是数据重复问题。 ArrayList 不会阻止添加重复数据,那是 Set 集合类的职责…

React工具和库面试题目(二)

1. 使用 Webpack 打包 React 项目时,如何减小生成的 JavaScript 文件大小? 为了减小生成的 JavaScript 文件大小,可以采取以下几种策略: 1.1 代码分割(Code Splitting) Webpack 支持通过 动态导入 和 React.lazy 等…

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍03-SQL注入联合查询注入(Union-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Web Dev Tools Android 项目常见问题解决方案

Web Dev Tools Android 项目常见问题解决方案 web-dev-tools-android Sample Android Application - MVVM, Clean Architecture, Modularization, Repository Pattern [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/web-dev-tools-android 项目基础介绍 Web…