本文对数据压缩的「前世今生」进行简要的回顾,重点分析基于深度学习的有损压缩、无损压缩方法,对基于深度学习的数据压缩进行了探讨和展望。
1、数据压缩背景知识
众所周知,信息理论和机器学习之间具有很强的关联性,人们经常把它们称为「同一枚硬币的两面」。二者一个特别重要的联系体现在数据概率模型和数据压缩方法之间的本质等价性。香农的信源编码定理(Shannon-Fano Coding)可以看作是描述这一思想的基本定理,而哈夫曼编码(Huffman Coding)、算术编码(Arithmetic Coding)和最近发展起来的非对称数字系统(Asymmetric Numeral Systems,ANS)等都是经典的基于统计模型实现数据压缩的算法,即基于对信息中单个字符出现频率的统计而设计的。除去以统计概率为基础的方法外,经典的数据压缩方法还包括基于字典模型的压缩技术,例如 LZ77、LZ78、LZW 等,以及熵编码 (Entropy Encoding),游程编码 (Run-Length Encoding) 等。
我们在日常中经常用到的数据压缩的工具基本都是上述几种经典方法的变种、组合或优化,很少有单独使用某一种技术。例如,gzip 的压缩原理是:先使用 LZ77 算法的一个变种进行压缩,对得到的结果再使用静态或动态哈夫曼编码的方法进行压缩;bzip2 的压缩原理为:使用了一个游程编码器进行编码,接下来块排序压缩和 Move-to-Front(MTF ) 变换进一步产生大量相同符号,进一步使用另一个游程编码器进行编码。最后结果用 Huffman 编码,将一个消息头与其打包;LZMA 是 Deflate 和 LZ77 算法改良和优化后的压缩算法,而 Deflate 则是同时使用了 LZ77 算法与哈夫曼编码的一个无损数据压缩算法。但是,面对大数据时代的数据处理,传统的数据压缩方法显得越来越力不从心,无法满足大体量、快速增长和结构复杂等特征的数据压缩,尤其是实时数据压缩的处理要求。
近年来,机器学习领域经历了爆炸式的发展,一些研究人员使用传统神经网络模型在数据压缩领域获得了较好的效果。将原始图像经由神经网络处理后,仅需存储神经网络权重而无需存储图像本身的信息,从而在不降低图像质量的情况下获得了较高的压缩比。以此为基础,将神经网络与其它压缩技术结合、改进神经网络结构、改进神经网络的训练算法等,进一步推进了神经网络在数据压缩中的应用。但是,神经网络是浅层网络,模型的收敛速度、稳定性、权值更新的有效性等都存在不足,此外,神经网络依赖于有标签的预训练数据,这在实际应用场景中很难满足。