深度学习助力数据压缩,一文读懂相关理论

简介: 在网络带宽有限的年代,数据压缩显得尤为可贵。还记得美剧硅谷第一季里面大杀四方的数据压缩算法让 pied piper 公司炙手可热。高效的数据压缩使得大型网络应用能够在移动端成为可能,其前景非常诱人。大数据时代的来临,数据的体量和数据的增长速度都达到了一个前所未有的高度。随着 5G 技术的快速发展,边缘计算、物联网、联邦学习等应用需求及应用场景越来越多。在传输网络和存储能力有限的情况下,数据压缩技术发挥了越来越重要的作用。在传统数据压缩算法不断发展的同时,近年来深度学习网络也应用于数据压缩中获得了很好的效果。

本文对数据压缩的「前世今生」进行简要的回顾,重点分析基于深度学习的有损压缩、无损压缩方法,对基于深度学习的数据压缩进行了探讨和展望。

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 算法与哈夫曼编码的一个无损数据压缩算法。但是,面对大数据时代的数据处理,传统的数据压缩方法显得越来越力不从心,无法满足大体量、快速增长和结构复杂等特征的数据压缩,尤其是实时数据压缩的处理要求。


近年来,机器学习领域经历了爆炸式的发展,一些研究人员使用传统神经网络模型在数据压缩领域获得了较好的效果。将原始图像经由神经网络处理后,仅需存储神经网络权重而无需存储图像本身的信息,从而在不降低图像质量的情况下获得了较高的压缩比。以此为基础,将神经网络与其它压缩技术结合、改进神经网络结构、改进神经网络的训练算法等,进一步推进了神经网络在数据压缩中的应用。但是,神经网络是浅层网络,模型的收敛速度、稳定性、权值更新的有效性等都存在不足,此外,神经网络依赖于有标签的预训练数据,这在实际应用场景中很难满足。


2、基于深度学习的数据压缩


深度学习的引入有效解决了传统方法存在的问题。与传统压缩技术相比,基于深度学习的方法具有下列的天然优势:


  1. 由于深度学习的参数是基于大量实际数据推导出来的,而传统的数据压缩编码方法主要是基于先验知识手工构建的,因此深度学习的优良内容自适应性优于基于信号处理的模型。

  2. 深度学习的方法有效利用了较大的接受域 (Receptive Field),因此不但能利用相邻的信息还可以利用远距离的样本提高编码效率,但传统的编码工具只利用相邻的样本,难以利用远距离的样本。

  3. 基于深度学习的压缩方法是灵活的,可以根据特定的域特征进一步减少比特率,同时实现快速处理,深度学习的内部表示适合于现代数据处理。


与传统神经网络压缩技术相比,基于深度学习的方法优势在于:(1)基于多层网络结构,深度学习模型具有较好的非线性映射能力,因此能有利于学习到数据(特别是图像)的深层次特征。(2)深度学习模型通过多层学习和权值微调的过程,提高了训练速度,从而能满足大体量数据压缩的要求。(3)更深的学习层次能够更加有效的去除掉冗余数据特征,从而获得更高的压缩比。


到目前为止,随机神经网络(Random Neural Network)、卷积神经网络(Convolutional Neural Network,CNN)、递归神经网络(Recurrent Neural Networks,RNN)、生成对抗网络(Generative Adversarial Networks,GAN)、变分自动编码器((Variational) Auto-Encoder,VAE)等都陆续应用到了数据压缩中。本文从近两年重要学术会议的研究成果中选择了基于 GAN 和 VAE 的两种深度学习数据压缩技术进行分析与讨论。


1. GAN 在有损压缩中的应用


论文标题:Deep generative models for distribution preserving lossy compression,NIPS2018


地址:https://arxiv.org/abs/1805.11057?context=stat


