我没时间去赢得胡特奖,所以也许你想用我的创意赢取 50 万欧元? 我没时间去赢得胡特奖,所以也许你想用我的创意赢取 50 万欧元?

我没时间去赢得胡特奖,所以也许你想用我的创意赢取 50 万欧元?

数据压缩我即将给你带来一大堆战利品,或者说,给你一个邓宁-克鲁格效应的绝佳例子。

我们先来说说奖金部分。早在2006年,马库斯·胡特(Marcus Hutter)就创立了胡特奖(维基百科首页),这是一项压缩竞赛。参赛者的目标是将一个1GB的文件压缩得越来越小,压缩效率每提高1%,奖金就会增加1%。最近的获奖者将文件大小从112,578,322字节压缩到了110,793,128字节,获得了7,950欧元的奖金。

当然,这不仅仅是 gzip-9,甚至也不仅仅是递归 gzip。Hutter认为,这类压缩研究将对人工智能研究做出切实贡献,正如他们所说,“压缩效果越好,预测效果就越好”。

那么,要想获胜需要什么呢?

编写能够压缩文件的程序只需要基本的编程技能,但要想赢得比赛,首先你需要理解最重要的现有数据压缩理念、概念和基本算法,然后还要了解基于这些理念(通过改进、调整和组合)的最新压缩技术。也许你有一个很棒的新想法,但如果不将其与现有理念相结合,单凭这个想法是没有获胜机会的。

他们的常见问题解答里有一些很棒的链接

邓宁-克鲁格效应

邓宁-克鲁格效应“是一种认知偏差,指在特定领域能力有限的人高估自己的能力”。

就我而言,我算是一个水平不错的程序员,多年来也阅读了大量的计算机科学书籍。然而,我并没有计算机科学或其他任何科学专业的学位,也从未编写过任何数据压缩代码。所以,很自然地,一旦我有了想法,就会觉得它具有革命性。

这种DK效应在世界上非常普遍。一个著名的例子是斯坦·庞斯和马丁·弗莱施曼的冷聚变理论。两人都是杰出的电化学家,甚至可以说是天才,但他们在核聚变领域却完全力不从心。真正的物理学家几乎没有花时间研究他们的工作,因为他们一眼就看出庞斯和弗莱施曼的理论是错误的。

我的想法

就我而言,我意识到自己正进入DK领域。以下是我可能应对胡特奖的方式。

首先我想指出的是,压缩器可以根据具体需求进行定制。它处理比赛中使用的维基百科摘录可能效果极佳,但处理一般文本时效果可能不佳。

最终的解决方案是分析数据,精确计算出哪些模式出现频率最高。例如,你可以检查并找出出现频率最高的 200 个字符的模式,然后说:“这里有一个出现了 20 次的 200 字符模式,我们将用一个从未出现过的符号来替换它。” 替换后的符号可以是 1 字节、2 字节等等——只要是当前文本中不存在的符号都可以。

首先,找到最长的重复子串,这方面已经有现成的算法。Copilot 或 ChatGPT 可以帮你编写代码来完成这项工作。假设(我并不确定)最长的重复子串是 800 个字符。那么,你需要建立一个数据库,其中包含 800 个字符的重复子串、799 个字符的重复子串,以此类推,直到找到最长的重复子串。

接下来,你需要分析各种组合,确定哪些字符串可以替换而不会影响其他子字符串。例如,一个重复出现 3 次的 800 个字符的字符串,最终只需要 800 个字符(解压缩字典条目)加上一个单字符符号。如果它出现 3 次,那么 2400 个字符就被替换成了 803 个字符。然后继续向下分析。

当然,棘手之处在于,一个重复 50 次的 50 个字符的子字符串可能存在于一个重复 1 次的 500 个字符的子字符串中,以此类推,因此每次替换后都需要不断重新计算数据库。

我知道肯定还有很多其他复杂情况,但是……嘿,我承认我符合邓宁-克鲁格效应。或许是一位名副其实的计算机科学家。