我是田延东,Meta AI Fair的研究科学家主任。今天我将谈谈我们在大语言模型推理与规划领域,以及智能体领域最近的成果。演讲的主题是“迈向神经与符号决策的统一框架”。众所周知,大模型已在许多不同场景中得到了广泛应用。这里我列举了一些大模型已被证明极具价值的潜在应用场景。

人们利用大模型构建对话式人工智能以生成内容,甚至让它们相互对抗进行角色扮演,同时也将其作为AI智能体使用。最近,大模型也被应用于推理和规划任务。例如,通过思维链技术,大模型的推理能力得到了显著提升。然而,在尝试利用大模型解决不同规划任务时,我们也发现了其存在的问题。因此,本次演讲将聚焦于推理和规划部分。

在Meta,我与许多富有创造力和才华的同事合作,致力于提升大模型在推理和规划方面的能力,试图找到方法将其技术和优势提升至新的高度。那么,我们可以为推理和规划做些什么有趣的改进呢?首先,为了提升现有的推理规划能力,我们需要了解其弱点,并探索如何通过不同方法来克服这些弱点。

这里有一个例子,我在许多不同场景中都用它来展示大模型在各种情境下,尤其是日常生活中的常见情境下,规划能力并不强。例如,旅行规划问题。这个任务非常简单,我们只需询问语言模型一个旅行计划。比如,我想在特定日期、特定预算下前往夏威夷、西雅图和加州。

我希望AI能给我一个清晰、可执行、可行甚至最优的行程。这就是我们要实现的目标。为了完成这个任务,人们可能会开始思考智能体行为。首先,我们希望语言模型从外部世界查询信息。例如,你可以让模型进行搜索,它会给出一些可能的方向或目的地。

你还希望语言模型进行航班或酒店搜索,从而获得多个可能的酒店条目以及航班信息。一旦收集到所有这些信息,当然,你需要语言模型进行规划。基于这些信息,希望模型能找出一个路径或行程,将所有编辑好的信息连接成清晰可执行的路线。

然而,有趣的是,如果我们使用当前的语言模型执行这种规划任务,效果并不好。这是我们今年在ACL会议上作为亮点论文发表的研究。论文中的主表展示了语言模型在解决此类问题上的局限性。首先,表格上半部分显示,即使是当时最强的GPT-4 Turbo模型,整个旅行行程的最终通过率也仅为0.6%。

即使我们给语言模型提供工具的ground truth信息,并让模型直接规划旅行,最终通过率也只有4.4%左右。通过率的定义很简单:给定行程,检查旅行的每个阶段是否满足约束条件。约束条件可能包括不希望住在吸烟房,或者预算不能超过固定金额等。

你可以编写代码来检查旅行行程是否真正通过这些标准,但不幸的是,最终计划的质量并不理想,必须有人类介入才能找到真正可执行的计划。当然,人们可能会说,这只是一篇今年年初发表的基础论文。在大型模型时代,每个月、每周都至关重要。

半年前发表的论文可能被视为过时,人们可能不再关心。那么,使用最新的模型呢?比如当前的最先进推理和规划模型。感谢该论文第一作者的 courtesy,我们也使用这个简短的规划基准测试得到了一些总体数据。结果显示,对于o1-mini和o1-preview,整体通过率依然不理想,甚至比针对该任务微调的模型表现更差。

这并没有真正解决子规划问题。在其他场景如RM规划中也能看到同样的现象。左侧的图表来自DeepMind的Gemini团队。在该论文中,他们展示的是,对于旅行规划和会议规划等规划问题,随着变量数量和任务规模的增加,复杂性提高,性能实际上会下降。

虽然Gemini在这些基准测试中表现良好,但你可以看到这种下降趋势一直持续到零,随着规划任务中变量和规模的增加,性能急剧下滑。

城市或更多,越来越多的人显示出问题规模在扩大。对。好的,所以左边的图基本上显示了 O1 发布前的性能,而右边的图实际上显示了 O1 发布后发生的情况。当然,你会看到 O1 实际上做得非常好。对。所以你会看到,当这些模型应用于较小规模的问题时,性能非常高,O1 与现有模型之间存在巨大差距。然而,如果规划问题的规模上升,对吧?比如从两个一直增加到十四或十六。那么突然间,你会看到曲线也降到了零,对吧?这实际上来自俄亥俄州立大学(OSU),论文名为《AM 无法规划》,对此有相关研究。呃,所以这实际上,基本上给你这种感觉,虽然曲线的截距项大幅上升,但整条曲线的趋势仍然大幅下降,且这种趋势随时间没有改变,对吧?所以这实际上是一种令人担忧的曲线,即使是我们遇到的最好的模型,也未能解决这类问题。

当然,接下来的幻灯片将探讨解决方案是什么?有哪些解决方案?在这堂课中,我将讨论三种不同类别的解决方案。对。它们列在那里。所以,解决方案之一当然是扩展定律。好的,我们说随着更多数据、更多算力和更大模型,希望有一天,我们会看到更好的性能,并最终用所有这些更大的模型解决所有这些问题。对,当然它们非常昂贵,这也涉及许多工程挑战,但可能不一定涉及关于如何解决这些问题的一种新思维。这绝对是一条路径。我不想评论这条路径的好与坏,但这只是一个选项,你可以考虑的事情。第二个选项称为混合系统。在那个选项中,我们可以这样想:很明显有两条互补的路径。如果我们使用基础模型等深度模型,它们非常擅长理解自然语言指令。

但它们在做非常好的规划任务方面表现不佳,对吧?所以它们会给出糟糕的解决方案,解决方案质量不高,等等,对吧?另一方面,还有另一个世界称为组合求解器或符号求解器。这些求解器基本上啊,可以在许多不同场景中给你最优解,并提供保证,与神经网络相比通常运行速度极快,而且在许多情况下不需要重新训练,对吧?所以,这些基本上是针对复杂规划问题的优秀求解器,但同时,这些求解器不理解自然语言。它们不理解用户的请求。它们不理解许多灵活的场景。对?所以也许我们应该将它们结合起来放入同一个系统中。然后你会看到这两者可以结合在一起,给你比单独一方更强大的东西。

对。在这些选项中,有几种不同的结合方式。我将在接下来的幻灯片中讨论。这实际上是第三个选项,实际上是说有一种方法可以理解神经网络,并发现符号表示是从梯度下降优化中自动涌现出来的。所以这可能非常有趣,最近这是我们最近研究中发现的东西。但我将在选项二之后讨论那个。好的,让我们从这个开始。所以有通过求解器给模型下达指令的不同方式。当然,我们可以做的第一个是使用工具。对。呃,为此,我们实际上有一个关于旅行规划器的后续工作,关于如何利用混合整数线性编程和神经网络、大模型一起解决旅行规划问题。哎,所以这里不是要求语言模型直接啊给你最优的旅行行程,鉴于当前语言模型的问题和缺陷,这非常困难甚至不可行,怎么样?我们可以要求语言模型啊首先将自然语言输入转换为 JSON 文件。这里是 JSON 文件,并给出 JSON 文件,以及为用户请求的所有符号表示。鉴于此请求,结合航班和酒店信息,你可以调用一个求解器。啊,这里我们使用的是混合整数线性规划求解器。

那个求解器将给出最优行程的符号描述,你可以使用那个最优行程,并将其转换回实际的句子,这将用作智能体的响应,对吧?所以你可以这样做,而不是像直接传递那样。你可以通过符号求解器绕道而行,那个绕道将给你一些保证工作得更好的解决方案。所以我们在此基础上构建了一个演示,我们的演示刚刚被接受在将在迈阿密举行的 NLP 演示环节。如果人们感兴趣并参加 NLP,请继续查看。所以整个事情可以作为一个演示,因为它是实时的。对,所以这里基本上是一个速度的分解,对吧?所以我们实际上微调了指令翻译器,那将花费大约两秒到两秒半的时间,从自然语言一直转换到 JSON 文件,然后我们也有 MILP 求解器,整数规划求解器,它将基本上解决问题,求解实际上非常非常快。它花费呃零点呃零点五秒,七秒,呃来解决这个问题。所以这将使整个演示实时,人们实际上可以玩它。我们也有人类评估,基本上,像人类询问,人类受试者被问到这些问题:这个系统是否有用,是否满足请求,是否为金钱提供了足够的价值,以及这个系统是否高效。你可以看到大多数人类受试者对我们的系统持积极态度,与基线相比。好的,所以这实际上很有趣。当然,下一步将是多轮对话,对吧?所以在之前的系统中,我们在这里做的是,智能体

基本上,我们将单轮对话中的用户请求视为一次单独请求,发送给神经网络或大模型,并将其转换为 JSON 文件。但在实践中,人们并非如此操作。人们通常对旅行有一个粗略的想法,比如“我想去夏威夷”,除此之外一无所知,但确实想去那里。随后,智能体会尝试询问更多细节,例如预算是多少,或者你是更在意金钱还是更在意体验。这涉及许多需要厘清的细节问题,因此多轮对话和讨论是自然的场景。为了实现这一点,我们训练了一个能够主动向旅行者提问的智能体,旅行者则相应地回答。该智能体的目标是以最少的对话轮次高效获取所有信息,然后将这些信息转换为 JSON,并与数据生成过程中私下创建的基准 JSON 进行比较。

我们是如何实现这一智能体的呢?我们设计了智能体宪章,以允许智能体遵循这些指令。我们开发的宪章称为 PAC 宪章,由四个不同组件组成。首先,我们希望智能体极其准确;其次,希望智能体具有主动性,即主动提问以获取答案,而不是问些无趣的随机问题,也不能过于被动。智能体需要找到有趣的问题并回答它们。同时,我们希望智能体高效,不浪费时间在无关紧要的问题上,而是关注最关键的问题。此外,智能体还需适应不同类型的旅行者。我们设定了 50 种不同的旅行者人格,每种人格描绘不同的行为,并拥有包含最关键信息的私人隐藏电子表格,以确保信息准确无误。

接着,我们要比较智能体能否在短时间内获取所有这些信息。最后,我们希望智能体具有可信度,即减少幻觉和不一致性。我们可以利用这些宪章对模型进行微调。通过几轮使用 DPO(直接偏好优化)的微调,我们的模型在效率上有所提升。效率主要分为两类:一是整体效率,涵盖所有条目;二是关键效率,针对特定旅行者人格(共 50 种中)的关键条目。我们还优化了涉及实用性、澄清等方面的智能体评分。经过几轮 DPO 后,性能实际上有所提升。系统表现良好,这表明使用智能体宪章,通过简单技术即可在多个维度同时提升智能体性能,且优于现有方法。例如,仅使用 Llama 3.1B 或 180 亿参数模型,若未沿这些方向微调,性能并不理想。

最近,另一篇由多位 Meta 作者参与的论文提出,我们可以使用智能体作为裁判,而非人类裁判。传统上,我们主要使用大模型作为裁判来评估行为智能体,通常只检查给定所有结果后的最终表现。但在本文中,我们尝试使用智能体作为裁判,检查目标智能体的每一步操作,以判断其表现优劣。这样做可以为主要智能体提供更细致、更丰富的反馈,从而促进其改进。至此,我们完成了第一部分的内容,即使用深度模型调用求解器以完成任务。接下来进入第二部分,探讨结合智能体、深度模型与求解器的不同方式。第二部分的重点在于:如何利用求解器为深度模型提供数据,以训练更好的模型?

针对这一点,我们有一系列研究方向,表明这是一个非常有趣且值得遵循的趋势。在此,我们将介绍 SearchFormer 的结果。SearchFormer 的目标是预测规划任务的结果。这是一个非常简单的规划任务:你有一个迷宫,有多堵墙,需要找到起点和终点之间的最短路径。迷宫大小为 3x3,最短路径很简单,只需一直向下,然后向左,最后到达目的地。然而,在到达最优计划之前,如果执行符号求解器(这里是 A 搜索),情况会如何?A 搜索是一项经典工作,试图利用启发式函数从初始状态找到通往最终状态的最优路径,广泛应用于各种场景。在这里,我们使用这种方法寻找最短路径。

思考智能体如何解决问题时,在给出最终最优计划之前,它会提供所有中间步骤,以便你达成最优计划。例如,在这种情况下,A* 搜索会开始创建新节点,进行搜索并探索迷宫的不同部分,查看哪些路径能通向目的地。整个过程会产生这些中间步骤,如紫色和青色所示。这基本上就是搜索的内部步骤。搜索过程结束后,我们找到了整个问题的最优计划。SearchFormer 的想法是……

与其训练一个直接根据提示预测计划的模型——提示基本上是对问题的描述,这也是人们常做的事——即我们有了问题的描述,然后直接预测出该问题的最优结果计划。在我们的方法中,我们从初始提示开始,首先预测问题的搜索轨迹,然后根据该搜索轨迹预测最终的输出计划。这被称为搜索增强模型,也是我们在论文第一阶段提出的模型。

那么,如果我们检查一下所使用的 token 数量,对于这两种设置,搜索仅模型通常只生成大约四百个 token,而搜索增强模型可能会生成更长的 token 数量,因为它不仅输出计划,还输出搜索过程。人们可能会问,既然有些预测问题需要绕道才能到达最终目的地,这真的是个好主意吗?答案是肯定的。我们发现搜索增强模型与非常漂亮的缩放定律曲线相关联。

首先来看仅解决方案的曲线。这种模型可用于许多不同情况,但其缩放定律曲线并不完美。要达到测试集上极高的性能,需要多达一百万条训练序列。这基本上是使用一亿七千五百万参数的仅解决方案模型在 30x30 迷宫导航任务中的表现,效果并不理想。

然而,如果使用搜索增强模型,你会发现曲线截然不同。仅用一千五百万参数的搜索增强模型(比仅解决方案模型小 10 倍),其训练曲线远优于原始的仅解决方案模型。仅用约 5 万样本,最终得分性能就已达到约 80%,而仅解决方案模型仅为 20%。随着训练序列的增加,性能变得更好。

这意味着仅解决方案模型在参数和数据效率上变得更高。它用十分之一的样本量(十万对比一百万)和十分之一的参数量(一千五百万对比一亿七千五百万),给出了大致相同的性能。通过添加搜索轨迹这一简单技巧,性能实际上变得好得多。

