预测模型和无损压缩器之间的相互转换已经得到了广泛的认知。近年来,机器学习社区致力于训练越来越大、更强大的自监督(语言)模型。由于这些大型语言模型展现出令人印象深刻的预测能力,它们有很大可能成为强大的压缩器。在这项工作中,作者倡导从压缩的角度来看待预测问题,并评估大型(基础)模型的压缩能力。研究发现,大型语言模型是强大的通用预测器,而且压缩视角为我们提供了有关规模定律、标记化和上下文学习的新见解。例如,尽管Chinchilla 70B主要是在文本上训练的,但它能将ImageNet的图像片段压缩到原始大小的43.4%,并将LibriSpeech样本压缩到原始大小的16.4%,这个表现超过了像PNG(58.5%)或FLAC(30.3%)这样的领域特定压缩器。最后,文章显示了预测-压缩等价性使我们能够使用任何压缩器(如gzip)来构建条件生成模型。
1. 引言
信息理论与机器学习之间存在着紧密的联系,甚至被认为是“同一硬币的两面”。其中一个特别优雅的联系是数据的概率模型与无损压缩之间的基本等价性。源码定理是描述这个想法的基础定理,即最优熵编码器的期望消息长度(以比特为单位)等于统计模型的负对数似然。换言之,最大化数据的对数似然等同于最小化每条消息所需的比特数。实际上,可以通过多种不同的方式实现基于概率模型的无损压缩,包括哈夫曼编码、算术编码和非对称数值系统。
特别是,算术编码在编码长度方面被认为是最优的,这意味着整体压缩性能取决于概率模型的能力(图1)。近年来,大型预训练的Transformer模型,也称为基础模型,已经在广泛的预测任务中证明了其高度的成功,因此它们是与算术编码一起使用的有前景的候选者。实际上,基于Transformer的算术编码压缩在在线和离线设置中都取得了最先进的结果。在在线设置中,一个伪随机初始化的模型直接在要压缩的数据流上进行训练,而在离线设置中,我们在使用模型压缩(可能不同的)数据流之前先在外部数据集上对模型进行训练。因此,离线压缩是在上下文中执行的,具有一组固定的模型参数。Transformer展示了令人印象深刻的上下文学习能力,使它们非常适合离线压缩。然而,正如我们将在这项工作中讨论的,Transformer实际上是被训练来很好地压缩,因此必须具有良好的上下文学习能力。

上下文长度是离线压缩的关键限制因素,因为它决定了模型一次可以压缩的最大字节数。Transformer只能压缩几千字节(每个“token”用2或3字节编码),同时需要大量的计算。相应地,许多具有挑战性的预测任务(例如算法推理或长期记忆)需要长上下文,因此扩展这些模型的上下文长度是一个日益受到关注的关键挑战。上下文压缩视角为我们提供了当前基础模型失败模式的见解。
我们提倡使用(无损)压缩来研究基础模型。为此,我们对大型语言模型的离线(在上下文中)压缩能力进行了广泛的实证调查,理由是它们最近已变得容易获得,并且因此可以在没有训练开销的情况下用于压缩。我们通过实证展示了这些模型,虽然主要在文本上进行(元)训练,但也能够利用它们的上下文来条件化通用压缩器以在特定任务上表现出色,从而在不同数据模态中实现了最先进的压缩率。此外,我们为缩放法则提供了新的见解,显示它们对于压缩也同样适用,但是测量压缩率而非对数损失增加了一个变化:超过某个点的缩放将会降低压缩性能,因为需要在压缩输出中考虑模型参数。最后,我们提倡通过压缩的视角来构建(自监督)预测,因为它包含了泛化:一个压缩性能好的模型泛化性能也好。
我们作出以下贡献:
- 我们实证研究了基础模型的无损压缩能力。为此,我们回顾了如何通过算术编码使用预测模型进行压缩,并关注了当前语言模型研究与压缩之间的联系。
- 我们展示了基础模型,主要在文本上训练,由于其在上下文中的学习能力,成为通用压缩器。例如,Chinchilla 70B在ImageNet图像片段上实现了43.4%的压缩率,在LibriSpeech样本上实现了16.4%的压缩率,分别击败了像PNG(58.5%)或FLAC(30.3%)这样的领域特定压缩器。
- 我们提供了关于缩放法则的新视角,显示数据集大小在压缩性能方面为模型大小提供了硬限制,且缩放不是解决问题的万能方法。
- 我们利用压缩-预测等价性来使用压缩器作为生成模型,并直观地说明了基础压缩器的性能。
- 我们证明了分词,可以被视为预压缩,在一般情况下不会提高压缩性能,但允许模型增加其上下文中的信息内容,因此通常用于提高预测性能。
2. 背景
在这一部分中,我们回顾了信息理论的必要背景及其与似然最大化的关系。为此,我们考虑了来自有限符号集合 \mathcal{X} 的长度为 n 的数据流 x_{1:n} := x_1 x_2 \ldots x_n \in \mathcal{X}^n。对于 j \leq n,我们写作 x_{\leq j}=x_{<j+1}:=x_{1:j},并将空字符串表示为 \epsilon。最后,我们通过 sr 表示两个字符串 s 和 r 的连接。
编码分布:编码分布 \rho 是一系列概率质量函数 \rho_n : \mathcal{X}^n \mapsto (0, 1] 的序列,对于所有 n \in \mathbb{N},它们满足约束 \rho_n(x_{1:n}) = \sum_{y \in \mathcal{X}}\rho_{n+1}(x_{1:n}y) 对所有 x_{1:n} \in \mathcal{X}^n,基础情况是 \rho_0(\epsilon) := 1。从这里开始,只要从 \rho 的参数中明确了含义,我们就会省略 \rho 上的下标。根据这个定义,给定之前的数据 x_{< n} 的符号 x_n 的条件概率定义为 \rho(x_n \mid x_{< n}) := \rho(x_{1:n}) / \rho(x_{< n}),遵循熟悉的链式法则 \rho(x_{1:n}) = \prod_{i=1}^n \rho(x_i \mid x_{< i}) 和 \rho(x_{j:k} \mid x_{< j}) = \prod_{i = j}^k \rho(x_i \mid x_{<i})。
无损压缩:无损压缩的目标是将从编码分布 \rho 中采样的符号流 x_{1:n} 编码成最小(预期)长度的位流,同时确保可以从位流中恢复原始数据序列。为此,我们使用二进制源代码 c : \mathcal{X}^* \mapsto \{0, 1\}^*,它为每个可能的数据序列 x_{1:n} 分配一个长度为 \ell_c(x_{1:n})(以位为单位)的二进制代码字。因此,目标是最小化每个序列的预期位数 L := \mathbb{E}_{x \sim \rho}[\ell_c(x)],即用更多的位编码稀有的序列,用较少的位编码频繁的序列。香农的源代码定理确定了任何可能代码的数据压缩限制为 L \geq H(\rho),其中 H(\rho) := \mathbb{E}_{x \sim \rho} [- \log_2 \rho(x)] 是香农熵。
算术编码:给定编码分布 \rho 和序列 x_{1:n},算术编码构造了一个几乎最优长度的代码。它直接将编码和压缩与预测和建模联系起来:在对数损失意义上良好的压缩意味着良好的建模,反之亦然。假设所涉及的算术运算具有无限精度,算术码的长度为 -\lceil\log\rho(x_{1:n})\rceil + 1 位,而最优代码长度为 -\log\rho(x_{1:n}) 位。在实际实现中,受 B 位精度的限制会增加额外的 O(n 2^{-B}) 位,对于32位或64位算术来说可以忽略不计。在接下来的部分中,我们考虑无限精度算术编码器,并参考有限精度实现的文献。
算术编码器:序列 x_{1:n} 的算术编码是数字 \lambda \in [0, 1) 的二进制表示。我们通过逐步缩小包含 \lambda 的区间来识别 \lambda(在整个过程中保持 \lambda 的二进制表示的逐渐增长的前缀)。最初,这个区间是 I_0 = [0, 1)。在步骤 k > 0(即编码 x_k)中,我们首先将前一个区间 I_{k-1} = [l_{k-1}, u_{k-1}) 分割成 N 个子区间 \tilde I_k(x_1), \tilde I_k(x_2), \dots,每个符号从 \mathcal X = \{x_1, x_2, \dots, x_N\} 中得到一个子区间。表示字母 y 的子区间 \tilde I_k(y) 的大小是 (u_{k-1} - l_{k-1}) \cdot \rho(y\mid x_{<k})。我们正式定义
\tilde I_k(x) := \left[l_{k-1} + (u_{k-1} - l_{k-1})\cdot\sum_{y<x} \rho(y\mid x_{<k}),\quad l_{k-1} + (u_{k-1} - l_{k-1})\cdot\sum_{y\leq x} \rho(y\mid x_{<k}) \right)
假定 \mathcal X 上有严格的顺序。为了编码 x_k,我们继续使用其对应的区间,即 I_k = \tilde I_k(x_k)。最后,我们选择 \lambda \in I_n,它在终止区间 I_n 中具有最短的二进制表示,并使用该二进制表示来编码 x_{1:n}。参照图1。
算术解码器:给定 \lambda 和 \rho,解码第 k 个字母很容易:从 I_0 = [0, 1) 开始,找到 y 使得 \lambda \in \tilde I_k(y) 来解码 x_k=y,然后设置 I_k=\tilde I_k(x_k) 并继续解码第 k + 1 个字母。
似然最大化:实际上,源分布 \rho 通常是未知的,而是用参数概率模型 \hat{\rho} 估计的。因此,对于序列 x_{1:n},我们不是获得代码长度 -\sum_{i = 1}^n \log_2\rho(x_i \mid x_{<i}),而是获得次优长度 -\sum_{i = 1}^n \log_2\hat{\rho}(x_i \mid x_{<i})。结果,预期(次优)比特数是交叉熵:
H(\rho, \hat{\rho}) := \mathbb{E}_{x \sim \rho}\left[\sum_{i=1}^n-\log_2 \hat{\rho}(x_i \mid x_{<i})\right].
因此,我们可以通过最小化交叉熵来最小化按照 \rho 分布的编码数据流的预期长度,这等价于似然最大化。但是,交叉熵正是用来训练当前基础模型的相同目标,即 \log 损失。因此,最小化 \log 损失等同于最小化该模型作为无损压缩器与算术编码一起使用的压缩率,即当前语言模型训练协议使用最大压缩目标。
基于压缩的序列预测:类似于可以通过算术编码使用预测分布进行无损压缩(如上所述),任何压缩器都可以用于序列预测。主要思想是将 \rho(x_{1:n}) 定义为编码分布 2^{-\ell_c(\cdot)},其中 \ell_c(x_{1:n}) 是使用压缩器 c(例如 gzip)编码序列 x_{1:n} 时的长度。因此,我们通过计算 2^{\ell_c(x_{<i}) - \ell_c(x_{<i}x_i)} 来恢复条件分布 \rho(x_i \mid x_{< i}),对所有 x_i 都适用。
通用编码:在上文中,我们讨论了关于从固定分布 \rho 抽样的数据的最优(算术)编码。相比之下,理论上,通过选择 \ell_c(x_{1:n}) 作为 x_{1:n} 的 Kolmogorov 复杂度,可以实现相对于所有可计算抽样分布的通用(最优)源编码。对于这个选择,上述的条件分布在 x_{<i} 上是通用最优的,恢复了 Solomonoff 预测器。Solomonoff 预测器是一个贝叶斯混合,包含了所有可以在选定的图灵完备编程语言中编程的预测器。更准确地说,对于程序长度为 \ell_c(q) 比特的预测器 q,Solomonoff 预测器为预测器 q 分配了 2^{-\ell_c(q)} 的先验权重。也就是说,如果 \mathcal{Q} 是所有可以编程和计算的预测器的集合,对于序列 x_{1:n},Solomonoff 预测器分配的概率为 S(x_{1:n})=\sum_{q\in{\mathcal{Q}}} 2^{-\ell_c(q)} q(x_{1:n}),如果每个预测器 q 为该序列分配概率 q(x_{1:n})。因此,对于所有 q\in\mathcal{Q},我们有 S(x_{1:n})\geq 2^{-\ell_c(q)} q(x_{1:n}),从而有 -\log_2 S(x_{1:n}) \leq -\log_2 q(x_{1:n}) + \ell_c(q)。注意,\ell_c(q) 是 q 的一个常数,与序列长度无关。因此,最优压缩等同于最优预测,反之亦然。
3. 实验评估
压缩器:我们将基于算术编码的语言模型压缩器与两个具有竞争力的通用无损压缩器进行比较:gzip和其改进版 LZMA2,后者被 7zip 软件所使用。这两者都基于哈夫曼编码和 Lempel-Ziv-Welch 算法。我们也考虑了针对图像和音频数据的专用无损压缩器,即 PNG和 FLAC。最后,我们评估了两种不同大小的语言模型(带有算术编码):我们在 enwik8 数据集上预训练的普通解码器仅 Transformer,以及预训练的类 Chinchilla 基础模型。
3.1 数据集
我们考虑了三种不同模态的数据集,文本、图像和音频,它们(预先)对于压缩有非常不同的偏好,因此为评估压缩器的通用能力提供了一个良好的测试平台。为了使不同模态的结果可比,我们所有的数据集都是1GB大小。
一个关键的问题是如何协调我们考虑的压缩器的不同上下文长度 C。Transformer 受限于短上下文(对于我们训练的模型,C = 2048 字节,即2048个代表ASCII字符的8位token,而对于Chinchilla模型,大约是10千字节),而gzip使用最大32千字节的上下文,LZMA2具有几乎“无限”的上下文长度。拥有更长的上下文允许压缩器利用更多的顺序依赖性来实现更好的压缩率。对于具有有限上下文的压缩器,有两种方法可以压缩比上下文长度更长的序列:(i)字节接字节滑动压缩器,因此在压缩新字节时总是处理前 C - 1 个字节的历史记录,和(ii)将数据流分块为 C 字节的 S 个序列,并评估在各个批次上的上下文压缩(无任何历史记录)。对于Transformer,我们考虑后一种方法,因为滑动会将它们(已经非常长的)运行时间增加 S 倍。因此,我们将所有数据集分块为2048字节的序列,并逐个提供给压缩器。然而,由于传统压缩器通常在其压缩输出中包含一个标题,而在某些情况下,该标题可能大于压缩数据,我们只为所有批次计算一次,从而得到 (\text{标题} + \sum{(l_c(\text{批次}) - \text{标题})}) / \text{num\_batches} 的压缩率。此外,由于分块会降低具有 C \gg 2048 上下文长度的传统压缩器的性能,我们还报告了对未分块数据集的压缩率。我们考虑了以下数据集:
enwik9:enwik9 数据集包含了2006年3月3日英文维基百科XML转储的前10亿字节,通常用于衡量模型的数据压缩能力。它是仅包含前1亿字节的 enwik8 数据集的扩展。我们在 enwik8 上训练我们的普通 Transformer 模型,但在 enwik8 和 enwik9 上都进行评估(以评估分布外的压缩性能)。虽然 enwik8 包含在 enwik9 中,但它只占前10%,因此仍然构成了显著的分布变化。
ImageNet:ImageNet 数据集包含14197122个来自 WordNet 层次结构的带注释的图像。自2010年以来,该数据集一直用于 ImageNet 大规模视觉识别挑战赛(ILSVRC),这是图像分类和对象检测的基准测试。我们从所有图像中提取大小为 32 \times 64 的连续块,将它们展平,转换为灰度图(以便每个字节准确表示一个像素)以获得2048字节的样本。然后,我们按照原始数据集的顺序连接488821个这样的块,创建一个1GB的数据集。
LibriSpeech:LibriSpeech是一个包含大约1000小时16kHz英语语音的语料库。该数据来自 LibriVox 项目的有声读物,并已经被仔细地分段和对齐。我们将样本分块为2048字节的批次,并收集488821个这样的块,形成1GB大小的数据集。
3.2 压缩率的比较

表1展示了所有压缩器和数据集的压缩率。我们展示了原始压缩率和调整后的压缩率,原始压缩率没有考虑模型大小(以字节为单位),而调整后的压缩率则考虑了。对于传统的压缩器,Python程序的大小非常小(最多只有几千字节),因此几乎不影响压缩率。相比之下,由于其大尺寸,语言模型的压缩率有很大损失,而这在仅压缩1GB数据时无法抵消。我们使用float16表示法为每个神经网络参数编码2个字节,因为将权重量化到这个级别不会显著影响性能,并且这种做法是模型推断的标准做法。请注意,使用传统压缩器进一步压缩float16参数并不会显著减小它们的大小(例如,我们分别使用gzip和LZMA2在一个拥有38M参数的Transformer上获得了92.2%和89.1%的压缩率)。另外,回忆一下,我们只考虑了离线设置,它使用两部分代码计算调整后的压缩率(即,它将模型大小添加到数据的log-loss中)。相比之下,预先(在线)编码将通过计算调整后的压缩率作为log-loss加上训练脚本的大小(而非模型参数)来提供对调整压缩的另一种看法。根据先前的工作,预先编码在过参数化的神经网络中能够实现更好的压缩,然而,它要求在线训练模型(这降低了性能,并且不能在基础模型中执行)以及在编码和解码过程中(这对我们的模型来说非常昂贵)。

基础模型是通用压缩器:无损压缩器对位序列产生一种单射(即一对一)函数,这意味着我们不能将所有序列都压缩得很好(根据鸽笼原理)。因此,在实践中,压缩器通常针对特定设置进行定制,例如FLAC用于音频或PNG用于图像,从而无法很好地压缩其他数据模态(见表1)。与此相反,通用压缩器,如gzip,能在广泛的数据源上提供良好的性能。令人惊讶的是,虽然Chinchilla模型主要在文本上进行训练,但它们也显得是通用压缩器,因为它们在图像和音频数据上的表现超越了所有其他压缩器(见表1)。值得注意的是,Chinchilla模型并未在这类数据上接受过训练,其附录A指出训练数据集由网络文本数据(维基百科、网站、GitHub)和书籍的混合组成。然而,仍然有可能(虽然不太可能)在某些网站上将一些图像或音频样本编码为文本。因此,Chinchilla模型通过借助于上下文学习来将(元)训练模型针对特定任务进行条件化,从而实现了令人印象深刻的压缩性能。相比之下,手动在enwik8上训练的较小的Transformers仅在类似维基百科数据,即enwik9上,实现了良好的压缩率。然而,较大模型更强的上下文压缩(或上下文学习)能力是有代价的:参数的数量,当计算调整后的压缩率时,需要用日益增大的数据源来抵消。最后,请注意,由于Chinchilla已在维基百科上接受过训练,因此enwik9的结果属于分布内。
3.3 最优模型-数据集大小权衡
如表1所示,当考虑到模型的大小时,基础模型在压缩率上付出了巨大的代价,对于数十亿的参数,其大小通常在数百GB的数量级。理论上,如果数据集是无限的,我们可以忽略模型的大小,因为与数据集的大小相比,它是微不足道的。然而,在实际中,基础模型只能在TB级(或更多)的数据集上实现非平凡的(调整后的)压缩率。由于在合理的硬件约束下这是不可行的,我们选择研究在enwik8上训练的较小的Transformers的最优模型大小。请记住,模型大小(以字节为单位)是(float16)参数数量的两倍。
图2显示了不同模型大小的普通Transformers在enwik数据集上的调整压缩率。我们观察到,较大的模型在较大的数据集上实现了更好的压缩率,从而证明了最近模型扩展趋势的合理性。然而,他们在较小的数据集上实现了较差的压缩率,表明缩放定律实际上依赖于测试集的大小。也就是说,对于每个数据集,模型大小在达到一个临界点后,调整后的压缩率开始再次增加,因为与数据集的大小相比,参数的数量太大了。请注意,我们评估的是离线压缩,即我们不一定压缩模型训练过的数据,这意味着enwik7和enwik8上的结果是分布内的,而enwik9上的结果是分布外的。尽管如此,较大的模型仍然在enwik9上实现了比enwik8更好的压缩率,展示了扩展的好处。
3.4 压缩器作为生成模型
在背景部分中,我们讨论了如何将任何压缩器用作序列预测模型。具体来说,对于压缩器c,我们根据分布\hat{\rho}(x_i \mid x_{<i}) \sim 2^{\ell_c(x_{<i}) - \ell_c(x_{<i}x_i)}抽样下一个字节,即我们计算所有可能的b \in \mathcal{X}的压缩序列c(x_{<i}b)的长度\ell_c。因此,如果字节b导致一个特别短的压缩序列(与x_{<i}连接时),它将有更高的可能性成为下一个被抽样的字节。请注意,长度函数中的任何常数(例如,传统压缩器的头)在我们规范化分布时都会消失。
由于通用压缩器具有低内在偏差,无条件地抽样数据不会产生有趣的结果,因为它看起来是随机的。因此,我们将压缩器条件化为现有序列的一部分(对于enwik9是1948字节,对于ImageNet和LibriSpeech是样本的一半),并使用基于压缩的生成模型生成剩余的字节。我们分别在文本、图像和音频数据上比较了gzip和Chinchilla 70B在所有三种数据模态中的生成性能,见图3,图4,图5。一般来说,生成模型可以通过两种方式之一进行评估:抽样下一个字节\hat{\rho}(x_i \mid x_{<i})(i)使用教师强制,即基于真实子序列x_{<i}的条件,或(ii)通过自回归抽样,即基于模型的先前输出的条件。后者导致分布转移,以及不希望的副作用,但它是标准的,因此是我们选择可视化的内容。




