最小熵原理(一):无监督学习的原理

https://spaces.ac.cn/archives/5448/comment-page-1?replyTo=9054

话在开头#

在深度学习等端到端方案已经逐步席卷NLP的今天,你是否还愿意去思考自然语言背后的基本原理?我们常说“文本挖掘”,你真的感受到了“挖掘”的味道了吗?

无意中的邂逅#

前段时间看了一篇关于无监督句法分析的文章,继而从它的参考文献中发现了论文《Redundancy Reduction as a Strategy for Unsupervised Learning》,这篇论文介绍了如何从去掉空格的英文文章中将英文单词复原。对应到中文,这不就是词库构建吗?于是饶有兴致地细读了一番,发现论文思路清晰、理论完整、结果漂亮,让人赏心悦目。

尽管现在看来,这篇论文的价值不是很大,甚至其结果可能已经被很多人学习过了,但是要注意:这是一篇1993年的论文!在PC机还没有流行的年代,就做出了如此前瞻性的研究。虽然如今深度学习流行,NLP任务越做越复杂,这确实是一大进步,但是我们对NLP原理的真正了解,还不一定超过几十年前的前辈们多少。

这篇论文是通过“去冗余”(Redundancy Reduction)来实现无监督地构建词库的,从信息论的角度来看,“去冗余”就是信息熵的最小化。无监督句法分析那篇文章也指出“信息熵最小化是无监督的NLP的唯一可行的方案”。我进而学习了一些相关资料,并且结合自己的理解思考了一番,发现这个评论确实是耐人寻味。我觉得,不仅仅是NLP,信息熵最小化很可能是所有无监督学习的根本。

何为最小熵原理?#

读者或许已经听说过最大熵原理最大熵模型,现在这个最小熵原理又是什么?它跟最大熵不矛盾吗?

我们知道,熵是不确定性的度量,最大熵原理的意思就是说我们在对结果进行推测时,要承认我们的无知,所以要最大化不确定性,以得到最客观的结果。而对于最小熵原理,我们有两个理解角度:

1、直观的理解:文明的演化过程总是一个探索和发现的过程,经过我们的努力,越多越多的东西从不确定变成了确定,熵逐渐地趋于最小化。因此,要从一堆原始数据中发现隐含的规律(把文明重演出来),就要在这个规律是否有助于降低总体的信息熵,因为这代表了文明演化的方向,这就是“最小熵原理”。

2、稍严谨的理解:“知识”有一个固有信息熵,代表它的本质信息量。但在我们彻底理解它之前,总会有未知的因素,这使得我们在表达它的时候带有冗余,所以按照我们当前的理解去估算信息熵,得到的事实上是固有信息熵的上界,而信息熵最小化意味着我们要想办法降低这个上界,也就意味着减少了未知,逼近固有信息熵。

于是,我沿着“最小熵原理”这条路,重新整理了前人的工作,并做了一些新的拓展,最终就有了这些文字。读者将会慢慢看到,最小熵原理能用一种极具解释性和启发性的方法来导出丰富的结果来。

语言的信息#

让我们从考究语言的信息熵开始,慢慢进入这个最小熵原理的世界~

信息熵=学习成本#

《“熵”不起:从熵、最大熵原理到最大熵模型(一)》我们可以知道,一个对象的信息熵是正比于它的概率的负对数的,也就是

I(c)∼−logpc(1.1)(1.1)I(c)∼−log?pc

如果认为中文的基本单位是字,那么中文就是字的组合,pcpc就意味着对应字的概率,而−logpc−log?pc就是该字的信息量。我们可以通过大量的语料估算每个汉字的平均信息:

c=−∑c∈汉字pclogpc(1.2)(1.2)Hc=−∑c∈汉字pclog?pc

如果loglog是以2为底的话,那么根据网上流传的数据,这个值约是9.65比特(我自己统计了一些文章,得到的数值约为9.5,两者相当)。类似地,英文中每个字母的平均信息约是4.03比特。

这个数字意味着什么呢?一般可以认为,我们接收或记忆信息的速度是固定的,那么这个信息量的大小事实上也就相当于我们接收这个信息所需要的时间(或者所花费的精力,等等),从而也可以说这个数字意味着我们学习这个东西的难度(记忆负荷)。比如,假设我们每秒只能接收1比特的信息,那么按字来记忆一篇800字文章,就需要9.65×8009.65×800秒的时间。

中英文孰优孰劣?#

既然中文单字信息熵是9.65,而英文字母信息熵才4.03,这是不是意味着英文是一种更高效的表达呢?

显然不能这么武断,难道背英语作文一定比背诵汉语作文要容易么?

比如800字的中文作文翻译成英文的话,也许就有500词了,平均每个英文4个字母,那么信息量就是4.03×500×4≈9.65×8004.03×500×4≈9.65×800,可见它们是相当的。换句话说,比较不同文字单元的信息量是没有意义的,有意义的是信息总量,也就是说描述同样的意思时谁更简练。

当两句话的意思一样时,这个“意思”的固有信息量是不变的,但用不同语言表达时,就不可避免引入“冗余”,所以不同语言表达起来的信息量不一样,这个信息量其实就相当于记忆负荷,越累赘的语言信息量越大,记忆负荷越大。就好比教同样的课程,有的老师教得清晰明了,学生轻松地懂了,有的老师教得哆里哆嗦,学生也学得很痛苦。同样是一节课程,本质上它们的知识量是一样的,而教得差的老师,表明授课过程中带来了过多的无关信息量,这就是“冗余”,所以我们要想办法“去冗余”。

上述中英文的估计结果相当,表明中英文都经过长期的优化,双方都大致达到了一个比较优化的状态,并没有谁明显优于谁的说法。

套路之路#

注意,上面的估算中,我们强调了“按字来记忆”,也许我们太熟悉中文了,没意识到这意味着什么,事实上这代表了一种很机械的记忆方式,而我们事实上不是这样做的。

念经也有学问#

回顾我们小时候背诵古诗、文言文的情景,刚开始我们是完全不理解、囫囵吞枣地背诵,也就是每个字都认识、串起来就不知道什么含义的那种,这就是所谓的“按字来阅读”了。很显然,这样的记忆难度是很大的。后来,我们也慢慢去揣摩古文的成文规律了,逐渐能理解一些古诗或文言文的含义了,背诵难度就会降下来。到了高中,我们还会学习到文言文中“宾语前置”、“定语后置”之类的语法规律,这对我们记忆和理解文言文都是很有帮助的。

重点来了!

从古文的例子我们就能够感受到,像念经一样逐字背诵是很困难的,组词理解后就容易些,如果能找到一些语法规律,就更加容易记忆和理解了。但是我们接收(记忆)信息的速度还是固定的,这也就意味着分词、语法这些步骤,降低了语言的信息量,从而降低了我们的学习成本!

再细想一下,其实不单单是语言,我们学习任何东西都是这样的,如果只有少数的内容要学习,那么我们强行记住就行了,但学习的东西比较多时,我们就试图找出其中的“套路”,比如中国象棋中就分开局、中局、残局,每种局面都有很多“定式”,用来降低初学者的学习难度,而且也是在复杂局面中应变的基础;再好比我们有《孙子兵法》、《三十六计》,这些都是“套路大全”。通过挖掘“套路”来减轻逐一记忆的负担,“套路”的出现就是一个减少信息量的过程。

说到底,念经念多了,也能发现经文的套路了。

以不变应万变#

一言以蔽之,我们接收信息的速度是固定的,所以加快我们的学习进度的唯一方法就是降低学习目标的冗余信息量,所谓“去芜存菁”,这就是NLP中的最小熵原理了,也就是一开始所提到的“去冗余”,我们可以理解为是“省去没必要的学习成本”。

事实上,一个高效的学习过程必定能体现出这个思想,同样地,教师也是根据这个思想来设计他们的教学计划的。在教学的时候,教师更倾向于讲授那些“通解通法”(哪怕步骤多一点),也不会选择每一题都讲一种独特的、巧妙的解法;在准备高考时,我们会努力摸索各种出题套路、解题套路。这些都是通过挖掘“套路”来降低信息熵、从而降低学习成本的过程,“套路”就是“去冗余”的方法。

“套路”即“定式”,有了足够多的套路,我们才能以不变应万变。所谓“万变不离其宗”,这个“宗”,也就是套路了吧。当“套路”过多时,我们又会进一步寻找“套套路”——即套路的套路,来减轻我们记忆套路的负担,这是一个层层递进的过程。看来,将个体现象上升为套路,正是人类的智能的体现呢~

好了,空话不宜多说,接下来我们就正式走上修炼套路的旅途。

转载到请包括本文地址:https://spaces.ac.cn/archives/5448

更详细的转载事宜请参考:《科学空间FAQ》

如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。

如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!

打赏

如果您需要引用本文,请参考:

苏剑林. (2018, Apr 18). 《最小熵原理(一):无监督学习的原理 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/5448

原文地址:https://www.cnblogs.com/feng9exe/p/11626080.html

时间: 2024-10-17 17:49:46

最小熵原理(一):无监督学习的原理的相关文章

Rsync无差异同步原理和实现

4.Rsync无差异同步原理和实现.md 无差异同步   在生产环境中我们可能会遇到这样的状况,我们的客户端在服务端去拉取数据的时候,首先一点,对于拉取我们的服务端有的那么我们客户端肯定有.但是我们的客户端有的服务端就不一定是有的了.反之如果是推送的话,那么我们客户端有的我们的服务端那肯定是有的,但是我们的服务端有的我们的客户端不一定有.所以对于这种当服务端删除一条数据之后为了保障我们的客户端也能在下一次同步的时候进行删除的这种情况我们就需要采取无差异同步,保障数据的一致性. 实现方法 --de

Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1.1.3    如何选择K值 1.1.4    Spark MLlib 实现 k-means 算法 1.2    Mixture of Gaussians and the EM algorithm 1.3    The EM Algorithm 1.4    Principal Components

无监督学习小记(参考)

下面凌乱的小记一下无监督学习 无监督学习->聚类 降维 聚类:数据相似性 相似性的评估:两个数据样本间的距离 距离:欧氏距离 曼哈顿距离 马氏距离 夹角余弦 sklearn 聚类算法 sklearn.cluster,如k-means 近邻传播 DBSCAN等 标准的数据输入格式:[样本个数,特征个数]定义的矩阵形式 介绍sklearn.cluster |算法名称|参数|可扩展性|相似度度量| |-|-|-|-| 降维 主成分分析PCA PCA常用于高维数据集的探索与可视化,还可以用于数据压缩和预

机器学习的动机与应用,监督学习与无监督学习

先抛出个例子,根据房子的面积来判断房子的价格. 什么是监督学习,大概了解就是有标准答案的训练,比如上面那个房子的问题,之前给的training examples都是一个x对应特定的y,就相当于有标准答案,这就是监督学习.supervised learning(我理解的) 无监督学习就是没有标准答案的,往往是会根据数据的某些特征分类,分群.(clustering) 强化学习 reinforcement learning,又称奖励学习,评价学习,key reward function.原理和训练狗一

(转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地

[重磅]无监督学习生成式对抗网络突破,OpenAI 5大项目落地 [新智元导读]"生成对抗网络是切片面包发明以来最令人激动的事情!"LeCun前不久在Quroa答问时毫不加掩饰对生成对抗网络的喜爱,他认为这是深度学习近期最值得期待.也最有可能取得突破的领域.生成对抗学习是无监督学习的一种,该理论由 Ian Goodfellow 提出,此人现在 OpenAI 工作.作为业内公认进行前沿基础理论研究的机构,OpenAI 不久前在博客中总结了他们的5大项目成果,结合丰富实例介绍了生成对抗网络

人工智能大牛的新年启示:未来要看无监督学习、自然语言处理

过去的新春佳节让程序员们迎来了一个难得的长假休息,但人工智能在假期一直在进步,我们看到了Facebook人工智能负责人Yann LeCun.香港科技大学计算机与工程系主任杨强等人工智能大牛对人工智能热潮的冷静思考,也看到谷歌研发出特定条件下超越人类水平的人工智能游戏系统.下面就来看看大牛们给我们的人工智能新年启示(同时也感谢"机器之心"和36kr的翻译工作). Yann LeCun:IBM True North是"草包族科学" 无监督学习是未来  Facebook人

『cs231n』无监督学习

经典无监督学习 聚类 K均值 PCA主成分分析 等 深度学习下的无监督学习 自编码器 传统的基于特征学习的自编码器 变种的生成式自编码器 Gen网络(对抗式生成网络) 传统自编码器 原理 类似于一个自学习式PCA,如果编码/解码器只是单层线性的话 自编码器编码解码示意图: 特征提取过程中甚至用到了卷积网络+relu的结构(我的认知停留在Originally级别) 编码&解码器可以共享权值(在我接触的代码中一般都没共享权值) 损失函数推荐L2 应用 由于重建已知数据是个没什么用的过程,所以自编码器

【ML入门系列】(三)监督学习和无监督学习

概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervised learning) 定义 监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类. 非监督学习:直接对输入数据集进行建模,例如聚类. 半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数. 区别 是否有监督(supervise

聊聊机器学习中的无监督学习

机器学习分为监督式机器学习.无监督式机器学习和半监督式机器学习.其划分的标准是训练样本是否包含人为标注的结果. (1)监督式机器学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果.监督学习的训练集要求是包括输入和输出,也可以说是特征和目标.训练集中的目标是由人标注的.常见的监督学习算法包括回归分析和统计分类. (2)无监督式机器学习:与监督学习相比,训练集没有人为标注的结果.常见的无监督学习算法有聚类. (3)半监督式机器学习:是监督学习和无监督学习相结合的一种