基于学习方法,机器学习大致可分为监督学习和无监督学习两种。在无监督学习中,我们需要用某种算法去训练无标签数据集,从而帮助模型找到这组数据的潜在结构。
为了进行无监督学习,在OpenAI成立早期,他们认为通过压缩可以通向这一路径。随后,他们发现"预测下一个词元(token)"正是无监督学习可以追求的目标,并且意识到,预测就是压缩。这也正是后来ChatGPT成功的关键思想之一。
他们通过不断训练自回归生成模型实现了数据压缩,如果数据被压缩得足够好,就能提取其中存在的所有隐藏信息。这样GPT模型就可以准确地预测下一个词元,文本生成的准确度也就越高。
近期,OpenAI联合创始人和首席科学家Ilya Sutskever(mp.weixin.qq.com/s/rZBEDlxFV... )在UC伯克利的一场演讲中提出,希望通过压缩视角来解释无监督学习问题。不过值得一提的是,他指出,GPT模型也可以不通过压缩理念进行理解。
(以下内容由OneFlow编译发布,转载请联系授权。
simons.berkeley.edu/talks/ilya-...
来源 | Simons Institute
OneFlow编译
翻译|宛子琳、杨婷
不久前,我将研究重点转向了 AI 对齐领域(mp.weixin.qq.com/s/h8Eq2mBZZ... ,届时会有一些非常出色的成果,但这还需要时间。这次,我想分享自 2016 年起在 OpenAI 获得的一些想法,它们深刻地影响了我对无监督学习的思考方式。其中有些想法看似非常简单,但并不都能轻松解决,你可能会对其中的某部分内容感兴趣。
1
无监督学习理论
在讨论无监督学习之前,我们需要先厘清学习的广义概念。什么是学习?为什么学习有用?为什么计算机能够进行学习?虽然我们习以为常地认为神经网络能够学习,但从数学角度出发,它们究竟是如何学习的?为什么机器学习模型能够捕捉到数据规律?这并非是简单的问题。
在机器学习领域,许多年前取得了一项重要的概念性突破,即监督学习的发现和形式化,这项工作由多位研究者共同完成。
监督学习
监督学习也被称为反向学习或统计学习理论,其优点是为成功进行学习提供了明确的数学条件。当你从数据分布中获取了部分数据,并成功实现了较低的训练损失,且模型自由度参数小于训练集的大小,那么就能够在测试集上实现较低的测试误差。
因此,如果你在函数类中找到一个能够实现较低训练误差的函数,就必定会成功实现学习。这就是相比其他方法,监督学习相对容易的原因。
监督学习涉及的定理大多都很简单,其中涉及的一些简单数学推理,仅需三行定理就可以解释监督学习理论,相对而言,非常容易理解。
因此,我们知道它为什么会成功,只要继续收集大量的监督学习数据集,可以确定模型性能就一定会不断提升 。同时还有一点十分关键:测试分布和训练分布必须保持一致,只有在这种情况下,监督学习理论才能发挥作用。
我们明白了监督学习为什么有效,以及语音识别、图像分类等为什么能够实现,它们都可以归因于监督学习,且监督学习具备这种数学保证,这非常好。对于那些关心 VC 维度(VC dimension)的人,许多关于统计学习理论的文献都强调 VC 维度是一个关键的组成部分,但实际上, VC 维度仅仅是为了让模型能够处理有无限精度的参数。
如果你有一个线性分类器,其中每个参数都有无限精度,但在实际情况下,所有浮点数的精度都是有限精度的,其精度会不断降低,计算机实际能够执行的函数数量很少,你可以将其用之前提到的公式来表达,这样就能得到监督学习可以达到的几乎所有的最佳界限。我认为这样很不错,因为证明步骤只需要几行。
无监督学习
接下来谈谈无监督学习。监督学习就像是你拥有一些数据,然后根据这些输入数据和标签预测未知数据的标签。如果这些数据的训练误差较低,你的训练数据规模量将超过函数类中的自由度或参数。
在我看来,目前还没有比较满意的无监督学习论述,我们或许能够通过直觉进行判断,但是否能通过数学推理进行证明?实验中已经实现了无监督学习目标,比如模型能够在只有图像或文本,没有具体处理方法的情况下发现数据中存在的真实隐藏结构。
这种情况是如何发生的?我们是否能对此进行预测?目前我们并没有与监督学习保证相似的内容,监督学习能够降低训练误差,保证良好的学习效果,但无监督学习却并非如此。
早在上世纪 80 年代,人们就展开了对无监督学习的研究,如早期的伯尔森机(Bolson machine)等。然而,这些早期想法在小规模数据上并不奏效。虽然 BERT 和扩散模型等语言模型有了一些微小改进,在当时它们是很酷的样本,但与现在的模型相比,它们的无监督学习性能还有一定差距。
令人困惑的是,在优化过程中,无监督学习究竟是如何工作的?我们可以优化某种重构误差、去噪误差或者自监督学习误差。虽然优化的是一个目标,但关注的是另一个目标,而模型在未经优化的目标上也有不错的表现,这到底是怎么回事?简直就像魔法。
一直遵循实证主义?
无监督学习通过学习输入分布中的结构,帮助你实现目标,但如果通过均匀分布(uniform distribution)进行训练,所有的无监督学习算法都会失效。因此,我想提出一种潜在的方式思考无监督学习,我觉得这非常有趣。
通过分布匹配的无监督学习
这是一种未被广泛应用的非主流无监督学习方法,它有一个很酷的特点:与监督学习一样,它能保证成功学习。因此,即使你没有对任何输入数据标记标签,这种神秘的无监督学习过程依然能够确保有效性,这就是分布匹配(distribution matching)。
什么是分布匹配?假设在数据中存在两个并无对应关系的的数据源,分别是 X 和 Y,比如两种不同语言(语言一和语言二),可以是文本和语音。现在的目标是找到一个函数 f,使得通过 f(X) 生成的分布类似于 Y 的分布,这里需要对函数 f 施加一些约束。这种约束可能是有意义的。这在机器翻译和语音识别等领域中用处很大。
例如,我有一个英语句子的分布作为输入,通过应用函数 f,可以得到与法语句子十分相似的分布,那么,可以说找到了函数 f 的真实约束,如果 X 和 Y 的维度足够高,那么 f 可能会存在大量约束。实际上,几乎能够通过这些信息完整还原出函数 f 的信息。与监督学习一样,这样也可以保证有效。此外,这个框架也适用于简单的替代密码(substitution ciphers)和加密等任务。
2015年,我独立发现了这一方法,并对此产生了浓厚兴趣。我认为,可能通过数学对无监督学习进行描述。然而,以上的翻译场景设置还带有一些人为因素,并不完全符合真实的机器学习环境和无监督学习场景。
从数学的角度出发,接下来我要展示该方法的具体核心内容,解释如何确保无监督学习的有效性。
通过压缩来解决
众所周知,我们可以将压缩看做是一种预测过程,每个压缩器都可以转化为一个预测器,反之亦然。所有压缩器和预测器之间都存在一一对应的关系。为说明对无监督学习的思考,我认为,使用压缩进行论述更具优势。
让我们进行以下思想实验:假设你有两个数据集 X 和 Y,分别对应硬盘上的两个文件,再假设你拥有一个非常出色的压缩算法 C 来压缩数据,。那么,如果将 X 和 Y 联合压缩,将它们连接在一起,然后输入到压缩器中,会发生什么?
在这种情况下,一个足够出色的压缩器会怎么做?我的直觉是,它会利用存在于 X 内部的模式来帮助它压缩 Y,反之亦然。对于预测任务可能也存在类似的结果,但通过压缩进行讨论时,这种描述就更加直观。换句话说,如果你的压缩器足够出色,那么它应该能够确保连接并压缩大型文件的结果不会差于分别压缩这些文件的结果。
因此,连接两个数据集所获得的额外压缩是一种被压缩器注意到并能处理的共有结构(shared structure),压缩器越出色,将提取更多的动态结构。两种压缩结果之间的差距被称为共有结构,或算法互信息(lgorithmic mutual information)。就像 X 代表无监督任务,Y 代表监督任务,通过某种数学推理,可以利用 X 中的模式来帮助处理 Y。
还要注意这种方法如何实现分布匹配的泛化。假设我们处于分布匹配的情况下,其中 X 代表语言1,Y 代表语言2,存在某个简单的函数 f,它可以将一个分布转换为另一个分布,如果你的压缩器足够好,它肯定会注意到这一点,并加以利用,甚至会在内部尝试恢复这个函数。我们能将这个过程实现闭环的话,会非常酷。
无监督学习能否形式化?
那么我们该如何将无监督学习形式化呢?在接下来的内容中,我会交替使用压缩和预测场景进行描述。假设你有一个机器学习算法 A,它试图对 Y 进行压缩,如果算法 A 可以访问 X,其中 X 文件编号为 1,Y 文件编号为 2,你希望机器学习算法(即压缩器)能够压缩 Y,并且这可以通过使用 X 来实现。那么使用这个特定算法会带来什么样的遗憾(regret)?
如果任务完成得足够好,遗憾程度较低,则意味着我已经从未标记数据中获得了所有可能的帮助,对此我毫无遗憾,数据中已经没有其他预测价值可供更好的算法利用,我已经从未标记数据中获得了最大收益,已经做到了极致。
我认为,这是思考无监督学习的重要步骤。你不知道自己的无监督数据集是否真正有用,它可能用处很大,包含了答案,也可能毫无用处,还可能是均匀分布的数据集。但是,如果你在监督学习算法上的遗憾较小,就可以判断出自己的无监督数据集是第一种还是第二种情况。我确信我已经尽了最大努力,从未标记数据中取得了最大收益,没人能比我做得更好。
2
Kolmogorov 复杂度作为终极压缩器
接下来讲一讲 Kolmogorov 复杂度(Kolmogorov complexity),它被称为终极压缩器,可以提供终超低遗憾算法。实际上,Kolmogorov 复杂度并不是一个可计算的算法。很多人也许都不了解,其实它很简单。
假设给我一些数据,我将提供可能存在的最短程序对其进行压缩,如果运行这个最短程序,它会输出数据。这个输出Y的最短程序长度就等于 Kolmogorov 复杂度K(X) 。直观来说,可以看出这个压缩器非常有效,因为这个定理很容易就能证明。如果用 Kolmogorov 压缩器来压缩字符串,压缩质量的遗憾会很小。如果你要压缩字符串 X,那么输出 X 的最短程序的长度要比压缩器所需的输出长度更短,而且不论压缩器如何压缩数据,都可以得到一个很小的项,这个小项是实现压缩器所需的代码字符数量。
直观地说,模拟论证是有道理的。假设有一个非常棒的压缩器C,那么这个压缩器附带了一个计算机程序吗?能把这个计算机程序交给 K 运行吗?虽然没有详细解释细节,但 Kolmogorov 复杂度可以模拟计算机程序是如何模拟压缩算法运行的,这也是为什么它不可计算,因为它所做的是模拟,能够自由地模拟所有可能的计算机程序,但它可能是现存的最佳压缩器算法。
"计算"K(X)
现在让我们将 Kolmogorov 复杂度进行泛化,使其能够调用其他信息。再次重申,Kolmogorov 压缩器是不可计算、不可判定的,这一点非常重要,但它会搜索所有程序。就像你对一些百层的神经网络参数上做随机梯度下降(SGD),它自动地就像在一台拥有一定内存大小和步数的计算机上做程序搜索,这在某种程度上有点类似于微型 Kolmogorov 压缩器,二者之间具有非常微妙的相似性。
神经网络可以模拟小程序,它们就像小型计算机,由电路构成,电路是计算机的基本组成部分,而计算机本质上就是一台机器。随机梯度下降(SGD)在程序上进行搜索,整个深度学习都围绕 SGD 展开,实际上我们可以用 SGD 来训练这些计算机,从数据中找到电路。因此,我们可以计算出我们的微型 Kolmogorov 压缩器,模拟论证在这里同样适用。
条件 Kolmogorov 复杂度作为解决方案
顺便说一句,你是否尝试过设计更好的神经网络架构,就会发现那有点困难,相当于在程序空间中搜索更好的程序。
为什么如此困难?因为你的新架构可以对旧架构进行相对简单的模拟,除非遇到一些罕见情况,能够产生显著改进,比如从循环神经网络(RNN)转到 Transformer。RNN 存在一个瓶颈,即隐藏状态,因此在实现 Transformer 时会遇到困难。但如果我们能找到一种方法设计一个非常大的隐藏状态,也许 RNN 会再次具有跟 Transforme 同等的性能。
因此这就是从形式化领域(formal land)转向神经网络的过程,它们之间具有一定相似性。条件 Kolmogorov 复杂度可以作为监督学习的解决方案。
如图所示,这就是无监督学习的超低遗憾解决方案,尽管它不可计算,但我认为,这是一个有用的框架。这里的条件是一个数据集,而非示例。这里我们是基于数据集而不是单个样本进行条件设置,这个方法将从 X 中提取所有预测 Y 的值(value)。
"压缩一切"的可行性
接下来我们聊聊另一个关于技术的小问题:条件 Kolmogorov 复杂度,其中涉及压缩算法,压缩器会尝试在接触一个数据时对另一个数据进行压缩,在机器学习语境下,尤其处理大数据集时,这种情况并不自然。
上面的式子表明,如果你对监督任务 Y 进行预测,那么使用旧式(old-fashioned) Kolmogorov 压缩器对 X 和 Y 的连接数据进行压缩,与使用条件(conditional ) Kolmogorov 压缩器的效果一样好。这里我只做简单介绍,其中的细节还有更多微妙之处。这基本上证明了我们之前所讲的内容,即可以通过条件 Kolmogorov 压缩器解决监督学习问题。
也就是说,我们也可以使用常规(regular) Kolmogorov 压缩器,使用时只需将所有数据收集起来,然后将所有文件连接在一起进行压缩,就能很好地预测我们关心的监督任务。
这里有一些对上述结果的分析,但它的证明过程比较复杂,所以这里不作深入探讨。
总之,对于无监督学习的解决方案,就是将所有数据输入到 Kolmogorov 压缩器中进行 Kolmogorov 复杂度计算。
3
如果没有过度拟合,那么联合压缩就是最大似然
最后我想说的是:如果没有过拟合,那么联合压缩就是最大似然估计。如果有一个数据集,那么给定参数的似然之和就是对数据集进行压缩的成本,此外,你还需支付压缩参数的成本。但如果你现在想要压缩两个数据集,那么只需在总和中添加更多的数据集。
在机器学习的语境下,这种通过连接数据进行联合压缩的方式非常自然。这也是我们花时间来说明条件 Kolmogorov 复杂度的原因,尽管我还不能为以上这些论证提供强有力的支撑,但我们通过压缩所有 Kolmogorov 复杂度仍然是有效的。
我很看好上述做法,这表明神经网络正在奏效。大型神经网络上的随机梯度下降(SGD)相当于大型程序搜索,神经网络越大,就越能更好地接近 Kolmogorov 压缩器,这或许就是我们喜欢大型神经网络的原因之一, 因为我们能够以此近似不可实现的无遗憾常规 Kolmogorov 压缩器思想,希望随着训练的神经网络越来越大,遗憾度越来越低。
4
是否适用于GPT模型的压缩?
我们可以将上述方法用于 GPT 模型,但棘手的是,GPT 模型的行为在不引述压缩的情况下也能够得到解释,我们可以将 GPT 模型的行为简单地解释为对互联网文本的条件分布学习。可以想象一篇带有重复模式的文档,这些模式可能会持续下去,因此 GPT 模型的行为可以直观地解释为对这些模式的融合行为,这种解释无需引用特定的压缩理论,因此,GPT 模型的行为可以在不涉及压缩理论的情况下得到解释。
那么,我们能否找到另一个领域来对这个理论进行直接验证呢?比如视觉领域。视觉领域具有像素级别的数据,我们可以尝试在像素级别上应用这一理论,然后查看此方法能否获得良好的无监督学习结果。答案是肯定的,通过实验证明,通过应用该理论,我们可以在像素级别上实现有效的无监督学习。
这是我们在2020年进行的研究,名为 iGPT 。iGPT 是一个非常昂贵的的概念验证研究,该研究还没有实际应用。iGPT 的研究结果表明,如果你有一个非常优秀的下一步预测器(next step predictor),那么就可以获得很棒的监督学习效果,这一概念在图像领域得到了验证。
具体来说,你需要将图像转换为像素序列,并赋予每个像素一定的离散强度值,然后再使用同样的 Transformer 预测下一个像素。与 BERT 不同,这里只进行下一个词元(token)的预测,因为这对压缩器进行了最大化似然。
这是不同大小的 iGPT 模型在像素预测任务中的下一步预测准确率。竖轴是神经网络最佳层上的线性探头精度(linear probe accuracy),我们在其中加入线性分类器,并查看运行情况,然后就得到了上图三条不同颜色的曲线,三条曲线间的差距逐渐缩小,趋于相似。这就是我们所期望的结果,这表明,像素预测与下一个单词预测同样有效,同时这种方法还能提升模型在无监督学习方面的表现。
通过实验,在 ImageNet 上,我们发现经过多方面扩展的 iGPT 的表现可以接近当今最佳的监督学习,但依然有一定差距,不过这只是一个计算问题,因为后者使用的是大型高分辨率图像,而我们在巨型 Transformer(拥有60亿参数,按照现在的标准不算大,但在当时算是庞大的模型)上使用的是相对较小的 64x64 像素图像。因此,这种方法就像是在大型图像数据集上以无监督的方式预测下一个像素,并在 ImageNet 上拟合线性探头,从而得出很棒的结果。
在 CIFAR-10 数据集上,使用这种方法可以达到 99% 的准确率。尽管这是 2020 年取得的成就,现在可能存在其他更高级的方法,但在当时,这个结果非常理想。
5
线性表征
我喜欢压缩理论,长期以来我一直受困于无监督学习无法进行严格思考这个问题,但现在我们可以在一定程度上做到这一点了。目前压缩理论并不能解释为什么表征是线性可分的,也无法解释为什么需要线性探头。线性表征无时不在,其形成的原因必定十分深刻,未来也许我们能够清晰地阐明这一点。
我还观察到一个有趣现象:自动发布下一个像素预测模型(或自回归模型)在线性表征方面的表现要优于 BERT。目前我还无法确定其中的原因,如果我们能够理解线性表征的成因可能会有所帮助。
我认为,下一个像素预测任务需要从之前所有的像素中进行预测,因此需要考虑到长程结构(long range structure)。而在 BERT 中,你有自己的向量表示,假设在这种情况下你丢弃了 25% 的词元或像素,那么你的任何预测实际上都可以通过略微查看过去和未来的情况很好地补全。相比之下,下一个像素中最难的预测任务比 BERT 中最难的预测任务要困难得多,目前这还只是一种猜测,但我们可以通过实验来对其进行验证。
6 答听众问
问:是否存在更加鲁棒(robust)的二维版本的下一个像素预测模型?
答: 任何将神经网络转变为将概率分配给不同输入的概率模型,都可以被看作是更加鲁棒的二维版本的下一个像素预测模型。扩散模型 (diffusion models)是另一种常见的下一个词元预测模型。在高质量图像生成中使用的扩散模型并没有真正最大化其输入步骤的似然,它们有着不同的目标。然而,最初的公式确实是最大化似然。
需要注意的是,扩散模型与下一个词元预测模型是互斥的。我认为,出于与BERT模型相同的原因,扩散模型的表征比下一个词元预测模型的表征更差,这进一步增加了线性表征形成原因的神秘感。
问:Transformer SGD 是否可以看做是最好的压缩器程序?
Ilya Sutskever: 没错,还有另一种假设。假设有一个神经网络(不一定是Transformer),这些神经网络可以为数据分配对数概率,在有大量训练样本的情况下,我们可以运行该神经网络,并计算每个样本的对数概率,然后对这些概率进行求和,得到神经网络分配给整个数据集的对数概率。然而,这种特定形式的神经网络无法明确地注意到数据顺序中的时间或其他结构。尽管如此,我仍然认为可以计算整个数据集的对数概率,从而得到负对数概率,实际上是使用此神经网络作为压缩器压缩该数据集所需的位数。
问: 你提到了将压缩作为理解和推动无监督学习的框架。同时,你在最后提到,如果将这个框架应用于语言模型的下一个词预测,可能会有些表面,因为任何文本任务都可以转换为下一个词预测任务。因此,对于文本任务来说,无监督学习在表面上与监督学习有些相似。然而,图像 GPT 无法像预测下一个像素那样明确定义文本任务,但我们可以利用线性表征,展示压缩可以形成良好的无监督学习。不过,高度有效的压缩器可能无法提供有用的线性表征。因此,我想知道是否存在无监督学习和监督学习表面上并不相同,但无需压缩器提供有效的线性表征以证明压缩是一个良好的无监督学习目标的情况。
答: 好的线性表征只是一个额外的好处,这并不意味着线性表征应该出现,但这一理论确实主张应该有良好的微调。因为联合压缩就像是使用糟糕的搜索算法(SGD)进行近似查找。早期实验表明,在图像上运行时,BERT 所学习的线性表征比下一个像素预测要差,扩散模型可能也是如此。因此,对比微调扩散模型的结果非常有趣,或许已经有人进行了研究。
欢迎 Star、试用 OneFlow 最新版本: