香农熵的第一个流行应用是 研究人类语言的统计特性。 我们欠香农本人的第一个申请权 当他介绍关于通信理论的新想法。 在语言学中,熵与语言冗余和频率密切相关 某些字母和单词组合的出现也称为搭配和技术上的 被称为语法,n-语法可以是字母,字母对,单词或句子 是一种粗粒度的语言学习方法,有助于理解 熵与经典信息理论。 在这里我们可以看到n-gram的频率计算 20种不同语言的联合国“世界人权宣言” 说明从这些n-gram频率分布计算的熵率。 语言的熵是对概率信息内容的估计 该语言中的每个字母也是衡量其可预测性和冗余度的指标。 只需绘制书面或口头语言中的 词语分布图,就能破解密码。 我们可以将人类语言视为某种关于人类现实的加密代码, 用来描述对象和事件。 如果你想从头开始破解这样的代码或语言,一种策略是绘制单词的分布, 因为任何两种语言在共享某些现实或描述相同的人类现实时, 都会有一种强烈的倾向, 即以大致相同的频率使用单词。 因此,例如,如果两种语言都有冠词和介词,您也可以轻松识别和匹配它们, 因为它们可能是最常用的, 即使您可能不知道哪些单词是另一种语言中的冠词或介词。 例如,在这里,我们根据联合国人权宣言 英文和西班牙文文本中的单词分布绘制了两个词云。 单词的大小和颜色对应于该单词 在其相应文本中的出现频率。 人们可以看到,运行并行文本会发现单词含义 和单词大小之间存在很强的对应关系。 这甚至适用于不同的文本,而不仅仅是带有翻译的文本。 平均而言,最常见的相同单词总是出现在顶部。 在这个特殊情况下,我们发现这段短文本中最常见的 20 个单词 揭示了两种语言的大量结构 因为它们只能通过查看词频来揭示彼此的含义: 这种频率分析实际上是破解代码的最基本策略之一, 因为有关加密消息的 任何最少信息都会泄露其分发中的一些秘密。 这也是经典信息论中一些定理的基础, 例如通过替换来保证完全保密 在选择代码来隐藏分布中的对应关系时,将高频词与低频词进行比较, 但完美的保密实际上很难实现, 通常任何人为错误都会导致代码最终被破解。 正如我们之前所说,语言可以通过字母或单词的分布来研究, 基本单位的选择非常重要 因此,很自然地会问, 当采用从一个字母到两个字母等不同数量的字母块时, 字符串的熵会是什么样子。 为了说明这一点,我们采用 0 和 1 交替的周期序列 正如我们之前所看到的,假设均匀分布,该序列将具有最大熵, 这表明如果我们将单个位视为单位或微状态,那么它是随机的,因为 我们知道这个序列中 0 的数量与 1 的数量一样多。 一位是可能的最细粒度。 然而,显然这个序列不应该是随机的, 并且一次取两位块将捕获该序列中的规律性。 因此,看起来序列中存在一些粒度或块, 在这些粒度或块上应用熵会错过或捕获序列的统计规律。 那么,如何处理这种对粒度或块大小的高度依赖呢? 克服这个问题的一种方法是始终 寻找最小化序列熵的规律性。 我们将研究对象的熵作为增加粒度的函数的过程称为熵率, 并且对于不同颗粒或块长度的每个熵值, 我们将其称为块熵。 但请注意,同一概念的变体具有不同的名称, 但大部分相同或基于相似的想法。 例如,如果查看这些图,我们可以看到, 对于交替出现的 1 和 0 的字符串,存在捕获字符串周期性的粗粒度长度, 以及破坏字符串周期性的其他长度,因此所有可能的熵的最小值块大小 达到序列大小的一半将捕获统计规律。 因此,香农熵的最佳版本可以通过可变块大小的函数来实现, 其中最小值最好地捕获字符串的任何(可能的)周期性。 这里用 3 个长度为 12 位的字符串进行说明,一个是规则的,一个是周期性的, 另一个是随机的。 因此,当存在某种规律性时,可以通过某些块大小来捕获这种规律性。 请注意,当块大小等于或大于字符串长度的一半时, 永远不应该取最小值,因为这会导致只有一个块,因此会自动生成一个块。 熵值为零,但单个块的熵没有意义, 因此不应考虑。 在我们的上下文中,熵的另一个有用应用是多维对象。 例如,我们有时会将熵应用于二维对象,其中 粒度分析将在于打破一个大的数组分成更小的数组或块。 下面是一个 24 x 24 位数组分解 为更小的数组或大小为 6 的块的示例。 我们这样做是因为我们将介绍的一些方法可能只处理小块, 并且我们希望能够将香农熵与这些其他新方法进行比较 近似算法复杂度。 熵对字符串和序列以外的对象 的应用将完全相同。 因此,例如,就像字符串和序列的情况一样, 对像这样的单色单元块应用熵将使熵等于零: 你可以自己测试一下,无论块有多大, 它的熵总是为零:当然,对于任何块粒度都是如此: 但一旦物体表现出某种多样性, 香农熵将偏离零,如下例所示: