近年来,GPT-3、CLIP、DALL-E 、Imagen、Stabile Diffusion 等基础模型的出现令人惊叹。这些模型展现出的强大生成能力和情境学习能力,在几年前都是难以想象的。本文将探讨这些大规模技术的商业化。这些模型如今不只是行业巨头主宰的领地,其价值越来越体现在对这一领域和关键问题的描述中,而其核心即数据。基础模型迅速发展产生的影响尚无定论,所以很多内容是基于推测。
prompt: "taco cat"(不要太当真)
从机器学习的角度来看,任务的概念是绝对的基础 —— 我们创建训练数据来指定任务,并通过训练泛化。因此,几十年来,业界一直有两类主要看法:
- 「无用输入,无用输出」,即向模型输入的数据 / 特征信息决定模型成败。
- 「太多参数会导致过度拟合」,近 20 余年来,通用、稀疏模型的开发大行其道。普遍观念认为稀疏模型参数较少,有助于降低过拟合,因而可以更好地进行泛化。
这些观点总体来说很有道理,但也存在一定的误导性。
基础模型正在改变我们对任务的理解,因为它可以基于广泛的数据训练且用于多种任务。即使有些用户对自己的目标任务理解并不清晰,也可以便捷地应用这些模型而不必进行特定的训练。这些模型可以用自然语言或一个接口来控制,领域专家借此推动模型的使用,同时希望马上在新环境中体验各种神奇功能。在这个探索过程中,用户第一步并不是策划特定的训练数据集,而是玩味、构想,迅速迭代他们的想法。有了基础模型,我们就想进一步了解其如何迁移到一系列任务上,包括好些我们尚未预想到的任务。
为了在下一波人工智能发展浪潮获益,我们或许需要重新审视以往主流观点的局限性(和智慧)。在这篇文章中,我们将由此开始,探讨在基础模型中能看到何种变化,最后将讨论我们如何看待基础模型与传统方法相适应。
无用输入,无用输出——就这?
无任务基础模型正在爆炸式发展,到目前为止,很多都是关于模型架构和工程的,但这些模型相融合的迹象也开始显露。数据成为基础以及用以区分的根本点,这方面有先例吗?我们已经见识了在监督机器学习中,以模型为中心和以数据为中心两种方法之间来回摇摆的状态。
在 2010 年代后半段的一系列项目中,特征质量是关键。在旧模型中,特征是编码领域知识的工具。这些特征不太稳定,处理的从业者需要掌握关于如何表征这些信息以获得更稳定和可靠的预测的低层次细节。
深度学习之所以成功,是因为人们在这些方面的表现很差。深度学习革命正如火如荼,arXiv 上的新模型层出不穷,实为震撼。这些模型沿用之前的手动操作,如特征工程,并将其完全自动化。模型非常优秀,能通过深度学习将文本和图像等原始数据成功特征化。这是生产力的极大提升。然而,这些模型并不完美,对这一领域的不断认识依然重要。那么,如何将其融入模型呢?
我们可以看到,用户以训练数据为载体,高效输入信息、解释应用程序并与模型交互。这一切发生在「黑暗」中,没有工具、理论也没有摘要。我们认为,用户应该能够对自己的数据进行一些基本的编程抽象,因此 Snorkel 项目诞生了(然后是公司)。在知识层面,我们由此进入了以数据为中心的 AI 和弱监督时代。我们可以从中吸取两个重要教训:
- 一旦某项技术稳定下来,其价值指向就会回到数据上。在这种情况下,随着 TensorFlow、PyTorch、MXNet、Theano 等技术的出现,深度学习技术开始商业化,但对特定问题的描述没有给出广泛的数据分布、任务规范等。因此,成功与否取决于如何将相关信息引入模型;
- 我们可以(也需要)处理噪声。基础的数学和工程原则上有助于噪声处理。用户很难在训练数据中完美地表达他们的知识,不同数据源的质量可能也不尽相同。在研究弱监督的基本理论时,我们发现模型可以从含噪数据中学到很多(并非所有无用数据都不好)。也就是说,要避免输入无用信息 —— 但也不必对数据太过吹毛求疵。
prompt: "noisy image". 有没有从含噪图像中看到什么有意思的东西?
简单来说,数据将你的问题和分析编码 —— 就算技术商品化,数据的价值依然存在。所以,不是说无用信息很好,而是不要把这个区别过于绝对化。数据有用或无用,在于是否以最有效的方式对其开发利用。
基础模型基于大量数据进行训练,广泛应用于各种任务,给数据管理带来全新挑战。随着模型 / 架构不断商品化,我们需要了解如何高效管理海量数据以保证模型用途的普遍性。
太多参数会导致过拟合?
为什么我们会看到神奇的上下文特征?建模选择(架构和算法)如何促成了这一点?大型语言模型的神奇特征来自神秘的模型配置吗?
大约十年前,粗略的机器学习泛化理论认为,如果一个模型过于简约(即无法拟合太多虚假特征),那么它就会泛化。人们对此可能有更精准的描述,这些都是诸如 VC dimension、Rademacher 复杂度等理论领域的主要成就。在这个过程中,我们发现似乎少量参数对于泛化也是必要的。但事实并非如此,过参数化是一个主要问题,不过现在我们有大模型作为反例:这些大模型(参数多于数据点)可以拟合各种繁杂到让人头大的函数,但它们仍然是泛化的(即使使用随机标签)。
关于过参数化的观点对我们存在误导性,最近有见解开辟了新方向。我们看到这些大模型中出现了一些神奇特征,但时下的流行观念认为,只有某些经机器训练的特定架构促成了这些特征,而这些特定架构很少有人能接触到。我们和其他研究工作的一个方向是尝试以简单、经典的模型来执行这些神奇的特征。我们最近的状态空间模型基于几十年的信号处理成果(因此可拟合经典模型),展现出一定的上下文能力。
更令人惊喜的是,即便是经典的 BERT 双向模型也具有上下文能力!相信还有很多人在撰写相关论文,可以发给我们,我们会认真阅读并加以引用。我们认为,上下文学习的神奇特征就在我们身边,而且宇宙比我们所理解的更为神奇。或者更冷静地看,也许人类只是在理解条件概率方面不尽如人意。
在大模型框架下,事情似乎都运行良好。基础模型的神奇特征看起来稳定且可商业化,数据被视为其中造成差异化的点。
现在可能就是以数据为中心的基础模型时代了?
我们是否在重复以数据为中心的监督学习转变?换言之,模型和工程是否在商品化?
商品化模型和开源信息的兴起。我们看到基础模型正在商品化并投入应用 —— 嗯,感觉很「深度学习」。对我们而言,模型商品化的最大证据即其可用率。主要有两种影响力量:人们有需求(稳定等),大公司可利用。开源兴起并不是出于业余爱好者的兴趣,而是大型公司和政府之外的其他公司断定他们需要这种东西(参见 Python 的崛起)。
等待最新的的超级公司推出全新超大模型?
最大的差异来自哪里?数据!这些工具越来越容易获取,但其实基础模型不一定立即可用。那将如何处理如何部署?坐等新的超级公司推出全新超大模型?这可以说是一个办法!但我们称之为虚无主义!这个模型会否开源,很难说 —— 那么,那些无法发送到 API 的私有数据上的基础模型应用程序又会如何?模型会不会有 100 万亿个参数 —— 多少用户可以访问和使用?模型的训练内容是什么?模型主要基于公共数据进行训练……
所以几乎不能保证,它会知道你关心什么?你会如何维护基础模型的神奇特征,让其为你所用?有效管理基础模型数据(数据至关重要!)和在测试时充分利用伟大的开源模型(在测试时调整输入和上下文数据至关重要!)都很有必要:
数据管理和以数据为中心的标度律?预测:更智能的数据集收集方法能造就小而美的模型。那些让我们大开眼界的标度律论文值得关注:比如最初研究标度律的 OpenAI 以及 DeepMind 的 Chinchilla。虽然我们有默认的参考架构(transforms),但 token 的数量一定程度上代表了数据的信息内容。经验告诉我们,数据在主题和质量上千差万别。我们预感,真正重要的应该是有重叠和阶次的实际信息位 —— 像熵这样的信息理论概念或能推动大小基础模型进化。
测试时的信息输入和计算。基础模型不一定立即可用,但以新的方式进行测试时计算会大为不同。考虑到使用封闭源代码模型 API 的成本且缺乏隐私性,我们近期推出了一个开放源代码基础模型,该模型的参数再小 30 倍,通过在测试时高效使用小模型,可以在规范基准层面击败 OpenAI 的封闭源代码模型 —— 该方法被称为 Ask Me Anything(AMA)Prompting。在测试时,用户通过 prompt 或对其感兴趣任务的自然语言描述来控制基础模型,prompt 设计会对性能产生巨大影响。准确获取 prompt 这件事复杂而艰巨,因此 AMA 建议使用一系列不同质量的含噪 prompt,通过统计理论来应对噪声问题。AMA 的灵感来源很多:Maieutic Prompting、Reframing GPT-k、AI chain 等等!关键是我们可以用新的方式在测试时间进行计算 —— 不必只对模型进行一次 prompt!这不仅关乎训练时的数据管理,还涉及在测试时调整输入和上下文数据。
prompt: "really small AI model"
从 AMA 中我们看到,小模型已经具备了匹配多种任务的卓越推理能力,而大模型的关键价值似乎在于记忆事实数据。小模型在事实方面表现欠佳,那么我们该如何引入数据和信息来解决这个问题?奇怪的是,我们用 SGD 将事实存储在神经网络中,将其转换为模糊的浮点值…… 与 DRAM 支持的键值存储相比,抽象的效率似乎要低得多。但是,从 AMA 的结果来看,小模型和大模型之间的差异在时间变化或域专门化的事实方面要小得多…… 我们在苹果构建自监督模型时,要能够编辑我们返回的事实(出于商业原因),同时需要拟合运行服务的其他软件工具。所以让模型调用索引非常重要。时间会证明,以上是否构成使用这类模型的充分理由。
这将把我们引向何方?基础模型与传统方法并驾齐驱。假设以数据为中心的模型在探索和部署两端均有进展,对于快速迭代和任务无关的工作流程 —— 探索阶段,我们通过数据管理 / 测试时间策略使得现成的通用基础模型更为有用高效。离开探索阶段的用户会带着更清晰任务定义,使用以数据为中心的 AI 并管理训练数据(你自己的数据很重要),以 Snorkel 的方式通过利用和组合多个 prompt 和 / 或基础模型来训练更小、更快的「专有」模型。这些模型可以在实际生产环境中部署,而且在特定任务和特定数据方面更加准确!或者还可以利用基础模型来改进弱监督技术 —— 一些实验室和 Snorkel 成员还为此获了 UAI 奖。
归根结底,数据关乎模型的最终投产。数据是唯一没有商品化的东西。我们仍然认为,Snorkel 对数据的看法是未来的发展方向 —— 你需要编程抽象,一种通过表达、组合和反复纠正不同数据源和监督信号的方法,为最终任务训练可部署模型的方法。