【问题标题】:How to compress sequences using a predictive probabilistic model?如何使用预测概率模型压缩序列?
【发布时间】:2021-08-25 06:33:31
【问题描述】:

假设我们有由字母表中的符号组成的序列,其中包含 50 个符号。因此,每个符号都可以用 7 位编码 (2^7 = 64 > 50)。这意味着每个给定的符号序列都可以表示为 0 和 1 的序列。

现在,让我们假设序列中的符号不​​是完全随机的,因此它们在某种程度上是可预测的。更详细地说,给定序列中的前 N ​​个符号,我们可以估计每个符号作为序列中下一个符号的可能性有多大。例如,我们可以说A 预计出现的概率为 0.01,B 预计出现的概率为 0.3,以此类推。

我相信这样的预测模型可以用来压缩数据。我的问题是应该怎么做。或者,更详细地说,使用预测模型压缩数据的最佳方法是什么。


我朝以下方向思考。在给定阶段,对于所有符号,我们都有估计的概率,因此可以根据它们的概率对所有符号进行排序(从最可能的符号到最不可能的符号)。然后第一个符号用0编码,第二个用1编码,第三个用00编码......所以,编码是:

[0, 1, 00, 01, 10, 11, 000, 001, ..., 111110, 111111]

以这种方式,通常符号将获得具有少量比特的编码。但是,这些编码包含逗号。例如,原始的符号序列可以表示为:

[0, 00, 1, 10, 0, 0, 1, 0110, ...]

而且逗号不在字母表中。

我还考虑了按概率排序的列表中符号的以下编码:

[0, 10, 110, 1110, 11110, 111110, ....]

然后0用作分隔符(而不是逗号),1的个数代表符号在列表中的位置。但同样,我不确定这是使用比特的最有效方式以及利用预测模型的最佳方式。

【问题讨论】:

  • 我会说最好读一本关于压缩技术的书,例如ceng2.ktu.edu.tr/~cakir/files/sistemlab/…
  • 对于预测编码,您使用您的模型进行预测,并对残差(误差)进行编码,其思想是误差通常很小,并且有利于编码的分布。第二部分是关于可变长度代码。分隔符问题可以通过例如前缀代码来解决。

标签: compression entropy information-theory


【解决方案1】:

是的,这样的预测模型可以用来压缩数据,只要该模型能够很好地预测下一个符号。这正是 arithmetic coding 所设想的那种概率模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2021-05-31
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多