这篇文章提出了一种分布保持的有损压缩系统(Distribution-Preserving Lossy Compression,DPLC)。该系统应用于图像压缩场景,在不同的压缩比率下编码器能够生成与原始数据分布一致的编码,其解码器则以零比特率生成独立同分布样本,然后随着比特率的增加逐渐产生包含更多原始图像内容的重构,最终在足够高的比特率情况下实现完美的重建。


对于随机变量 X,令 P_X 表示 X 的分布,E_X[X] 表示期望。W~P_X 表示 W 遵从 P_X 的分布,X~Y 表示 X 和 Y 为同分布的。在标准的有损压缩系统中,编码器的任务是生成编码 E: X→W,从而将原始输入编码为 R 比特的码,解码器的任务是将码映射回原始空间 D: W→X,同时最小化某些失真度量 d:XxX,任务目标函数表示为:


微信图片_20211202062816.jpg


在传统压缩方法中,E 和 D 具有典型确定性,因此不同的重构输入的数量 X^:=D(E(x)) 由 2^R 限定,这就导致重建的 X^会出现降质的问题,例如引起图像的模糊、模块化等。为了解决这一问题,需要向目标函数中增加一个约束项,即「重构实例的分布遵循训练数据的分布」:


微信图片_20211202062836.jpg


增加这一约束项相当于学习了 R=0 时一般未知分布 P_X 的精确生成模型,考虑到生成模型,自然地我们就想到了引入 GAN。为了减少上式的松弛对平均值问题的偏差,将 D 分解为 D=G o B,其中 G 为生成模型(从固定的先验分布 P_Z 中提取样本作为输入,训练以最小化 P_G(Z) 和 P_X 之间的差异),B 为随机函数(与原目标函数 E 一起训练以最小化固定值 G 的失真)。瓦瑟斯坦距离(Wasserstein Distance)可以被定义为任意的运输成本函数,因此适用于本文对于量化重建质量的失真度量 D。对于随机变量 X 和 Y,Wasserstein 距离为:


微信图片_20211202062859.jpg


其中 P(P_X,P_Y) 是 (X,Y) 的所有联合分布的集合。令 (X,d』) 表示一个度量空间,我们设置 c(x,y)=d』(x,y) 时,通过 Kantorovich-Rubinstein 对偶得到:


微信图片_20211202062936.jpg


其中 F1 是有界 1-Lipschitz 函数的一类 f:X->R。本文使用的生成模型 G 通过最小化 P_X 和 P_G(Z) 之间的 Wasserstein 距离来学习,学习的方法有两种(i)通过 Wasserstein 自动编码器(Wasserstein Autoencoder,WAE),其中 G o F 参数化 P_X 和 P_G(Z) 之间的耦合,或者(ii)通过 Wasserstein GAN(WGAN)。本文提出 Wasserstein++,将 WAE 和 WGAN 结合起来。将经过训练的生成模型 G 与利用速率约束编码器 E 和随机函数 B 来实现本文提出的 DPLC 系统,从而在保证 P_X 和 P_X^在所有速率下都相似的同时,将 X 和 X^之间的失真减至最小。完整的 DPLC 见图 1。


微信图片_20211202062957.jpg图 1. DPLC 总体结构


压缩过程为了从原始数据中学习 G、B 和 E,将每个分量参数化为深度神经网络,并通过随机梯度下降(SGD)求解相应的优化问题。如前所述,G*可以通过 WGAN 或 WAE 学习。由于 WAE 框架自然的包含了一个编码器,它能保证潜在空间 Z 的结构易于编码,而使用 WGAN 则不具有这样的特性。在本文的实验中,我们观察到使用 WAE 的图像中边缘的锐化程度弱于 WGAN。另一方面,由于 WAE 目标由于重建误差项而严重惩罚了模式丢失,因此 WAE 比 WGAN 更不容易发生模式丢失。为了结合这两种方法的优点,我们通过 Wd 的凸组合,提出了 Wd 的原形式和对偶形式的新的优化组合:


微信图片_20211202063051.jpg


基于 G(Z) 或 G(F(X) 的伪样本训练 f,由于 F(X) 和 P_Z 之间的不匹配(在优化过程开始时更为明显),这些样本一般不会遵循相同的分布。因此需要做下面的调整:


  • 基于 G(Z.~) 的样本训练 f,其中 Z.~=UZ+(1-U)F(X),U~Uniform(0,1)。
  • 基于 F(X) 中的样本训练 G,计算 WGAN 和 WAE 的损失项。


本文在两个标准的生成性建模基准图像数据集上完成实验,CelebA 和 LSUN 卧室,其中图像都缩小到 64x64 分辨率。图 2 给出了不同方法的测试 MSE(越小越好)、重建 FID(越小越好)和条件像素方差 PV(越大越好)。CelebA 的结果显示在最上面一行,LSUN 卧室的结果显示在最下面一行。本文提出的 DPLC 模型的 PV 随着速率的降低而稳定地增加,也就是说,它们生成的有效图像内容逐渐多于 GC。


微信图片_20211202063127.jpg

图 2. 不同方法的实验结果


2. VAE 在无损压缩中的应用:


论文标题:Bit-Swap: Recursive Bits-Back Coding for Lossless Compression with Hierarchical Latent Variables, ICML2019


地址:https://arxiv.org/abs/1905.06845


这篇文章探讨了 Variational Auto-Encoding (VAE) 在压缩技术中的应用,提出了一种 Bit-Swap 无损压缩方法。根据经典的统计理论数据压缩,任何数据分布都可以转换成一种无损编码,在这种编码中,每个数据点都被编码成一个与模型分配的负对数概率相等的比特数。当模型与真实的数据分布相匹配时,可以获得最佳的预期码长。因此,基于概率似然性设计的无损压缩算法需要解决两个问题:一是利用模型逼近真实数据分布,二是找到实用的压缩算法满足与此模型兼容的条件并保证码长为-log p_θ(x)。本文引入 VAE,对原始概率分布进行多层分解,利用潜在变量模型计算原始数据的近似边缘分布,与经典 ANS 压缩技术相结合,实现快速的压缩和解压缩。


给定离散原始数据 x = (x1,..., xD),其分布表示为 p_data,基于概率似然性设计的 ANS 无损压缩机制为:使用概率 p_θ(x),当其码长满足-log p_θ(x)=-log p_data(x) 时,得到的平均码长 E[-log p_θ(x)] 接近数据 H(x) 的熵,即得到最优压缩方案的平均码长。ANS 使用一元概率分布或完全分解概率分布 p(x) 来编码原始符号向量 x,从而产生-log p(x) 比特位。ANS 算法的状态是具有堆栈结构的比特流:每次编码符号时,其比特位都被推到堆栈的最右侧;每次解码符号时,比特位都从堆栈的最右侧弹出。图 3 给出 ANS 的工作机制。


微信图片_20211202063159.jpg

图 3. ANS 以类似堆栈的方式操作位流


本文使用潜在变量模型计算原始数据 p_data(x) 的近似边缘分布 p_θ(x):


微信图片_20211202063238.jpg


其中 z 为潜在变量。VAE 引入推理模型 q_θ(z|x) 来逼近模型后验概率 p_θ(z|x):


微信图片_20211202063258.jpg


由于 D_KL>=0,通过联合优化证据下限(Evidence Lower Bound,ELBO)和 log p_θ(x) 的下限,可以得到推理模型和生成模型如下:


微信图片_20211202063320.jpg


编码端的处理流程如下:


  • 发送者发送一个使用先验 p(z) 和 x 进行编码得到的潜在样本 z~q_θ(z|x),使用 p_θ(x|z) 进行编码;
  • 使用 q_θ(z|x) 从比特流中解码得到 z,之后从比特流中减去-log q_θ(z|x) 长度的比特位;
  • 使用 p_θ(x|z) 对 x 进行编码,向比特流中增加-log p_θ(x|z) 长度的比特位;
  • 使用 p(z) 对 x 进行编码,向比特流中增加-log p_(z) 长度的比特位;
  • 最终得到了一个长度为 N_total:=N_init+log q_θ(z|x)-log p_θ(x|z)-log p_(z) 比特位的比特流,并发送给接收端。


接收端通过将 ANS 初始化为接收到的比特流来解码数据,然后以相反的顺序进行,并交换编码和解码操作。


当模型具有许多潜在变量时,在传递初始比特流 N_init 时就会带来效率问题(这也是深度学习大量参数所带来的问题)。为解决这一问题,本文使用层次潜在变量模型,即具有多个潜在变量且其采样过程服从形式的马尔可夫链的 VAE,如图 4:


微信图片_20211202063354.jpg


图 4. 层次潜在变量模型


此时近似边缘分布 p_θ(x) 为:


微信图片_20211202063420.jpg


为每个隐层 z_i 定义推理模型 q_θ(z_i|z_(i-1)),这样可以基于变分界限计算边缘概率 p_θ(x),此时 ELBO 目标函数为:


微信图片_20211202063443.jpg


在本文提出的 Bit-Swap 模型中,生成模型和推理模型的采样过程都服从随机变量之间的马尔可夫链依赖关系。与标准 VAE 的处理类似,数据 x 是根据潜在变量 z_1 生成的。然而,z_1 不再是固定的先验值,而是由第二个潜在变量 z_2 生成的。类似的,z_2 也不是固定先验值,而是由第三个潜在变量 z_3 生成的,依此类推。这些嵌套依赖项使我们能够递归地应用 bits back 参数。我们可以对第一个潜在变量应用 bits back 参数的前两个步骤:首先解码 z_1,然后直接编码 x,这将向比特流中添加新的比特位,z_2,L 的进一步解码操作将需要较少的初始比特来继续。以类似的方式递归地应用第二个潜在变量 z_2 的 bits back 参数:首先解码 z_2,然后编码 z_1。Bit-Swap 所需的初始位的数量上限为:


微信图片_20211202063504.jpg


本文提出的 Bit-Swap 数据压缩算法完整的算法如下:


微信图片_20211202063522.jpg


以三个隐藏层为例,Bit-Swap 的过程如图 5 所示。


微信图片_20211202063545.jpg


图 5. Bit-Swap 过程示意


本文在 ImageNet 的 32×32 像素随机块上训练分层潜变量模型。为了测试,独立于测试集拍摄了 100 幅图像。100 幅图像的压缩比见表 1。这 100 幅图像被裁剪成每边 32 像素的倍数,这样就可以用 32 个像素块来拟合一个网格。网格被视为一个数据集,必须按顺序处理才能被压缩。作者在基线方案中使用相同的裁剪图像,而不是先将图像分成 32 x 32 像素的块。


微信图片_20211202063619.jpg表 1. ImageNet 100 幅图像的压缩比(未缩放和裁剪)


关于深度学习在数据压缩中的应用,作者单独建立了研究主页,更新相关的研究成果并提供代码、视频下载等,感兴趣的可以访问 https://bair.berkeley.edu/blog/2019/09/19/bit-swap/


3、基于深度学习的数据压缩应用前景展望


由上文的分析和具体论文实例的结果可以看出,深度学习方法在处理数据压缩问题时,不再像传统方法一样尝试找到数据自身的统计特征、数值特征等,而是自动挖掘复杂结构的数据内在特征。深度学习的数据挖掘和重构能力使得其能够在保持数据特征、保证编码效果的同时获得较高的压缩比。


尽管应用效果很好,但深度学习方法还是存在自身局限性:


  • 当数据量大、数据结构复杂时,深度学习的整体结构也会变得非常复杂,当进行较深层次的训练时,模型所需要的时间会急速增长。由本文选择的两篇实例可以看到,作者在实验中都将图像进行了缩小处理,例如 32×32、64x64 大小的图片,作者也在讨论中提到,如果使用原始大小的图片,计算时间和成本都会非常巨大;
  • 深度学习方法还是缺少对内在机理的分析,在不同的数据压缩应用中还是以「黑盒」的方式使用,主要方法就是通过调整训练层、参数等改进压缩效果。


正如深度学习在其它机器学习场景中应用的情况,基于深度学习的数据压缩获得了让人惊喜的效果,但仍然存在一些问题。不断提升的视频清晰度码率,对低延迟网络无比依赖的应用程序,以及一众 VR 和 AR 设备的投入使用,在这样的背景下,数据压缩仍然是需要长期投入研究的领域。深度学习研究和在工业场景中的应用任重而道远。


相关文章
|
30天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
95 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
45 3
|
1月前
|
机器学习/深度学习
深度学习中的模型压缩技术
【10月更文挑战第5天】 本文探讨了深度学习中的模型压缩技术,包括权重剪枝与共享、低秩分解、知识蒸馏和量化等方法。通过这些技术,我们可以在保持模型性能的同时减少模型的大小和计算量,从而提升模型的实用性。
22 1
|
1月前
|
机器学习/深度学习 自然语言处理
深度学习中的模型压缩技术:精度与效率的平衡
在深度学习领域,模型压缩技术已经成为一项关键技术。它通过减少模型的参数数量和计算量,实现了模型的轻量化和高效化。本文将介绍几种常见的模型压缩方法,包括参数剪枝、量化、知识蒸馏等,并探讨这些方法如何帮助模型在保持精度的同时提高运行效率。我们将分析每种方法的原理、实现步骤以及优缺点,并通过实验结果对比不同方法的性能表现。最后,我们将讨论模型压缩技术在未来可能的发展方向及其应用前景。
35 1
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护
62 1
|
2月前
|
机器学习/深度学习 数据采集 计算机视觉
深度学习之缺失数据的图像修复
基于深度学习的缺失数据图像修复是一种通过深度学习技术填补图像中缺失或损坏部分的过程。这种技术在图像处理领域具有重要意义,能够改善图像的视觉质量,并在许多实际应用中发挥作用,如图像恢复、视频编辑和图像生成等。
59 4
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习与神经网络:探索复杂数据的表示
【9月更文挑战第26天】深度学习作为人工智能领域的明珠,通过神经网络自动从大数据中提取高级特征,实现分类、回归等任务。本文介绍深度学习的基础、张量表示、非线性变换、反向传播及梯度下降算法,并探讨其在计算机视觉、自然语言处理等领域的应用与挑战。未来,深度学习将更加智能化,揭示数据背后的奥秘。
|
2月前
|
机器学习/深度学习 存储 自然语言处理
深度学习中的模型压缩技术
在现代深度学习应用中,模型的复杂性和体积不断增加,给存储和计算带来了巨大的挑战。为了解决这些问题,模型压缩技术应运而生,并成为研究热点。本文将介绍什么是模型压缩技术,探讨其常见方法及应用实例,分析其在实际应用中的效果和前景。
35 1
|
1月前
|
机器学习/深度学习 自然语言处理
【绝技揭秘】模型微调与RAG神技合璧——看深度学习高手如何玩转数据,缔造预测传奇!
【10月更文挑战第5天】随着深度学习的发展,预训练模型因泛化能力和高效训练而备受关注。直接应用预训练模型常难达最佳效果,需进行微调以适应特定任务。本文介绍模型微调方法,并通过Hugging Face的Transformers库演示BERT微调过程。同时,文章探讨了检索增强生成(RAG)技术,该技术结合检索和生成模型,在开放域问答中表现出色。通过实际案例展示了RAG的工作原理及优势,提供了微调和RAG应用的深入理解。
41 0
|
2月前
|
机器学习/深度学习 存储 自然语言处理
深度学习中的模型压缩技术:从理论到实践
本文深入探讨了深度学习领域中的模型压缩技术,包括权重剪枝、量化、知识蒸馏和轻量级模型设计。通过对比实验结果,展示了这些技术在保持模型精度的同时,显著降低计算资源和存储需求。

热门文章

最新文章

下一篇
无影云桌面