6.信息论(一):信息量、熵和最优编码

前言

信息论是由克劳德·香农发展,用来找出信号处理与通信操作的基本限制,如数据压缩、可靠的存储和数据传输等。自创立以来,已被应用多个领域,例如自然语言处理(NLP)、机器学习等领域。

定长编码(Block Codes)

让我们从一个例子开始。小明酷爱动物,日常谈吐中经常提及各种动物,包括:狗、猫、鱼和鸟。一天,小明见到小红(原谅我这么俗的名字),两个人决定用二进制的方式来交流。为了交流方便,小明和小红决定制定一套编码规则

编码映射

此时,若小明要发出“狗 猫 狗 鸟”的信息,需要完成以下过程:

编码过程

通过以上三个过程,便可以将“狗 猫 狗 鸟”转化为二进制了。

变长编码(Variable Codes)

实际中,通讯往往需要付费,假设通讯按位(bit)收费。为了省钱,小明和小红需要寻找合适的编码策略。在设计编码策略中,小红统计了小明的说话

词分布

此时,若按照上面的定长编码,每个字的平均编码长度

L(x)=2×12+2×14+2×18+2×18=2

若想进一步压缩平均编码长度,变长编码是一种有效的手段。变长编码的基本思想:出现频率高的字符使用短编码,出现频率低的字符使用长编码。(你可能会问,为什么不让所有的编码都使用短编码?嘿嘿,都使用短编码,还能实现一一对应吗?)基于上述思想,小明和小红重新指定了一套新的编码策略:

词分布

此时,每个字的平均编码长度为

L(x)=1×12+2×14+3×18+3×18=1.75

显然,新的策略能够帮小明和小红省很多钱。那么,小明和小红是如何设计的呢?

无损编码(lossless compression)

为了便于接下来的描述,以下图为例介绍几个名称

词分布

其中狗、猫、鱼等称为源符号, 0 01 110 等称为码字,整个映射使用 C(x) 表示。

无损编码

小明和小红的交流中,首先要保证信息的无损性,即保证编码后的信息能够无损的复原。若使用定长编码,复原信息轻而易举便可实现,而变长编码则不同。假如使用上图,此时小明给出的代号为

词分布

根据约定好的码表,小红既可以理解成“狗 狗 鸟 狗”,也可以理解成“狗 猫 鱼”。显然,这是小明和小红不愿意看到的。通过查阅资料,小明和小红发现他们遇到的问题是“无损编码”问题:

无损编码是一类数据压缩算法,其压缩的数据能够无损的复原为原始数据。

C(x) 是无损编码,它需要是:

  • 非奇异编码(Non-singular code): x1x2C(x1)C(x2)

在实际中,我们往往需要一次编码一系列字符,而不是一次编码一个字符,因此它需要满足:

  • 可扩展编码(Extension of a code): C(x1,...,xn)=C(x1)...C(xn)
  • 唯一可译解码(Unique decodability): xnixmjC(xni)C(xmj)
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值