你也可以在 Sokoban 游戏中做同样的事情。这是一个简单的游戏,你有一个智能体,想要把箱子推到不同的目的地。你唯一能采取的动作是向前推箱子,不能从角落或墙壁把箱子拉回来,必须基本上从头开始。因此,这个问题需要顺序规划,不能随机行事。

如果你把箱子推到角落,以后就无法把箱子移开,这基本上会导致游戏失败阶段,你必须重新开始。在仅解决方案模型与搜索增强模型之间,你也看到了非常清晰且相似的趋势。现在我们可以看到这两种模型的规模非常不同。

既然我们先预测搜索轨迹,然后预测最终计划,人们可能会问我们如何更进一步?我们做的只是模仿学习。我们从求解器的搜索轨迹开始,然后用搜索轨迹训练 Transformer,使用教师强制法获得搜索增强模型,这已经具有数据效率和时间效率。

但我们可以做得更多:鉴于搜索增强模型已经是端到端可微分的模型,我们可以微调该模型以实现更短的轨迹,但仍能导致最优计划。这在某种意义上是一个非常典型的强化学习任务,最终得到了一个搜索 Transformer 模型。

我们要说的是,我们并没有真正进行强化学习任务,而是做了一件非常简单的事:专家蒸馏。一旦你有了这个搜索增强模型,你可以用多样性多次采样该模型,这种采样会导致许多不同的轨迹和计划。你选择最优的计划。

然后,针对所有最优计划,检查相关的搜索树。你要找出哪棵搜索树最短。你基本上得到所有具有最优计划的最短树,并使用这些数据子集作为下一代搜索 Transformer 的训练集。你可以直观地这样做。

接下来会发生什么?你仍然保持相同甚至更好的最优率,但同时,每个测试任务的序列长度分布实际上变得越来越短。在图表顶部,你可以看到搜索增强模型和 A 算法共享相似的平均任务序列长度分布,因为搜索增强模型是原始 A 搜索树的模仿学习结果。这并不奇怪。

但一旦你完成了多步的这种提升驱动,通过迭代地创建大量轨迹和计划,选择最短但仍能导致最优计划的轨迹,并将它们放回训练集重新训练、精炼模型。随着时间的推移,你会发现平均任务序列长度的分布向左收缩,意味着它变得越来越短。

这就是为什么这篇论文被称为“超越 A”,意味着我们能够找到更短的轨迹长度,同时保持最终解决方案的最优性。在数字方面,我们也看到了改进。我们定义了一个称为 IRR 的指标,即改进长度比。这是 A 搜索轨迹的最优长度与……

搜索轨迹由神经网络发现。如图所示,随着时间推移,改进后的比率实际上变得越来越高,这意味着在经过一步后训练后,神经网络输出的最终轨迹随时间变得越来越短。接着人们可能会问,如果我们勾选了熔化率会怎样?最优结果或最优解的轨迹可能更短,但也可能存在最优性数量下降的情况。但实际上并非如此。查看数据你会发现,每次进行迭代步骤时,最优性实际上都会略有提升,这有点神秘,但仍然很有趣。

经过这些迭代步骤后,最优性比率上升,同时搜索轨迹变得高效得多。在使用包含2400万个参数的搜索Former直觉程序时,其性能与拥有大量参数(如7亿参数)的仅解模型相当。经过这种引导过程后,准确率变得相当。是的,让我们展示这些有趣的步骤,我们的搜索Former性能在这些引导步骤后出乎意料地好。

最近,我们还有一篇后续论文,名为DualFormer。这是搜索Former的V2版本。我们这里做的很简单。搜索Former的一个弱点是轨迹通常非常长,可能需要一千个甚至一万个token才能给出最终解决方案。那么该怎么办呢?在DualFormer论文中,我们尝试通过随机丢弃部分轨迹来缩短搜索轨迹长度。

我们定义了不同的丢弃级别。例如,A*搜索中的关闭成本可能不重要,我们可以将其去除。创建句子中的创建成本可能不重要,我们将其丢弃。我们也可以丢弃整个创建成本。因此,我们有不同级别的丢弃。我们还定义了最终级别,第四级基本上丢弃整个轨迹,我们仅使用仅解数据来训练模型。

如果用所有这些不同级别的轨迹组合来训练模型,会发生什么?结果是,与仅使用解决方案训练和仅使用完整树训练这两种情况相比,性能实际上得到了提升。这非常有趣。我们实际上在大小不同的迷宫以及前几张幻灯片中使用过的Scopa任务上测试了这一点。

与这些情况相比,我们实际上看到了更好的性能,同时,轨迹结果的多样性也大大提高。多样性基本上定义为从模型生成的64条路线中看到的聚类数量。多样性很重要,特别是在测试时间计算方面,因为在生成期间如果具有高度多样性,那么当你扩大测试时间计算时,性能也会变得更好。

在这篇论文中,看起来很简单,这种简单的方法会自动给你高多样性,因为输入数据也非常多样。更有趣的是,一个非常惊人的发现是,这种最终结果称为DiffFormer的方法,会根据问题规格自动在快速模式和慢速模式之间切换。它在两种情况下都能更好地工作。

众所周知,人们通常会讨论系统一和系统二。对于系统一设置,模型会直接预测最终解决方案,没有任何思考。对于系统二,模型通常会先思考该做什么,有一些搜索过程,然后提出最终解决方案。通常,对于系统二,我们认为有两种不同的操作模式。

我们运行两个不同的模型来分别处理这两种思考,并基本上尝试在此基础上控制以确保使用哪一个。但现在有了DualFormer,我们看到了这种惊人的行为:一旦模型在这种混合数据上训练,它就会在系统一和系统二之间自动切换。

有时,DualFormer会输出创建token。一旦DualFormer输出创建token,意味着模型将开始这种慢速思考过程,直到给出实际计划。有时模型一开始就会给你一个计划token,这意味着模型会直接给出答案。这实际上相当有趣。

基本上,你可以看到这种行为自动从训练中涌现,基本上不需要人类给出明确的评估或信号。在这里,DualFormer(自动)意味着该模型正在执行自动模式。我们可以自由让DualFormer输出任何类型的token。它可能输出计划token,即系统一设置,也可能输出创建token,即系统二设置。

同时,你会发现性能优于仅训练系统一或仅训练系统二的模型。此外,有趣的是,我们实际上可以控制解码器的操作方式,只能控制第一个token。如果我们要DualFormer强制生成第一个名为“create”的token,那么DualFormer就被强制进入系统二设置,即慢速设置。

如果DualFormer被强制生成名为“plan”的token,那么它将基本上给你系统一的输出。有趣的是,我们将DualFormer(强制快速模式)与由仅解通知的专用快速模型进行了比较,你会发现性能也在提升。如果你将强制处于慢速模式的DualFormer进行比较,你会发现其性能也优于在完整轨迹上训练的其他基线模型。

这意味着模型被强制进入一种对慢模式较为敏感的状态。有趣的是,模型可以在两种模式之间切换,同时,如果强制模型使用其中一种模式,其表现仍然优于在特定数据上训练的专用模型。我们也在数学问题上尝试了这一想法,因为这类问题更具现实性。对于数学问题,我们从 Augmath 数据集开始,该数据集包含关于如何得出答案的详尽解释。我们可以随机地、有选择地减少思维链中的句子数量,从而针对链式模型进行处理。

生成的模型实际上非常有趣,它提供了更短且更简洁的步骤,同时性能略有提升。以下是示例格式。你可以看到,在先前的工作中,人们已经发现通过用现有的语言模型增强思维链,我们创建了名为 Augmas 的东西,这是我们的基线。这种增强方法相比原始的 Mask 数据集已经带来了更好的性能。但是,通过我们的方法,采用不同的丢弃比例,我们实际上看到了更好的性能。

同时,追踪长度也更短。因此,我们最终有了双向前向传播与 O1 之间的这种经验性比较。你会看到,双向前向传播能够给出正确的路径,指向目的地,并探索所有状态,这些状态在图中以红色显示。而在橙色部分,未经任何训练,模型并不真正理解迷宫设置内部的机制,我们只给出了一条基本上打破所有情况、撞破所有墙壁的路径。

在这种情况下,我们表明,经过训练后,Deepformer 能够进行良好的规划,且规划合理,优于 OpenPreview 在这些问题上的表现。但我要说,这并不是一个公平的比较,因为理想情况下,应该在特定的数据集上对 OpenPreview 进行微调,以查看其性能如何。好的,现在我来总结选项二的第二部分。

让我们进入选项二的最后一部分,即如何以端到端的方式同时训练模型并解决问题。对于这一点,我们要讨论稍微不同的设置。这种设置也使用组合求解器,但应用于需要优化的现实世界问题。想象一下,你想要优化非常复杂的可微函数。但同时,我们还需要受到组合约束的限制。

也就是说,你有一些组合约束,而目标函数是非线性的。许多不同的现实世界领域实际上都属于这些类别。例如,你想优化某些计算机系统,优化某些天线设计,或优化物理学中的某些类型的设备。这些问题通常无法以线性形式写出优化问题。这基本上阻止了你直接调用组合求解器来解决这些问题。

这是我们生产中遇到的一个例子。这个问题类似于邀请桌的放置。假设你有 k 张桌子,它们是嵌入表,还有 n 个相同的设备。这里,设备指的是 GPU,你想将这些 k 张桌子放置到 n 个相同的设备上,使得每个设备会有很多桌子,但不超过内存容量。目标是最小化延迟,该延迟由神经网络估算。

如果你想在数学上表述这个问题,你最终会得到这些公式。这里 x 是一个二元变量,表示表 i 被放置在设备 j 上。当然,对于每个表 i,你希望它被放置到某个设备 j 上。这就是为什么你有 sum_j x_ij = 1 的原因。另一个约束是,对于所有设备 j,你不想让最终的内存消耗超过任何内存预算。

这就是为什么你有 sum_i x_ij * m_i <= m_j 的原因。由于每个 x_ij 都是二元的,这使得整个问题成为组合问题,同时损失函数是非线性的,因为系统问题,比如批处理通信等,会导致高度非线性的目标函数,这很难处理。例如,如果你使用任何优化技术,如遗传算法来解决这个问题,可能永远都找不到可行解。

那么问题在于,也许我们应该仍然找到好的优化问题、优化解决方案,同时利用现有的组合求解器。那么,我们可以做的是,不是在原始的非线性空间中解决原始问题,而是找到一个潜在空间,使得问题在潜在空间中变得稍微线性化。我们在这里做的是,首先尝试学习一个代理成本 c,这个代理成本 c 是问题描述 y 的函数。

为什么是某些描述?比如你有多少 GPU?它们的内存能力如何?这些基本上就是问题描述。所以你首先预测一些代理成本,然后给定代理成本,你想解决一个线性问题,如右侧所示。线性问题会给你一个解 x*,它是 y 的函数。我们重新排列这个线性问题,最终解以尽可能优化原始非线性优化问题。

你会有这样一种循环。你如何解决这个问题?实际上非常简单。你可以直接利用梯度下降优化。这里基本上是 goodness 和操作的计算图。你首先从问题描述 y 开始,y 进入 c = c(y),这将给你一个代理系数 c,然后 c 被插入求解器,求解器给出一个解。该解被插入目标函数,给出损失函数。

为了找到表示代理系数的最佳方法,我们可以进行反向传播。我们的目标是……

找到最佳方法以最小化损失。我不关心所有中间阶段,只希望找到在确保整个管道正常运行的前提下,最小化损失的最佳方式。为此,需要确定系数 c 的最佳指定方法。我们可以通过反向传播一路向下,从而找到关联系数 c 等于 c(y) 的最优权重,即实现私有化映射。我们在邀请表共享中尝试了这些想法,效果相当不错。

这里展示了两张图表。左图基本展示了解的质量,即我们希望损失尽可能低,理想情况下为零,这是最佳状态。右图则关注部署运行时,不希望部署过程过慢,因此也要减少部署时间。在这种情况下,我们可以利用我们方法的多种变体,主要有三种变体。

第一种称为 Circle Zero,主要在测试时进行反向传播,虽然速度较慢,但能给出高质量的解。第二种称为 Circle Prior,这是一种直接学习 c 等于 c(y) 映射的变体,利用该映射直接预测 c 并调用求解器一次,从而得到解。第三种是混合版本,先调用先验模块找到 c 的最优初始值,随后随时间继续优化 c。

我们观察到,这三种变体在解的损失和部署时间之间提供了很好的权衡。与现有方法相比,我们的方法在解的损失方面表现更好,包括域启发式贪心算法以及 Dream Shot(一种使用强化学习优化非线性优化问题的方法)。另一方面,在部署运行时方面,我们的三种方法也表现良好,尤其是 Circle Prior,因为只需预测一次系数 c,速度极快。

同时,其性能也非常出色。我们将同样的思想应用于其他设计问题,例如工业界称为逆流动设计的问题。对于该问题,我们使用一个非常小的 80 乘 80 网格,如顶部中间所示。该网格极小,处于纳米尺度。设计的目标是当光从顶部射入时,设计能改变光的轨迹,使其根据波长落在底部的不同部分。

之所以能实现这一点,是因为当设计置于如此微小的纳米级平板上时,光会表现出波动性,发生干涉、衍射和偏转,使不同频率的光到达不同位置。我们不使用镜子是因为空间太小,无法放置所有镜子,必须利用衍射和干涉来引导光走向不同路径。

因此,优化问题显然非常复杂。要优化的损失函数首先需要根据当前设计设置进行仿真,然后根据仿真结果计算频率响应,进而计算截止频率并计算所有方程以找到整体损失量。学习率很高,但设计空间是组合式的,因为 80 乘 80 网格的每个条目都可以选择放入 1 或 0。

这当然是一个二元问题,但也存在线性约束,意味着我们需要找到可行解。设计必须通过刷子实现,即在制造物体时,用刷子移动这些元素以在平板上雕刻出所有设计。刷子的大小成为约束条件,我们不希望出现孤立的一个点,因为这不可制造。这构成了另一种可写为线性约束的约束条件,但整个问题变得相当复杂。

人们提出了几种不同的基准测试,例如尝试通过这些特定的线条图案将光从顶部引导至左侧,或者将光分成两股不同的流,即光束分离器,还可以进行波长复用器等工作。我们使用这种方法,通过优化技术找到了良好的设计。曲线显示,我们的方法(Circle Zero 和 Circle Hybrid)相比现有方法(如 Pass Through)具有更平滑的收敛曲线。

Pass Through 也是一种基于梯度的方法,但不涉及神经网络,其曲线看起来非常不稳定,且收敛耗时较长。当然,此类方法存在一些局限性。首先,如果函数 f 不可微,该怎么办?其次,在训练过程中,我们每次都需要调用求解器,这很慢,并且要求求解器具有高度可编程性。

针对这两个问题,我们有一些后续工作来解决。由于时间限制,我无法详述细节。但如果您感兴趣,请随时联系,或阅读相关论文,代码已经上线。至此,第二部分结束,主要讨论混合系统,即同时使用神经网络(大模型)和求解器的系统。

在讲座的最后部分,我将简要讨论第三种方案,即深度模型是否真的能收敛到任何符号化内容。这非常有趣,因为我们都知道存在两种不同的冲突观点。

在我们的日常辩论中,比如在 Twitter 或 X 上,存在两种截然不同的观点。一部分人认为大模型无所不能,随着模型参数量的增加,会出现越来越多的涌现行为。因此,只要参数足够多,我们就能享受所有能力而无需过多担忧,只需坐等模型演化为通用人工智能(AGI)。这是看待这一局势的一种方式。

然而,也有另一种不同的观点。许多实验表明,语言模型可能并未真正进行智能思考,而仅仅是基于训练数据中的良好示例进行检索。例如,Apple 有一篇关于 GSM(符号数学推理)的论文指出,如果在 GSM8K 数据集中插入无关的主题或句子,所有模型在该数据集上的表现都会出现断崖式下跌。这令人惊讶,因为最终答案本不应受随机插入句子的影响,但模型确实遭受了巨大的性能损失。

那么,我们如何解决这些问题?如何更好地理解语言模型在推理和规划中使用的表示形式?这是人们在职业生涯和研究中想要深思的核心问题之一。为了达到这一目的,我举一个例子来说明如何分析和理解大模型训练中学到的表示形式。这是一个被称为模加法的简单案例。

这是一个非常简单的阅读任务:给定 a 和 b,预测 c,即预测加法的答案。但这里的加法是模运算,意味着存在一个模数 d。如果 c 太大,它会回绕到 0 到 d-1 之间的较小数字。你可能会觉得这很简单,因为只有 d 的 d 次方种可能的输入,网络训练后可能会形成隐式表进行检索。但实际上并非如此。

人们发现,这样一个简单问题的学习表示实际上是傅里叶基。许多论文已经表明,一旦在模加法任务上训练大模型,它们会显示出非常漂亮的正弦和余弦曲线作为不同数字的表示。问题是为什么?为了探索发生的情况,在我做的一项类似工作中,我们使用两层网络来更好地理解这种行为。

我们有一个底层和一个顶层。底层基本上接收 a 和 b 的单热编码表示。它们被送入两个权重矩阵,相加后发送到两个不同的隐藏节点,每个节点具有二次激活函数。然后,这些激活值被送入顶层,给出输出,该输出与 c 的单热编码表示进行比较。这是一个非常简单的设置。

令人惊讶的是,在训练过程中,傅里叶基依然涌现出来。为了理解发生了什么,让我们将所有内容转换到傅里叶域。显然,我们应该这样做,以便使分析变得更容易。我们基本上进行傅里叶变换,得到 za、zb、zc 等复数系数。由于原始的 w、w、c 是实数,因此关联的复数 za、zb 和 zc 需要满足一些附加条件,即埃尔米特条件。

给定所有这些设置,让我们看看梯度下降解是什么样子的。它实际上非常规则。图中的 x 轴是隐藏节点索引。这里有一个简单的设置:d 等于 7,q 等于 20(q 是隐藏神经元的数量)。这些隐藏神经元的索引从零一直延伸到十九。y 轴则是变换后的频率。

在这里你看到的是,对于每个频率,实际上有几个隐藏节点会在该特定频率 k 上显示出强烈的响应。如果你检查有多少神经元显示出对该特定频率的强烈响应,你会发现神经元数量具有非常有趣的结构。例如,对于频率 k 等于 1,你会看到一、二、三、四、五、六,有六个神经元显示出极高的频率响应。

对于 k 等于 2,你也得到一、二、三、四、五、六,即所有的六个解。当然,你也会看到所有的四个解。这是另一个例子。对于 q 等于 2,你看到一、二、三、四,那是另外四个解。但你也会看到其他神经元中存在一些偏置项。到目前为止,你已经看到了所有的六个和其他四个。还有其他阶数吗?

有趣的是,如果你检查梯度下降解的更多统计数据,这里显示的是 d 等于 23 的统计数据。左边的图显示了所有的训练曲线,右边的图显示了不同频率下单数的分布。你会在四和六处看到非常尖锐的峰值。在这些图中,情况非常清晰。

那么更大的设置会发生什么?现在我们有三种不同的设置:d 等于 23、d 等于 71、d 等于 127,以及不同的权重衰减。你会发现,在大多数情况下,你仍然看到两个峰值,即阶数六和阶数四。除非你具有非常强的权重衰减,导致所有解坍缩为零(意味着没有解,一切皆为零)。除此之外,你看到……

就像那里有强烈的峰值。好的,那么为什么呢?在这篇论文中,我们发现损失函数解具有一个很好的结构。这种结构对于解释那里发生的事情很有用。首先,你想把这个均方误差损失重写为这种形式。它有一些相当复杂的项,对吧?有一项是“1减去”项,还有三项是平方和。好的,这一项是这样表示的。所以你有红色的、蓝色的,啊,对不起,还有绿色的。人们可能会问,好吧,为什么要把这个MAC损失写成这么难看的格式?这看起来似乎很有趣。

有趣的是,鉴于这些形式,我们首先可以得出全局优化、全局解的充分条件。显然,如果你把这个RKK设为1,并且让所有平方和项为零,你就会得到全局优化、全局解。但问题在于,为什么要以及如何实现这一点。目标是非常非线性的。然而,为了实现这一点,你可以利用在两层网络中发生的一些非常好的代数结构。首先,我们考虑所有两层网络的空间,但具有不同数量的隐藏节点。

所以这个空间是Z的大空间。它实际上具有很好的结构。这种结构称为半环结构。如果你定义环加法为两个隐藏神经元的连接,乘法为沿隐藏维度的克罗内克积,那么整个结构就变成了半环。而让事情变得有趣的是,前一个损失函数中发生的这两项,它们实际上是环同态。那么什么是环同态呢?它实际上非常简单。你基本上希望这个函数是一个环同态,如果该特定函数尊重环之间以及普通加法和乘法之间的加法和乘法。

那么它们就是环同态。这意味着什么?这意味着你实际上可以看到,你可以从部分解开始。假设z1是一个部分解,它只满足你损失函数中的单个项,而z2是另一个部分解,它只满足你损失解中的另一个单个项。好的,它们是部分解。它们不是整个解。但有趣的是,由于环结构,如果你把它们相乘,那么产生的z将同时满足这两个约束。

那是什么意思呢?这意味着你可以从一些非常局部的部分解开始,它们只满足部分约束,但你可以逐渐构建越来越复杂的解,使用你的乘法和加法,然后它实际上会给你原始损失函数的全局优化、全局解。整个过程不需要梯度下降。你只是代数地构建它,然后你会得到一个对原始损失函数全局最优的解。

你可以这样构造解。你可以通过将三阶和二阶解相乘,并叠加所有可能的频率来构造六阶解。你也可以构造所有四阶解,还可以构造对应于完美记忆(即所有D解)的解。这些构造的解很好,但人们可能会问,好吧,这与现实世界有什么关系?这在某种意义上是由数学家创造的符号和抽象世界,我们与现实世界无关。

但实际上,这里发生的是,如果你将梯度下降解与之前构造的解进行比较,我们实际上看到两者之间存在精确匹配。首先,在这种特定设置下,你可以看到许多,基本上所有的特定解都是四阶或六阶的。这已经在直方图中显示出来,而且如果你选择这些六阶和四阶解,并尝试根据之前定义的环乘法对它们进行因式分解,你会发现95%的解可以因式分解为二乘三或二乘二。

这与我们在实验和理论构造中之前所做的构造相同,并且因式分解误差很小。最后,如果你检查因式分解中的每个条目,你会发现98%的解实际上可以因式分解为构造的形式。它们实际上落入我们之前构造的形式中。这意味着最大似然解与理论侧的构造非常匹配。

这很有趣,而且如果你检查解中参数的分布,你实际上会看到非常好的规则结构,比如在不同角度有尖锐的峰值,这对应于更高的对称性。这是非常有趣的,尚未被探索,但可以作为很好的后续论文来更好地理解它们。那么所有这些意味着什么?首先,令人惊讶的是,神经网络,如果你在其上运行梯度下降,它会给你一个非常简单、非常类似于符号表示的解,对吧?

所以也许一般来说,神经网络或大模型也会转化为某种符号解。但我们不知道,我们还没有构造出来。但在这里,我们只是给你一个例子,说明推理任务在经过梯度下降训练后会给你一个符号解。其次,它会给你一条替代路径,除了梯度上升之外的路径,对吧?所以你可以认为梯度上升可以给出解,但你也可以有一些高级代数运算,也能给出同样类型的解。

所以也许在未来我们不再需要梯度。我们只需要代数构造,将小解组合成大解,然后梯度最终可能会变得过时。这就是我想介绍这部分工作的原因。这可能表明了一条不同的路径,与我们现有的路径相比,未来我们不再祈祷分布式系统工作良好,而是打开黑箱,用原则性的方法来做这件事。谢谢你的关注。