编者按:本文源自微信公众号Web3天空之城(ID:Web3SkyCity),作者城主,经微新创想授权发布。本文将深入探讨2023年大型语言模型的最新进展与未来趋势。为何特别强调“2023年”?因为“大型”的定义正随着技术发展不断演变。今天被视为巨型的模型,未来几年可能仅被视为中型。随着我们对“规模”认知的变迁,许多基于当前大语言模型的见解和结论可能逐渐失效,甚至完全不再适用。幸运的是,那些基于核心原理的洞察往往更具持久性,远比初看富有前景的新观点更为可靠。在接下来的分享中,我将结合过去四年在此领域的探索,与大家分享从与顶尖学者交流中获得的基本认知,这些认知均基于核心原理,旨在保持其长期价值。让我们开始吧。
大型语言模型的一个显著特征是:某些能力仅在模型达到特定规模后才显现。这一特性要求我们以全新视角审视该领域。具体而言,在X轴上,我们可以考察模型的规模,包括参数数量、训练数据规模、计算资源等;而在Y轴上,则是模型在特定任务上的性能指标。我们反复观察到:小型模型在许多任务上几乎无法取得进展,但当模型规模突破某个阈值后,其能力会突然显现,有时甚至表现出色。这种现象被称为“涌现”,仿佛某种能力在规模达到临界点后突然爆发。这在大型语言模型中尤为独特,为AI研究者提供了全新思路。
首先,我们需要转变对“尚未实现”的认知。假设我们提出一个新想法,例如一种新的推理技巧,经过实验发现其效果不佳。大多数情况下确实如此。但我会坚持认为“现在还不行”,而非“永远不行”。这种思维转变至关重要。这意味着当前模型可能不适用该想法,但三五年后,随着模型发展,它或许会奏效。为何过去这种观点不明显?因为我们习惯于在基本规律稳定的环境中工作。例如,物理实验或热力学研究中的新想法,若实验失败,通常意味着该想法在可预见的未来都无效。但在AI领域,情况截然不同。GPT-4发布后,研究者们基于其进行了大量实验,建立了新的直觉。但随着新模型的推出,许多旧有直觉变得过时。这种转变要求我们不断更新认知,摒弃基于过时观点的直觉,这对许多研究者而言是一项新挑战。然而,这也为新人提供了机遇——他们可以尝试在旧模型上无效的想法,在新模型上可能获得成功。这种现象在AI领域屡见不鲜,值得深入思考。
我想分享的下一个观点是如何站在前沿,特别是与缩放曲线相关。这是本文的核心思想。在我的日常研究中,我习惯于构建一个动态画面,记录所有失败的实验。这些失败往往源于“智力”上的不足,例如缺乏解决复杂数学或编程问题的推理能力。我会将这些记录保存下来,而非立即标记为失败,以便未来重新尝试。当出现更先进的模型时,我会重新运行这些实验,判断哪些成功、哪些失败。通过这种方式,我不断更新认知,学习新知识,围绕新兴能力建立直觉,这与“规模”紧密相连。我相信,这种思维方式将日益重要。
让我们简化说明。并非所有任务都需要大规模处理,但有时确实需要。以GPT-3和GPT-4为例,它们代表了不同的规模层级。考虑以下三个能力层面:对于“能力一”,GPT-4尚未达到,但已接近突破点,可能突然实现显著进步;对于“能力二”,尽管有强大的GPT-4,但仍有巨大差距,现有方法难以提供实质性帮助;而对于“能力三”,GPT-3已超越突破点,此时研究可能更多带来渐进式改进。这是一个重要提示:实际研究中,我们往往面对不止上述两三种能力。但只要坚持这种思维框架,并持续反思,更新直觉将变得更加容易,帮助我们明确所解决的问题类型。这就是我想介绍的核心思想。
总而言之,我们所做的一切都与“规模”相关,从“规模”视角审视问题至关重要。但如何实现这种“缩放”?接下来的内容将深入探讨这一问题。
目前所有大型语言模型都采用Transformer架构。虽然细节并非重点,但核心思想至关重要,需要过滤掉不必要的细节。Transformer内部结构对我们而言并非关键,可将其视为包含矩阵乘法的序列到序列映射。输入是一个长度为D的序列,代表Transformer的宽度和长度;输出同样为长度为D的数组,主要用于模型训练。实际推理时情况可能不同,但缩放主要发生在预训练阶段,且输入输出长度相同。这是一个简化的视角,但能清晰呈现核心流程。在此基础上,我们可以进一步思考输入输出形状及初始处理过程。例如,一个句子作为输入,首先需要标记化,使用BPE或句子片段等方法压缩文本,将其转换为整数列表。接着,通过词嵌入将列表映射到隐藏空间,每个标记被表示为长度为D的向量,形成总长度为序列长度的向量集合。这就是实际计算的开始。模型包含N个Transformer层,每层执行序列到序列的映射。这里,一切与规模相关,我们应避免过多假设。为使每个序列标记能与其他标记交互,应允许其自由交互,但不过度限制。Transformer通过计算点积实现这一点,这就是我们的目标。模型的学习和计算细节虽复杂,但核心任务是执行主要计算。这些计算主要在高维数组中进行,涉及矩阵乘法和数组运算。在Transformer模型计算的最后阶段,我们得到一个序列。随后,采用特定损失函数评估模型预测,该函数基于模型对下一个Token的预测计算最大可能性。目标是预测下一个标记,并根据预测准确性获得数值。有了数值后,进行反向传播更新模型参数。实际应用中,计算是批量进行的,即同时处理多个数据点。整个数据批次中唯一的相互依赖发生在最后的计算损失步骤,我们会取其平均值。这就是模型计算的全部过程,绝大部分计算在此完成。因此,讨论如何扩展Transformer模型时,关键在于关注这一核心部分。
扩展Transformer的根本任务在于确保这部分计算能在多台机器上高效执行。这涉及如何合理分配Transformer中的所有矩阵。关键在于尽量减少机器间通信,同时进行合理分配。考虑到多台机器需执行大量矩阵乘法,我们从简单的矩阵乘法例子开始。假设有八台机器,可能是CPU或GPU。我们的任务是执行一个16×16的矩阵乘法。首先,对硬件进行抽象认识:八台机器可视为一个网格,每台机器负责矩阵的一部分。使用颜色编码表示A矩阵各部分分配到哪台机器,使每台机器能并行执行分配的任务。这就是矩阵分配及每台机器执行任务的方式。首先,探讨机器的工作原理。对于输出矩阵C,在执行矩阵乘法后,目标是使机器一的切片位于8×4的左上角。这是一个明确需求。接下来,确定机器需执行的操作。考虑矩阵乘法特性,通常对列和行进行计算。为完成此操作,机器需获取额外数据。但机器自身不拥有全部所需数据。为解决此问题,执行了一系列收集操作,这是MPI中的操作。具体而言,机器需与其他四台机器通信获取数据。每台机器都有本地数据存储。当机器一与机器二、三、四通信并获取所需数据后,它将拥有所有数据副本。这种收集操作被所有机器执行,因此被称为“全体收集”。当机器拥有所有必要数据副本时,它可以开始计算。值得注意的是,这种计算是在所有八台机器上并行进行的,这也是其快速计算的原因。但这也带来了通信成本。我们需要确保计算速度优势超过通信代价。对于矩阵乘法,可总结为使用“爱因斯坦求和符号”。这为我们提供了一种高层次描述数组计算的方法。基本规则是:若字母在两个输入中都出现,则将它们的分量相乘。例如,numpy中的A乘以B可表示为两个字母I的乘积。若字母未出现在输出中,则对该维度进行求和。这与矩阵和向量乘法相似。爱因斯坦求和提供了一种更通用的方法,允许增加更多维度,不仅是二维或一维。因此,从这个角度看,矩阵乘法可表示为爱因斯坦的MN,MP,其中M是收缩维度。这就是我们这样做的原因。首先,有各种标签的数组轴,例如“国会议员”和“明尼苏达州”。这种映射方式就是将N映射到Y轴和X轴的数组轴。有没有想过,有一种神奇的装饰器可以自动并行化这种映射并为你完成所有工作呢?我稍后会详细讨论实现方法,但真正的实现过程与此非常相似。可将其视为一种魔法,只需插入二维中聚集的所有数据,并返回其并行化版本。这就是全部内容。爱因斯坦求和为我们提供了一个框架,告诉我们需要做什么。当我们谈论Transformer时,主要关心的是自注意力层,这是Transformer的核心部分。除了softmax外,所有这些操作都可以用Einsum表示。可以简洁地将其布局,其中X是三维序列,是模型的长度。所有其他参数都是模型学习和更新的参数。当你拥有这种布局时,你就得到了一个带有标签数组轴的爱因斯坦运算。现在,我们如何并行化这个操作?首先,有八台机器。我们不再使用X或Y这样的标签,而是按照惯例使用“数据”和“模型”这两个词。这意味着数据并行和模型并行。这种网格并行方式最初是TensorFlow在2018年提出的,虽然现在有些过时,但我们仍然使用这个术语。为并行化,只需稍作修改。我们并行化它,并将B作为数据映射,因为B代表了最佳维度。我们在数据轴上分配了不同的机器,而N是序列长度。在Transformer的任何并行版本中,我们都不会跨序列长度进行并行化,因为那里发生了很多相似的操作。而与D、H(头数)相关的是模型维度。实际上,这就是为什么多头注意力如此有效的原因。它是由并行策略驱动的。现在,一旦你有了这种并行策略,你可以使用完全相同的代码,并行化它,并在八台或任意数量的机器上运行。这是一个常见例子,使用八台机器,但这个框架实际上可以适用于任意数量的机器。从谷歌的博客文章中可以了解,实际上在TPU V4 Pod中,它可以使用高达3072个芯片。当我们训练Palm模型时,使用了两个pods,所以这里我们使用了6000个芯片,每个芯片的计算能力都与高端GPU相当。如今,你手头拥有这批强大的机器,你可以按照固定模式定义一个网格。模型并行维度为48,数据并行维度虽然在2D中显示,但可以扩展到64。在Palm中,我们采用了不同的配置,但核心思路仍然相同,只是机器数量有所增加。一个需要注意的细节是DCN(数据中心网络)的数据并行性。当两个Pod之间没有直接连接,但都连接到数据中心网络时,其传输速度大约为每秒25GPS,这相对于连接GPU pod的速度来说是较慢的。因此,我们在此处避免了模型并行化。在进行梯度计算后,我们在数据中心网络上进行梯度求和,这个过程大约需要一秒钟。尽管我不确定具体时间,但这并不重要,因为当我们训练像Palm 5400亿这样的模型时,每个训练步骤需要大约17秒,所以额外增加的一两秒并不会带来太大影响。这种体验确实很有趣,我只需输入代码,然后在我的笔记本电脑上运行,程序就会自动在所有这些机器上执行。这种规模化的方法,如果你真正理解了它,最后的实现其实只是我刚刚描述的大量机器上的矩阵乘法。所以,我们一直都在假设这种并行化装饰器是可行的,但如何真正实现它呢?一种方法是使用GSPMD,这是一种基于编译器的方法。你可以编写神经网络代码,就像你拥有一台拥有无限内存的机器一样,不需要进行任何并行化处理。我们就是这样做的,不进行任何通信,只是表示神经网络的核心部分,并将训练步骤表示为一个计算图。你只需要指定这些输入和输出如何映射到硬件轴,然后交给XLA处理,它会自动插入所需的通信操作。这种方法确实像魔法一样,但它并不总是有效,需要经过多次迭代,并且很多人都在尝试。但现在,许多大型模型,如Google、P5、Palm、Switch和Transformer,都使用GSPMD作为后端,完全采用我所描述的方法。当然,还有其他的方法。我对其他方法不是很熟悉,但你可以考虑手动注解和编译器操作。但无论采用哪种方法,最终的过程都是相同的,都涉及将数组轴映射到机器。有时手动方法更为优越,因为它提供了更多的控制权。以下是一些具体的例子。对于许多研究人员来说,使用GSPMD进行并行化可能过于复杂。因此,Jax推出了一个名为Pjit的前端接口。我推测它被称为Jit是因为它变得非常实用。我们需要并行化定义的训练步骤。我们用Jax的Pjit作为装饰器来包装这个步骤。这样,你得到的训练步骤可以在大量机器上运行。这个具体的代码实际上就是用来训练Palm的。你可以查看这些代码,了解它们是如何工作的。尽管有些代码模板化,但既然你已经熟悉了这个框架,你可能对其中的内容有所了解。这些代码是开源的,基于T5X框架构建。我们还有一篇简短的论文描述了该系统,链接在文章底部。
现在,从工程和硬件系统的角度来看,这些都很好。但从机器学习的角度来看呢?最近发布的Llama2模型在成功运行后的表现非常好。但实际进行预训练时,迭代不同想法的成本非常高。你可能想尝试不同的数据分割方式或其他方法,但每次都需要在大规模上运行,这非常耗费资源。如果你正在进行这样的运行,你可能会面临这样的场景:假设你有2万亿个Token,需要运行50天。然后,你可能需要花费一天的时间来评估进展情况。在此情境下,你需要做出决策,例如,“看起来我们的700亿模型表现得很好。”但这种决策非常困难,因为你已经花费了大量的GPU时间。这种情境下的决策制定是非常紧张和困难的。预训练的核心是所谓的”缩放法则”。GPT-4的技术报告和OpenAI之前的论文都讨论过这个概念,我认为这是一个关键的概念。我们在这里讨论的是如何根据小规模模型的性能外推到更大规模的模型,比如GPT-4。这种缩放定律是基于小规模模型的数据开发的。这为我们提供了一个指导方针,帮助我们预测模型在更大数据上的表现。如果你可以预测模型的扩展损失,那么这将是一个非常有价值的工具。预训练的这一部分确实非常关键。我想说的是,尽管现在的扩展比两年前更为简单,但仍然是一个巨大的挑战。这不仅仅是简单地扩大模型规模,还有很多其他考虑因素需要考虑。以下是一些具体的例子。在Palm的训练过程中,我们遇到了损失值的高峰现象。这个问题实际上已经在论文中被提及,你可以去查阅。整个训练过程中,大约出现了20次损失高峰,这让很多人感到担忧,因为损失值突然从两点上升到了六点。这种情况确实不太理想。为了解决这个问题,我们训练了三个模型,使用完全相同的数据,但只有一个模型出现了这种情况。这种问题很难调试,并且在小规模上很难复现。我们确定这并不是由于数据问题引起的。一些研究者进行了实验来验证这一假设。每当这种情况发生时,它都会造成大量计算资源的浪费,这使得大规模训练变得更具挑战性。尽管如此,随着技术的进步,对于某个给定的规模,如Llama模型,训练变得更加容易。但与此同时,我们也发现,技术规模的增长速度超过了解决这些问题的速度。大多数人并不会尝试在更大的规模上训练模型,他们可能会选择等待其他研究者的进展,并基于此进行进一步的研究。这自然地引导我们进入了下一个话题:仅仅增大规模并不能解决所有问题。除了大规模的工程工作,我们还需要进行更多的研究,尤其是在模型训练完成后。让我来解释一下为什么我们可能需要在训练后进一步优化模型。由于预训练模型的学习目标仅仅是预测下一个Token,我们不能直接与它交互。例如,如果输入是一个问题,模型可能会持续生成内容,而不是直接回答这个问题。我们所期望的是一个简洁的答案。为了解决这个问题,我们采用了一种技巧,即构建问题,使得答案恰好是下一个Token。这确实是一个有力的技术,但它并不是真正的通用解决方案。更大的问题是,预训练模型可能会盲目地生成内容,即使这些内容是恶意的或有害的。特别是,模型不知道如何拒绝某些提示。因此,所有这些我们认为重要的能力,例如与人类价值观的一致性,都需要在训练后的阶段进行教育。我更喜欢称之为”训练后Post-Training”。以下是当前大型语言模型的四个主要阶段。首先,预训练是第一阶段。接下来的三个阶段分别是:指令微调(有时也被称为SFT,即监督微调)、奖励模型的训练以及策略模型的训练。这也涉及到了RLHF,即强化学习的部分。我们将按照1、2、3的顺序逐个介绍这些阶段。首先,我们来探讨指令微调。其核心思想是为所有任务建立从自然语言指令到自然语言响应的映射。回想一下,我们在采纳这种方法之前是如何进行任务的。例如,在2018年,当时最先进的模型是BERT。如果我们需要完成一个分类任务,我们将首先使用BERT对句子进行编码,然后将其映射到分类空间,这需要一些特定于任务的参数。但当我们尝试进行多任务学习时,这种方法就显得不太实用。在T5模型中,这个问题得到了改善,因为它的输入和输出都是文本。因此,所有的任务都可以通过文本到文本的映射来完成,这使得多任务学习变得更加简单。但在多任务学习中,模型需要知道它正在执行哪个任务。为了解决这个问题,我们可以为模型提供元数据,比如”这是COLA任务”。但这种方法感觉有些不自然。相反,指令微调的方法则是使用自然语言来描述任务,例如”判断以下句子是否可接受”,这样模型就能理解并执行相应的任务。回顾过去,这种方法在T5或2018年并不明显,因为当时人们并不认为语言模型能够理解这些指令。但随着模型规模的增长,我们发现模型确实有能力在某种程度上理解这些指令,并利用自然语言的丰富性来统一各种任务。这就是指令微调的基本思想。进一步地,我们也可以将这种方法扩展到对话场景中,其中模型可以与另一个代理进行交互,而不仅仅是简单地响应指令。这就是指令微调的核心思路。去年,我在谷歌工作时撰写了一篇论文,探讨了指令微调的潜能及其边界。但在深入讨论之前,我想先说明一点。当我们按照特定的指令进行模型训练时,可能会遇到在训练过程中未曾涉及的新任务。但由于这些新任务仍然是基于指令的,所以只需按照这些指令来操作模型即可。这就是所谓的“概括”。这是一个非常核心的概念。那么,一个自然的问题是,如果训练集中包含更多的指令,是否能得到一个更好的模型?这样的模型是否能够更好地概括?为了验证这一点,我们收集了大量的学术任务,总共有1836个,并将它们结合起来进行训练。我不打算深入细节,但我已经在论文的末尾提供了链接,供有兴趣的读者查阅。这篇论文描述了Flan、T5和Plan等模型的起源。我们制作了一些图表来展示,其中X轴表示模型的大小,包括80亿、620亿和5400亿。Y轴表示了评估集的平均分数。我们精心选择了其中6个在训练过程中未见过的难度较大的任务。可以看到,一个拥有80亿参数的模型表现得相当好,但其分数仍低于10%。因此,我们的结论是,尽管增加更多任务可以提高性能,但其效果是递减的。这一点在另一张图中可能更为明显,这张图显示了微调任务的数量与性能的关系。从中我们可以看到,每个模型的性能都提高了大约10%,但增加更多的任务并没有带来太大的帮助。关键在于任务的多样性。并且,即使是在1800个任务中,我们测试过的任何大小的模型,或者任何类型的模型,都能从这种方法中受益。我认为这种方法非常有效,但它确实存在局限性。再次思考这个问题,我们需要考虑学习的目标是什么。在这个学习阶段,我们到底在教模型什么呢?在监督学习中,我们常常使用交叉熵损失或最大似然估计作为学习目标。这意味着对于给定的输入,我们期望模型能够输出一个唯一正确的答案,而所有其他答案都被认为是错误的。在强化学习的文献中,这种方法被称为“行为克隆”。简而言之,如果我们有足够多的示例,模型应该能够模仿或“克隆”这些行为,从而在新的、未见过的情境中做出正确的决策。然而,随着任务的复杂性增加,为模型明确定义“正确的行为”变得越来越困难。我将用一系列例子来阐述这个观点,让我们进行一个思维实验,只考虑存在单一正确答案的情况。答案必须是确定的。以一个简单的例子为起点,二加三等于多少?显然,答案是五,或者可能是“答案是五”这样的回答。但这一点是毋庸置疑的。再来一个稍微复杂一些的,将“我应该学习,而不是看这部电影”翻译成韩语。这是我个人的翻译,我懂韩语,所以这可能是正确的。但这确实是一个有着单一答案的问题,尽管其中可能存在一些微小的差异。现在,考虑我们在大型语言模型中真正面对的问题。例如,给一个五岁的男孩写一封来自圣诞老人的信,解释圣诞老人并不真实,同时要确保这个信息传递得足够温柔,不伤害这个孩子的感情。对于这样的问题,我很难确定一个最佳答案,更不用说有一个确定的答案了。所以,当面对这种情况时,我对使用最大似然估计作为我们主要的学习目标感到不太自信。这可能是一个误导。考虑到一些更实际的用例,比如我经常提到的一个提示:“在Python中使用梯度下降实现逻辑回归”。这个问题并没有一个明确的答案。你可能偏向函数式编程,或者你可能更喜欢面向对象的编程风格,但无论你的选择是什么,都可能是有效的。我们的目标越来越是教导模型如何执行一些更加抽象和模糊的任务。似乎指令微调的目标函数开始成为一个瓶颈。尽管我没有确凿的证据证明这在实践中是一个问题,但我不认为我们能够使用这种非常狭窄的信号来训练一个比GPT-4大上千倍的模型。那么,我们是否可以使用某种方式来替代这个最大似然目标呢?这就是强化学习与RLHF的核心观点。在强化学习中,我们试图最大化一个预期的奖励函数。考虑到一个代理在下棋时,如果它赢了,我们给予它1的奖励,否则给予0。这是一个有效的奖励函数,但我们实际上可以使用一个模型来为更复杂的情况定义奖励,我们称这个为奖励模型。那么,如何从这个视角来实施它呢?我们都知道如何使用神经网络进行监督式学习。因此,我们可以使用神经网络来代表这个奖励模型,将其进一步整合到奖励模型中。核心的概念在于,对于一个特定的输入,我们提供两个答案,并由人类来判断哪一个更受偏爱,而不是直接告诉模型哪一个是最好的。从这两个答案中,这个更为优秀。最初,这种做法可能没有明确地说明为什么一个答案比另一个更好,但重要的是它为模型提供了一种学习人类偏好的方式。关键在于,尽管某个答案可能被视为首选,但它并不一定是最佳选择。只要它比另一个选项好,模型就可以从中学习。比较的这种方法是至关重要的。为何我们选择比较而不是直接评分?对于如二加三的简单问题,认为五比四更好可能是没有意义的,因为只有一个正确答案。但对于其他复杂的问题,比如某种句子的补全,我可能会提出两个较好的答案,并指出其中一个更为出色。核心思想是,比较可能比绝对评分更简单。对于这些数学公式,我可能会快速跳过。简单地说,对于两个答案YI和YJ,我们定义了一个概率PIJ,表示答案I优于答案J的概率。这个概率是基于人类给出的标签。这个概率模型实际上是基于奖励的差异,更具体地说,是对数几率。这种建模方法可以追溯到1952年。我们只需重构这个模型并最大化这个概率,因为这实质上是最大似然法。奖励模型是基于最大似似然法进行训练的。这样的方法很好,因为它为策略模型提供了丰富的信号。这是大型模型的最后阶段。在这里,目标函数是我们刚刚学到的,而奖励模型的参数在初始的强化学习阶段就已确定。这个方法可能让你想起了生成对抗网络(GAN),其中有一个判别器和生成器。你固定其中的一部分参数,然后进行另一轮的迭代。对于这个策略模型,它通常是从监督指令微调的检查点开始的。你只需要为这个提示生成一些补全,然后提供给奖励模型,它会返回一个得分。基于这个得分,如果分数很低,那么我知道这个答案并不好。如果分数很高,那么我会尝试更多这样的答案。因此,这是数学中的一种试错方法的形式化表示。这基本上是一个宏观的观点。因为我们的目标是通过基于梯度的迭代方法来最大化这一目标,所以我们只需要梯度。这些梯度是通过一些策略级别的算法(例如PPO)来获得的。核心思想是在满足RM模型的条件下进行迭代。在这个过程中,RM模型对人类的偏好进行编码,并将其传递给策略模型,该模型再通过强化学习来学习这些偏好。实际上,许多人并不真的喜欢这种方法。我经常听到人们说:“我们应该放弃RLI方法。”许多人,不仅仅是OpenAI的人,都有这种观点。主要的问题是,实施这种方法确实很困难。强化学习是一个非常复杂的领域,很容易出错。一个常见的问题是所谓的“奖励黑客”。如果模型发现长时间的完成得到了更高的奖励,它可能会倾向于产生更长的答案,即使这些答案没有意义。这种模型的行为与人类的偏好是不一致的,这种差异被称为“奖励黑客”。这是一个困难的问题,目前还没有明确的解决方案。尽管有这些挑战,但我仍然认为RLHF是一个有价值的研究方向。在我看来,最大似然的归纳偏差是太强了。当我们的模型规模增加时,这种偏差可能会导致问题。例如,GPT-4可能还可以,但更大的模型可能会出现问题。学习这个目标函数可以帮助我们克服这种偏见。此外,这个领域还有很大的进步空间。虽然我们已经看到了一些成功的RLHF模型,但这只是开始。总的来说,我认为如果某个方法在原则上是对的,我们就应该继续研究,直到我们找到正确的方法。我想通过一个高层次的视角来回顾人工智能的发展。从基于规则的系统开始,虽然我可能不是很熟悉,但我认为这个高层次的观点是很重要的。在这里,输入是通过手工设计的程序来映射的。在下一代机器学习系统中,输入被转换为手工设计的特征,然后通过一个可学习的部分来映射到输出,如SVM。这个可学习的部分是我用蓝色标出的。随后,这些输出和输入被传递给一个手工设计的损失函数,然后进行迭代。深度学习的主要变革是将手工设计的特征替换为学习到的特征。特别地,分层的表示学习定义了深度学习的技术特点。这种转变确实取得了巨大的成功。为什么会这样呢?因为它采用了更弱的归纳偏差,并允许了更高的可扩展性。我们现在拥有更强大的计算能力,所以为什么不充分利用它呢?这便是深度学习成功的核心。因此,如果我们比较经典的机器学习和深度学习,最接近的对比可能是逻辑回归和前馈神经网络。它们处理相同的任务,但前馈神经网络从数据中学习了隐藏的表示。这使得模型能够更好地处理二进制分类任务。那么,下一个演进阶段会是什么呢?如果仅仅是改变一个组件并使其变成可学习的就如此成功,那为什么不尝试更多的改变呢?目前,损失函数仍然是手工设计的。也许我们应该打破这个约束,使其变得可学习。我认为这将是下一个阶段。我们已经有了一些成功的例子,如GAN和RLHF。这些模型允许复杂的行为表达,而这些行为如果要被形式化描述将会非常困难。但我认为这只是RLHF的一个实例。它也可能是其他类型的强化学习模型,或者甚至不是强化学习的方法。我相信这将是下一个范式,并且我们应该努力朝这个方向发展。当我思考每个范式的代表性模型时,我想到了IBM的深蓝。对于经典的机器学习,我不太确定具体是哪一个,但我们可以称它为基于SVM的系统。然后,下一个范式的代表是GPT-4。每一个范式都带来了巨大的变革,我相信学习损失函数或目标函数将是下一个重大的步骤。考虑到这一点,我对未来的发展感到非常兴奋。谢谢大家。本文(含图片)为合作媒体授权微新创想转载,不代表微新创想立场,转载请联系原作者。如有任何疑问,请联系http://www.idea2003.com/。