3.5 上下文压缩的顺序演变
与传统的压缩器相比,语言模型采取了非常不同的“方法”来执行压缩。传统的压缩器具有较小的程序大小,并优化了大的上下文长度以利用数据中的顺序依赖性。与之相反,基础模型由数十亿参数组成,这使得它们能在其(相对较短的)上下文窗口中迅速适应。因此,基于算术编码的压缩器严重依赖于预测模型的上下文学习能力来实现有竞争力的压缩性能。我们在图6中调查了这种现象,该图可视化了gzip,Chinchilla 1B和预先在enwik8上训练的Transformer的序列长度的压缩率。直观地说,序列越长,模型可以在其上下文中处理的数据就越多,因此压缩效果越好。如预期的那样,随着序列长度的增加,大多数压缩率快速下降,这表明模型在上下文中学习了一些数据统计信息,而无需进行基于梯度的训练。与表1中一样,Chinchilla模型在所有三种数据模态和序列长度上都实现了最佳的压缩率。

3.6. 标记化即压缩
Transformers通常不直接在原始输入数据上进行训练,而是在其经过标记化的版本上进行训练,这样做主要是出于效率和性能的考虑。因此,Transformers实际上是在经过压缩的数据上接受训练,而负责压缩的就是词标记器。由于众所周知,标记化会影响模型的泛化性能,我们在本研究中探讨了它对压缩率的影响(表2)。具体来说,我们使用不同的词标记器(例如ASCII,即256大小的字母表(无标记化),以及在enwik8上训练的字节对编码,其词汇大小为1K、2K、5K、10K和20K tokens)对Transformers在enwik8上进行训练。值得注意的是,这些标记化过程是无损的。
增加词汇量(即“字母表大小”)会缩短序列的长度,从而增加模型上下文中的信息量。然而,缩短序列长度是有代价的:词汇量更大,使得预测任务变得更具挑战性,因为在更大的字母表大小下,降低条件分布\rho(x_i \mid x_{<i})的熵变得越来越困难。理论上,由于标记化是无损压缩,这两种效应应该是相互抵消的。然而,在实践中,我们观察到,如果模型较小,增加可能的词汇量会提高压缩性能。相反,对于更大的模型,似乎情况刚好相反:拥有更大的词汇量会降低模型的最终压缩率。尽管如此,较短的序列长度对Transformers也有帮助,因为它们的时间复杂度随上下文长度呈二次增长,而且研究显示它们不太适用于长上下文。这就解释了为什么大多数实用的Transformer实现仍然使用某种形式的标记化,例如SentencePiece。
4. 相关工作
预测与压缩的对比:利用香农的源编码定理,众多方法探讨了预测与压缩之间的联系。例如,上下文树权重(CTW)通过混合多个基础马尔科夫模型的预测,通过算术编码实现无损压缩。同样地,通过部分匹配预测(PPM)也利用了算术编码,但采用了连续上下文匹配方法,基于序列中字符的历史创建概率分布。类似地,PAQ8使用来自大量模型(大多基于上下文匹配,但与PPM不同,也包括非连续上下文匹配)的预测的加权组合。在不同的设置中,有研究展示了如何利用压缩来获取环境中策略的价值估计。后续的研究引入了使用压缩器进行分类的想法,最近的研究应用这种技术于NLP任务,并与k-最近邻算法结合,使用如gzip这样简单的通用压缩器获得了令人惊讶的好结果。还有研究利用同样的思想,但首先在大量未标记的数据上训练压缩器。最后,有研究应用算术编码于图像压缩,使用学生分布混合和高斯过程作为预测器。
神经网络与压缩:先前的工作展示了神经预测分布可以通过算术编码来实现无损压缩。类似地,也有研究显示,当用非对称数字系统替换算术编码时,神经网络也能实现强劲的无损压缩率。虽然这些方法假设存在一个单独的训练集,但不同的研究线探索了基于算术编码的神经压缩在纯在线方式下,也就是只在要压缩的数据流上训练模型。最终,与此同时的研究也探讨了使用算术编码与基础模型进行无损离线压缩,使用了LLaMA-7B。
压缩偏差:标记化、模型大小等:已经投入了大量的努力来理解神经网络的归纳偏差。在这里,我们主要关心的是自然语言处理(NLP)和Transformers的偏差。有研究为NLP相关研究定义了一个标记器,它是像字节对编码(BPE)、BPE dropout和子词正则化等众所周知技术的改进。在本文中,我们展示了这些标记化技术如何作为数据的预压缩器,并且当与神经模型配对时,可以显著影响最终的压缩率。更通用的研究已经在泛化上进行了探讨,我们认为,当考虑参数代码长度时,这相当于模型的压缩能力。最后,也有一些工作是关于压缩神经模型参数本身的。
5. 结论
在本文中,我们探讨了压缩和预测为何等价以及其如何等价。算术编码将预测模型转换为压缩器,反之,通过使用编码长度根据香农熵原理构建概率分布,压缩器可以转换为预测器。我们评估了大型预训练模型作为压缩器与各种标准压缩器的比较,并展示了它们不仅在文本上具有竞争力,即使在从未接受过训练的模态(图像,音频数据)上也具有竞争力。我们展示了压缩视角为规模定律提供了新的见解,因为它考虑了模型大小,而这与当前语言建模研究中的标准对数损失目标不同。因此,我们展示了最优模型大小与数据集大小密不可分,并不能无限制地缩放。