我们团队目前正在研究推理、规划与大型语言模型的结合。今天我将分享关于构建统一框架的进展,涉及符号决策等内容。目前,语言模型已被广泛应用于对话式人工智能、内容生成以及AI智能体等多种场景。最近,人们也开始对将语言模型应用于推理和规划领域表现出浓厚兴趣,这也是我们团队项目的核心焦点。
在这些方向上,一个有趣的现象是,虽然可以使用语言模型进行推理和规划,但在许多不同场景下,其表现通常并不理想。例如,在“旅行规划”这一任务中,语言模型的表现尤为突出地显示出局限性。我们在今年ICML(国际机器学习会议)上发表了一篇亮点论文,指出对于旅行规划这类任务,当前的语言模型难以胜任。
旅行规划涉及用户提出包含预算和其他约束条件的需求,希望前往不同地点。为了利用大模型实现这一目标,通常需要先让模型检索不同信息,这涉及两次调用:首先从数据库获取大量信息,然后让模型基于这些信息进行规划,期望生成可执行的行程方案。然而,让语言模型在此类任务中表现良好并非易事。
我们使用收集的数据集进行了实验。当时表现最好的模型是GPT-4 Turbo,但其性能依然很低,整体通过率仅为0.6%。这意味着在1000个样本中,仅有6个实例能让语言模型生成通过所有检查和标准的实际轨迹。即使允许模型访问工具的地面真实结果,其表现虽有轻微提升,但仍非常低,准确率仅为4.4%。
这表明让此类模型在复杂的旅行规划问题上取得良好工作效果非常困难。人们可能会寄希望于OpenAI的新模型能带来奇迹,但我们重新测试了Open模型在同一数据集上的结果。即使是Open Mini和Open Preview,在处理这种复杂任务时,最终通过率依然很低,增益并不显著,有时甚至不如微调带来的提升,例如GPT-4o的SFT模型表现稍好。
这种现象不仅存在于旅行规划任务中,也出现在其他任务中。左侧展示了一篇来自Google的论文《Natural Plan》,其中包含一些规划任务,现有模型在这些任务上表现仍不合理。尽管Gemini团队试图推广他们的方法,显示其在规划任务上表现更好,但存在一个令人担忧的趋势:随着需要决定的变量增多,所有模型的性能都会大幅下降。
右侧展示了亚利桑那州立大学(ASU)的研究。结果显示,Open和Open Pro在小型规划问题上表现良好,优于现有方法,但随着问题变得越来越复杂,正确率会大幅下降至零。这表明当前模型可能能解决小规模规划问题,但在人们研究中经常遇到的大规模问题上表现不佳。
那么,解决方案是什么?有哪些有趣的方案可以应用以改善问题?今天演讲将涵盖几个选项。首先是规模定律,即通过增加数据、算力和模型规模来期望模型表现更好,但这显然非常昂贵。另一个问题是,这是否真的适用于实时规划?即使拥有大量数据,面对更复杂的规划任务,性能曲线仍会大幅下降。
我想提到的第二个选项是混合系统。我们知道可以使用求解器高效解决这类规划问题。那么,是否可以在不同场景下将深度模型与求解器结合来解决这些问题?这类似于将符号求解器与神经网络相结合。但实现这一目标有多种不同方式。让我们首先讨论第一种方法,即使用求解器作为深度模型的工具。
我们仍专注于旅行规划方向。与其让模型端到端地直接将用户请求转换为最优行程(这并不容易),我们首先将用户请求转换为JSON文件,其中包含多行关键信息。我们将此JSON文件以及航班和酒店信息提供给混合整数线性规划(MILP)求解器,以解决参数优化问题。
这将为您提供最优行程的符号化描述。这就是那个方案。一旦我们有了这个,就可以将其转换回自然语言描述。基于用户请求,这将生成一个非常具体、详细且可执行的计划。没错。这实际上是一种非常简单的方法。这篇论文已被EACL演示会议接收为口头报告。在这篇论文中,我们可以通过首先生成用户请求的多种不同符号表示来构建数据。然后,可以将这些表示转换为自然语言。这种转换比反向转换要容易得多。一旦我们转换了数据集,就可以训练另一个模型,或者微调另一个模型,从用户请求开始,将其转换回JSON文件。这就是我们进行训练的方式。
当然,像这样的映射求解器在某种意义上是一个独立的组件。我们并没有对整个系统进行端到端的训练,但它目前运行得非常好。我们为此类原始结果构建了一个演示,并进行了人类研究,结果显示,与基线系统相比,我们获得了非常积极的评分。当被问及系统是否能完全满足请求、是否提供物有所值的体验、或者系统是否高效时,我们得到了相当积极的反馈。另一方面,演示本身非常快且高效。时间和性能的分析结果非常好。它实际上能恢复约80%到90%的约束条件。
同时,速度非常接近实时。从自然语言构建JSON文件仅需两秒钟。调用求解器给出解决方案可能只需半分钟,即使面对多日行程且约束复杂的情况。这就是实现此类混合系统的一种方式。我有一个快速的问题。当应用求解器时,你是用它来优化大语言模型的结果吗?不,不,不。没有优化过程。当我们应用求解器时,我们只是将JSON文件作为输入。基本上,大语言模型不提供解决方案。我们只要求大语言模型进行翻译,将用户请求一直转换为JSON文件。我明白了。
JSON文件是优化问题的规范。从这个意义上说,使用大语言模型是将问题形式化为求解器可以理解的内容,对吧?是的,完全正确。好的。谢谢。这似乎是一个可行的系统。当然,后续工作可能涉及之前的工作,我们基本上是从自然语言请求直接进行一次性翻译到JSON。但在下一步,显然,你需要一个智能体。它们可以以聊天形式与旅行者交谈,逐步收集旅行者的信息。
这对旅行者非常有用,因为旅行者并不清楚什么对他们来说最重要。在许多情况下,旅行者可能在请求中省略了许多细节。通过主动从旅行者那里询问多个问题,智能体能够收集足够的信息并调用求解器。这实际上是这项工作的后续研究,称为APEC旅行智能体,它在智能体行为的多个标准方面实现了更高的性能。这是一篇我们很快将提交到arXiv的论文。在这篇论文中,我们实际上从Llama 3.1 405B模型生成了大量合成对话。
并使用我们的数据,通过监督微调(SFT)以及迭代改进来训练我们的模型。我不想过多谈论这篇论文,因为它尚未正式提交到arXiv。但我认为一旦它上线,你们可以详细查看论文。好的。这基本上总结了系统的第一部分。系统的第二部分在某种意义上顺序不同。另一方面,也许可能从服务器向深度模型提供大量数据,使深度模型能提供更好的性能。这是利用求解器的另一种方式。
对于这类主题,我们有一些有趣的工作,我想在这次演讲中介绍。这基本上是一篇我们希望利用求解器信息的论文。这篇论文名为Searchformer。在Searchformer论文中,我们首先通过提示符介绍基本环境。我介绍一下问题设置。这里的问题是导航迷宫。你从起点开始,试图找到从起点到目标的最短路径。当然,如果你没有任何神经网络知识,你可以调用A*搜索、广度优先搜索或深度优先方法来搜索图,并找到从起点到终点的最短路径。
传统的基于小模型的方法认为,只需将提示描述作为输入,然后预测实际计划,即最优路径。但在这里,我们还结合了A搜索的搜索轨迹。这些紫色和青色的线条实际上是A搜索的中间结果。通常,如果你了解A搜索的细节,你会发现A搜索会迭代创建新节点,并沿不同方向探索,同时关闭已评估和已探索的节点。在A*搜索中,我们还维护一个启发式函数,维护一个表,基本上保存所有当前的搜索前沿。
然后使用启发式值来决定去向,取决于进展程度。在我们的Searchformer中,我们将所有这些轨迹放在一起,放入解码器中。
在解码出最终最优计划之前,我们实际上有两个模型。第一个模型称为解模型(solution model)。它的工作原理与之前的所有方法非常相似:当提示词发送给编码器时,编码器会生成一个表示,然后该表示驱动解码器直接输出计划。另一方面,搜索增强模型(search augmented model)虽然也有编码器将提示词编码为向量,但解码器首先生成轨迹(trace),然后再基于此生成计划。这就是搜索增强模型与纯搜索模型之间的区别。
令人惊讶的是,这种简单的方法展现出了截然不同的缩放定律(scaling laws)。对于纯解模型,你看到的是常规的缩放定律曲线:随着训练样本的增加,性能明显提升,但提升速度相当缓慢。例如,使用一百万个训练样本时,准确率接近百分之百;但仅使用五万个样本时,准确率非常低。
然而,检查搜索增强模型时,情况发生了变化。这类模型的参数量少得多(1500万对比1.75亿),并且在训练序列数量少得多的情况下,性能却好得多。这在某种意义上非常有趣,因为搜索增强模型参数量更少,数据效率更高。
同样的情况也发生在索科班(Sokoban)任务中,这是一个更复杂、需要大量规划的任务。在该任务中,你有一个代理,希望将这些箱子推到目的地。你只能推,不能从另一端拉。在精确案例中,搜索算法模型在相同参数量下也提供了更好的性能。
到目前为止,我们看到了一个有趣的新缩放定律:如果添加搜索轨迹并使用教师强制(teacher forcing)来训练Transformer。当然,我可以做得更好,因为最终的搜索增强模型已经是可微分的,如果有新信号,它可以进一步改进。我们可以微调这些搜索增强模型,以实现更短的轨迹,但仍能导致最优计划。
你要求AI,即这个搜索增强模型,生成大量的轨迹。然后你挑选那些在其自身搜索树中步骤较少的树(trellis trees),但最终仍能得到最优计划。你选择这个子集数据,并在此基础上微调模型。你可以直观地这样做,这基本上给出了“SearchFormer”的结果。
这种搜索模型在许多不同场景中表现相当不错。例如,对于所谓的“bond”任务,你总是可以根据A*算法给出的轨迹构建搜索增强模型。你会发现分布非常相似,X轴是不同结果(最优解)上的轨迹长度分布。
但是,在多次执行这些操作后,你会发现搜索轨迹的长度虽然仍给出最优解,但统计分布向左移动。这意味着SearchFormer的平均搜索轨迹长度比A的搜索轨迹更短,这也是我们称这篇论文为《超越A》的原因。
在数值上,你会发现SearchFormer的结果相比现有方法取得了更高的分数。我们定义了一个指标称为“改进长度比率”,这基本上与A*搜索轨迹和模型当前提供的搜索轨迹之间的比率有关。如果长度比率更高,这意味着我们的改进搜索轨迹变得更短,因此数字变得更高。
随着SearchFormer中步骤的增加,数字实际上变得更高,这非常好。同时,令人惊讶的是,SearchFormer输出的最优率也在上升。这相当令人惊讶,因为这不是我们的目标,但有趣的是,当搜索长度变短时,这也发生了。
基本上,你看到纯解模型的最优率从86%开始,而搜索增强模型约为90%,这意味着搜索增强模型已经在纯解模型的基础上有所改进,然后在经过几步搜索公式后变得更高。这实际上非常有趣,并且可以与具有更多参数的纯解模型相媲美。
最近,我们针对这篇论文有一个后续工作,称为DuoFormer,它是SearchFormer的2.0版本。在这篇论文中,我们发现了一些非常有趣和令人兴奋的事情。DuoFormer的动机也是减少训练期间搜索轨迹的长度,因为通常搜索轨迹可能非常长。
但是,当我们通过丢弃一些搜索轨迹细节并在训练期间添加纯解数据来减少搜索轨迹的长度时,我们发现了一些非常有趣的事情。 resulting model(生成的模型)会自动在快速模式和慢速模式之间切换。这是一个非常有趣的实验结果。
同时,这个最终模型实际上优于纯搜索模型或纯解模型。众所周知,人们通常谈论系统一和系统二的方法。人们通常认为,也许系统一和系统二是临时系统,通常在人类大脑中,然后你必须在两者之间切换,有时你只是停留在系统二或系统一。
但这篇论文实际上表明,如果你拥有正确混合的数据,那么所有……
突然间,你可以拥有一个系统,它能够同时在这两种模式之间自动切换。对吧?有时它会通过直接输出结果来提供“快模式”;有时它会先通过搜索过程进行思考,然后给出最终计划的“慢模式”。因此,你可以拥有一个既能做这两件事,且比单独朝任一方向努力都表现更好的模型。在这里,系统一或系统二思维的切换控制,仅仅通过一个单独的标记(token)来实现。
对于双生成器(dual former),我们的做法是:如果让双生成器生成下一个标记,它实际上处于自动模式。在自动模式下,模型会自动决定是进入系统一还是系统二。但你也可以通过指定生成的第一个标记,手动要求模型专注于系统一或系统二。如果第一个标记是类似“plan”(计划)的内容,那么双生成器将进入快模式,因为在“plan”标记之后,你将直接输出最终计划。
但如果双生成器生成的第一个标记是“create”(创建),这通常是任何轨迹、思考过程或搜索痕迹的第一个标记,那么模型将进入慢模式。你会发现,无论是要求模型执行快模式还是慢模式,其表现都比完整的轨迹基线更好。而且非常有趣的是,快模式和慢模式的多样性实际上都提高了。
这非常重要,因为它实际上提高了计算缩放定律的测试上限。如果你拥有更多样化的输出,那么最终结果至少在其中一种情况下为真的可能性就更大。因此,时间测试、多样性测试以及计算测试的效果都会更高。这是仅通过操纵分布就能实现的效果。
我们也将同样的思想应用于数学问题。在数学问题中,我们可以从现有的思维链(chain of thoughts)开始,这实际上是思维链的增强版本。我们可以随机丢弃一些步骤,即一些中间步骤,然后使用这些数据来训练模型。结果表明,在这些情况下,双生成器的最终结果在思维链长度上更短,同时性能也更好,可能提高了几个百分点。
在这里你可以看到 Mistral 7B 和 Llama 3 8B 的性能表现。我们观察到的数据集是 MATH,它在两种不同场景下展示了性能:一种是贪婪解码(greedy decoding),另一种是“past at twenty”。这些数字相对较低,但如果对思维链进行增强,实际上会带来更好的性能。这是之前论文中人们已经发现的现象。
但在我们的案例中,我们尝试随机丢弃部分轨迹。你会发现这实际上带来了更好的性能。例如,在 greedy one 上提升了约 1%,在 past at twenty 上提升了约 2%。同时,轨迹长度也比原始增强后的轨迹更短。这非常有趣。最后,你可以将 Transformer 与 Owen preview 进行比较。当然,这不公平的比较,但至少表明我们的方法在特定任务上表现良好。
然而,Owen 对于这项特定任务完全未能理解问题,并且会生成无效的路径,无法从地图导航的起点一直走到终点。好的,这里我总结第二部分,然后我将进入选项二的第三部分。有问题吗?是的,请讲。嗯,我真的很喜欢这部分。我在想,LLM 有不同的杠杆点。我们知道,我们可以微调,也可以在提示中传入所有内容,通过长上下文的少样本学习。
所以我想知道,如果我们考虑在提示中传入搜索轨迹,比如,你认为有什么优缺点?嗯,我认为这是一个好问题。我们还没有系统地尝试过,初步试验似乎效果不佳。但我认为同意需要进行系统试验,以查看这是否可行。是的,好的。因为通常它相当长,对吧?
但在我们开始这个项目时,没有资金,也没有具有超长上下文的超长模型。但我认为现在长上下文技术已经变得更加成熟。所以也许现在是时候尝试这样的方法了。是的,没错。我也很好奇你与这些模型合作的整体经验,Yuandong。与预训练或后训练相比,你认为在哪方面获得的推理和规划能力的杠杆作用最大?比如,我们可以在预训练期间添加更多数据,或者进行时间缩放测试。你通常认为哪个更好?
我明白了。所以通常,你至少需要一些微调才能获得良好的学习能力。预训练通常意味着你必须涵盖所有信息以学习表示,而对于推理,你实际上有两个维度。我提到的一个方面是模型是否能很好地遵循注意力参考,这样你就可以进行推理。这是一方面,有时可以通过完整的后训练来实现。
推理的另一个部分是,我稍后会提到,即它将从现有的推理任务中学习什么样的表示。有了良好的表示,效率自然会高得多。对于这一点,我不确定它能否从预训练中学习到。实际上我也不确定。是的,所以有两种不同的表示,推理的两个不同方面。是的,谢谢。是的,是的。谢谢。好的,是的。酷。还有其他问题吗?
如果没有,我们可以继续选项二的第二部分,也就是最后一部分。对吧?所以我们可以做的另一种方法是深度模型加搜索。这实际上是我认为 Aaron 在演讲开始时提到的 Circle 论文。在那篇论文中,我们做的是某种分离问题的方法。
这与大模型无关,但希望我们以后能将其整合到我们的模型中。好的,因此在这类问题中,比如我们要解决带有组合约束的非线性目标。是的,在那种类型的问题中,我们不能调用现有的求解器,因为现有的求解器只能处理线性约束。这相当具有局限性。但另一方面,现实世界的问题实际上包含大量的非线性因素,对吧?例如,你有一个计算机系统,其耦合项中存在许多非线性关系。但在这种情况下,我们如何在扩展良好解决方案的同时利用求解器?这是一个大问题。
这里有一个例子。实际上,这是我们在生产环境中遇到的一个案例,当时我们试图与生产团队讨论,看看能否对此做些什么。在这些情况下,情况是这样的:你有 K 个表,以及 N 个身份设备。这些设备基本上指的是 GPU,你想将这些 K 个邀请表放入这些设备中,以便每个表都需要每个设备。我们将尽可能多地容纳这些表,但仍需在内存容量限制之内。同时,你希望最小化延迟,这实际上是由你的网络估算的,对吧?这基本上就是这个问题。
然后你可以按以下方式构建这个问题:这是一个最小化问题,在满足这些约束的条件下最小化延迟。这里的 xij 是一种二进制变量,表示将设备 i 的表发送到设备 j。当然,每个表都需要放置到至少一个设备上,这就是为什么你有这个约束。同时,对于每个设备 j,放置在其上的所有表的总和必须遵循内存能力,即容量约束。这是一个非常典型的我们可能遇到的公式化问题。
它非常非线性,因为这是一个矩阵,对吧?由于批处理、通信等原因,你面临所有这些复杂情况,不能直接调用求解器,因为它是非线性的,而且你也不知道它具体是什么。但我们可以做的是将所有内容映射到潜在空间,然后在这个潜在空间中,我们实际上想解决一个代理优化问题,这样代理优化问题就能给你一个解决方案,尽可能直接优化原始非线性函数。
换句话说,虽然原始空间中的非线性优化问题很难解决,但我们可以做的是尝试预测一个代理成本,这样对于这个代理成本,它将给你一个线性优化问题,该问题受相同的组合约束,最终解决方案将尽可能优化原始非线性问题。人们可能会想,这听起来是一种复杂的想法。我们如何一起优化所有内容?答案很简单,我们只使用基于梯度的优化。
我们在这里做的是,你有一些代理系数 c 进入求解器,求解器会给你一个解决方案。该解决方案将放入目标函数中,目标函数会产生一个损失。你拥有这样的计算图,但实际上你可以对这个计算图进行反向传播。目标函数,虽然它是非线性和非凸的,但你假设它是可微的,它们可以反向传播。
代理部分也可以反向传播,这样你实际上就得到了代理系数 c 的梯度。因此,通过端到端的反向传播,你能够找到能够优化问题的最佳代理成本 c。通过这样做,你实际上拥有一个完整的系统,该系统同时结合了求解器,并且能够解决整个组合问题,即使目标函数是非线性的。
我们实际上在许多不同的场景中尝试了这些想法。当邀请表关闭时,我们实际上将其与现有基准进行了比较。我们将此与领域启发式方法、贪婪方法以及基于强化学习的基线 DreamShard 进行了比较。有两个指标。首先当然是整体解决方案的延迟,也就是目标函数的损失。第二个是部署的运行时间,你真的希望系统能快速行动。
你会发现我们的 Circle 及其变体,两个变体 Circle Zero、Circle Pi 以及 Circle Hybrid。Circle Pi 基本上是说你想预测 c,但 c 也是提示描述的函数。因此,你实际上有第二个额外的梯度下降传递过程需要优化,一旦你优化了这第二部分梯度下降,你就可以直接从问题描述中预测更快的值。
这实际上为你提供了比 Circle Zero 更快的结果,同时与现有基线相比,解决方案的损失也相当不错。我们还可以将这些想法应用于逆光子设计,这也是一个生产用例。在这种情况下,你实际上有一个 80 乘 80 的网格,你想将零和一(即是否有材料)放置到板上,以便整个装置可以将从顶部射出的光弯曲到不同的分支,具体取决于其波长。
为了计算优化函数,这非常复杂。你基本上需要解决电磁模拟器,同时一旦有了模拟器,你就会找到频率响应,然后得到损失函数。这超级复杂,但解空间是二进制的。此外,它可能受线性约束的限制。线性约束基本上表明解决方案必须符合制造约束,即要么在那里放置具有最小尺寸的点,要么完全不放置任何东西。
因此,有一些与此相关的线性约束。我们在这个设计问题中运行了多个任务。你在这里看到的是,我们的方法实际上为你提供了比现有方法(如通过率)更平滑的收敛曲线,趋向于零,也就是满足因子。
从某种意义上说,这展示了这种组合方法的优势。是的,由于需要处理梯度下降,因此存在一定局限性,同时还需要确保循环是可微分的。我们实际上有后续工作,如 Lancer 和 Jengle,试图解决这些问题。但由于时间限制,我们无法在此详细展开。
有人有问题吗?嗯,好的。那么在进行这项工作时,你们是否进入了训练阶段?是的。那么,你们如何生成训练集呢?哦,这很简单。对于训练集,我们实际上是创建许多问题。例如,你们有许多问题描述,每个问题描述都定义了目标函数。只要你们有一堆从问题描述中得出的解,就可以生成训练集,并在此训练集上训练整个系统。一旦训练完成,你们就能自动学习这种代理成本预测。
这很有用。但我认为,这种方法可能无法扩展到非常大的搜索空间。你们实际上有多少描述变量的变量?例如,对于这种逆光子学问题,如果有一个 18x18 的网格,你们就有 1.6k 个变量。
我明白了。基本上,我认为在求解器方面不存在扩展性问题,因为求解器通常可以处理相当大规模的问题,可能有数千个变量,求解器仍然可以处理。所以这没问题。是的,我认为这是当前混合整数求解器的局限。另一个问题是,这里的想法似乎很像 Frank-Wolfe 的思想,即每次线性化目标函数并求解可行性问题,同时保留原始约束。你们是否尝试过与之进行基准测试?
是的,我认为对于线性化方法,首先,我不认为这是一种线性化方法,因为你们实际上可能不对 f 进行泰勒展开。我们做的是直接找到一些代理成本,这可能不是 f 的泰勒展开。是的,没错。但 Frank-Wolfe 的思想也是采用线性模型,当然,他们为原始模型生成不同的线性模型。我只是问,你们是否尝试过与这类思想进行基准测试?
嗯,我想我们还没有这样做。如果有必要,我们应该这样做。好的,谢谢。我真的喜欢这一系列工作,Yuandong,特别是关于约束处理的部分,规模总是很棘手。我很好奇,这是一个端到端的方法,但看第一部分,其类比是模型优化,如贝叶斯优化或强化学习。与这些方法相比,你们看到了哪些优缺点?
是的,我们确实与一些黑盒方法进行了比较,例如遗传算法。但它们在训练或求解方面表现不佳,因为虽然遗传算法声称能解决所有问题,但通常可能需要几天时间才能找到可行解,因为在遗传框架中没有有效的方法来建模组合约束。由于这些方法由数学规划良好定义,我认为混合整数规划在这方面要高效得多。
试图从这种方法中提炼出一些第一性原理。这里真正的优势在于,由于基于梯度的优化,我们可以将求解器包含在神经网络中,而神经网络处理这一点的容量是第一性原理。是这样吗?是的,因为事物可以训练,所以基本上神经网络会找到一种方法,为求解器分配适当的权重。求解器将为您提供原始非线性问题的解。
如果您已经有一些相同分布的此类示例,当然可以将它们放入训练中,希望神经网络能自己找出映射关系。好的。还有其他问题吗?你好,我有一个问题。对于光子学设计问题,您对使用的求解器是否有任何限制,或者任何求解器都可以用于您的模型?
是的,我认为任何求解器都可以用于该模型。因此,该框架与您想要使用哪种求解器无关。这里独立于求解器。基本上,您可以使用任何类型的求解器,例如 CVXPY 层、CVX,或者 SCIP、Gurobi 等。只要您能找到一种从求解器解计算回系数的梯度,就可以使用求解器。因此,这种方法独立于求解器。
我这么问是因为在电磁仿真中,工程上我们通常使用 Ansys 的组件,这是一种基于有限元的求解器。是的,但通常这类求解器不能直接与此微分编程集成。我只是想知道你们有什么想法。
我明白了。我的意思是,你们总是可以采用某种数值方法来计算梯度。从概念上讲,求解器需要集成到系统中,但在实践中,你们只需要从求解器获取梯度。求解器接受一些输入并给出解,但你们真正关心的是,当有梯度从求解器解反向传播时,求解器也能给出反向传播梯度。只要你们能计算梯度,无论它是可微分的还是基于数值计算的,都可以使用这种方法。
好的,基本上就是这样。此外,我们实际上还有后续研究。这就是当前的研究全景。有一篇关于景观替代模型的论文。在那篇论文中,我们做的是利用神经网络来模拟优化过程中的求解过程,对吧?因为求解通常非常缓慢。但是,如果你已经根据输入获得了大量的求解器结果,那么当然你可以学习一种替代成本来模拟求解器的行为,这种模拟的神经网络可以非常自然地获得反向传播梯度。是的,这实际上会提高训练过程的速度。谢谢。是的,我没有提到这一点,但如果你想的话,你绝对可以阅读那篇论文,那里有很好的应用。
好的,那没问题。接下来我有十分钟讲第三个选项。我会做一些我最近非常兴奋的事情。呃,所以第三个选项是,好吧,也许神经网络中实际上存在一种有趣的结构,对吧?神经网络可能会转化为某种符号化的东西。所以这在某种意义上是对深度模型工作原理的更详细或更深入的理解。如果深度模型实际上具有涌现的符号结构,那么这种符号结构可能会从第一性原理支持先前的符号方法与神经网络方法的统一。
在一些推理任务中,确实发生了一些事情。对于这些主题,当然存在关于语言模型是否真的能进行推理,还是仅仅在进行检索的争论。一方面,我是说,那些相信缩放定律的人非常喜欢语言模型,因为它们确实展示了涌现行为,对吧?这里有一个来自某篇博客文章的非常棒的 GIF 文件,我毫不羞耻地窃取了它。实际上,你可以看到这是一个非常棒的 GIF 创新,展示了随着参数越来越多,许多能力从中涌现出来。
但另一方面,我们实际上看到了非常不同的观点,对吧?我们看到了像“AI 只是在进行检索”这样的观点,对吧?所以我们并不真正相信这种推理能力,这种推理能力实际上非常脆弱,并且可能在不同的场景中很容易崩溃。是的。例如,最近苹果公司有一篇论文构建了 GSM8K 符号化版本。在这篇论文中,他们展示的内容非常有趣。他们实际上在 GSM8K 数据集中添加了一些不相关的句子。这些句子本不应干扰正常的推理链。但有趣的是,所有这些模型基本上都被这个特定的句子搞糊涂了,导致性能大幅下降。准确率简直疯狂。
于是人们可能会问,好吧,也许 AI 真的不理解什么是推理,只是在进行检索,而不是推理。为了澄清这类问题,这是一个非常困难的问题。我们可以想到的一件事是,我们可以从这个非常具体的例子开始,称为模加问题。这个例子相当简单,但同时也非常有趣,因为它实际上具有非常 nice、有趣的结构。模加问题非常直观。你有两个数字 a 和 b,你计算 a 加 b,然后对某个大素数 d 取模。
这是一个非常简单的任务,你可以想象你可以把所有东西放入一个大小为 d 乘 d 的表中。然后一旦有了这个表,你就可以轻松解决问题。是的。是的,基本上就是这样。但随后你可能会自然地想到,是的,也许神经网络有一个隐式的表来进行检索,对吧?所以也许你可以实际上期望神经网络给你一些表来学习以进行检索。但有趣的是,如果你实际上训练模型,你会看到实际上学习了一个傅里叶基。
为了表示这个模加任务,这已经被以前的例子所感知,对吧?例如,在以前的设置中,你看到实际上看到了不同的频率,这些任务的频率,这些数字在嵌入空间中表示的不同频率。那么问题当然是,为什么?为什么你需要一个傅里叶基来进行这种表示,以及这种表示如何与符号设置相连接。对于这个问题,我们基本上想尝试用最简单但可行的设置来解决这个问题,对吧?
所以我们考虑这个两层网络,底层和顶层。底层将 a 和 b 的单热表示输入到神经网络权重中,它们经过 Q 个隐藏节点,每个节点都有二次激活。然后它发送到顶层,顶层输出一些东西。然后你想要最小化输出和 c 的单热表示之间的损失。这是一个非常简单的问题设置。如果你执行并基本上进行梯度下降,你会看到傅里叶基从训练中涌现出来。
为了进行分析,我们首先对所有这些权重进行傅里叶变换,因为所有这些权重都是实数,并且需要满足所有傅里叶基的埃尔米特条件。但从绿色集合解中我们看到的是超级有趣的。这里有一张图显示了绿色集合解的结果。这里,x 轴是隐藏索引,即隐藏节点索引。这里你有 q 等于 20,也就是 20 个隐藏节点。对于每个隐藏节点,对应一个索引,从 0 到 19。y 轴是傅里叶变换后的频率。
你实际上看到了最终解决方案中非常清晰的模式,对吧?特别是,对于每个频率,你实际上看到了确切的六个神经元。这些神经元沿线具有非零的傅里叶变换,对吧?例如,对于频率 1,你有 1、2、3、4、5、6。你有六个神经元,而对于频率 2,你也有 1、2、3、4、5、6。这些都是那六个解。这实际上相当有趣。你也看到了其他解,对吧?例如,在这个特定情况下,你看到图 2 有四个解。有四个神经元与之关联。我有 1、2、3、4,所有的四个?但同时,你也在其他方向上看到一些偏差,比如
神经元。对,所以它是非常规则的。我想你们可能会好奇,这种情况是否也适用于更大规模的问题。我说是的。这是一个维度 d 等于 23 的例子,也就是 23。现在我们实际上是在做分布。基本上,你会计算所有频率下解的顺序分布。
发生的情况是,四阶解确实会出现,你们应该能看到在四和六处有两个尖锐的峰值。如果你进一步扩展问题规模,例如扩展到 d 等于 127,你实际上会同时看到这两个峰值。但是需要应用某种权重衰减。如果使用非常强的权重衰减,你显然会看到所有解都坍缩为零解。这意味着一切皆为零,你得不到任何结果。但除此之外,你实际上能非常清晰地看到这两个峰值从训练中浮现出来。
当然,人们会问为什么会这样。这非常规则。有趣的是,这里实际上存在一种非常优美的代数结构和解释。你可以从损失函数的结构开始。既然我们做的是均方误差(MSE)损失,那么均方误差损失可以展开成这种复杂但非常有用的形式。这个 MSE 损失具有两种结构:一些负项加上一些平方和。这里有三个平方和项,还有一个项是你想要最小化的成本。
这些项基本上是多形式项,你可能会好奇为什么要这样定义这些看似复杂的项。我认为定义这些项的原因将在稍后很快展示。那么,这个解的基本条件是什么?全局最优解是将所有这些平方和设为零。这样你这里的所有东西都为零,并且希望第一个主导项为一。这是你能达到的最小可能数值。
有了这个充分条件,人们会问,这太复杂了,我们如何根据充分条件找到最优解?虽然它是非线性的,但有一些优美的代数结构使我们能够做到这一点。首先,如果你考虑具有不同隐藏节点数量的所有神经网络,并将所有这些方式放入这个大空间 Z 中。你可以证明这个空间遵循一种称为半环结构的优美代数结构。
通过定义环加法和乘法。环加法非常简单,即连接隐藏神经元。环乘法基本上是在隐藏维度上进行的克罗内克积。在这种情况下,这种结构将成为一个半环。此外,你之前在损失函数中展示的两个项,实际上是子环结构的环同构或同态。
那么这意味着什么?这意味着你可以从只满足一个或两个约束的部分解开始。例如,你有一个零一的部分解,满足第一个约束为零。你也可以构建另一个部分约束 z2,满足另一个项为零。然后,由于环同态的性质,你可以使用环乘法将这两个解相乘。
然后你得到一个解 z,该解 z 将同时满足这两个约束。通过使用这种机制,你可以基本上从部分解迭代地构建全局解。你从部分解开始,这些解只满足全局约束的子集。然后你可以使用环乘法组合这些解以获得更好的解,接着你可以使用环加法构建解,最终实现原始损失函数的全局优化器。即使损失函数高度非线性,你仍然可以构建它。
我们可以遵循这种构造模式。你可以构建许多不同的解。这就是你通过将二阶解和三阶解相乘,然后在不同频率上求和而构建的所有六个解。你还有另外四个解。基本上就像你有四阶、二阶乘以二阶,并对所有可能的频率求和。但需要通过某种方式修正。
所有这六个解,你也可以构建那些能够完美对应完美最小化的解,即所有 D 个解。一旦你有了构造解,你就可以证明它们实际上是全局最优的,这很好。但最有趣的是,如果你仔细检查梯度下降解,你会发现梯度下降解实际上完全遵循我们之前理论研究中刚刚做的构造。
为了看到这一点,我们首先获取大量的绿色 Excel 解,然后检查这些解是否是四阶或六阶。在这些特定场景中,你看到其中百分之百都是四阶或六阶。其次,你检查所有这些四阶或六阶解是否可以分解为二阶乘以三阶,或二阶乘以二阶。这基本上是我们理论构造中使用的构造方式。
事实证明,百分之九十五的此类解可以以这种方式分解。误差非常小,误差就像百分之零点几,而不是一个大数,这意味着分解确实有意义。最后,如果你检查分解组件,它们实际上与理论构造形式精确匹配。你可以用不同的参数化将它们解析地写下来,你实际上看到大多数解因此落入这些类别。
只有百分之二的解不匹配这些类别。但即使在这百分之二的解中,如果你逐个检查,它们实际上仍然是这些形式的解,只是可能没有完全收敛到终点。如果你打印出解中参数的分布,你实际上也会看到非常优美的结构。看起来绿色细胞真的偏好……
这些解决方案将导致高度对称的结构,这非常有趣,也是我们要尚未完全理解的事情。因此,这一研究路线的启示可能是:首先,令人惊讶的是,梯度下降的解实际上最终会得出一个可以用符号系统解释的解。也许一个问题在于,神经网络是否实际上学会了更高效的符号表示,而我们却不知情?现在我们知道了一些,因为我们构建了这样的代数结构,但也许在未来对于更复杂的任务,你也可以构建这样的结构,以便梯度下降可以转化为那种形式。
另一个启示是,见证者发送(witness send)可能只是实现解决方案的一种方式。可能存在其他方式来实现解决方案。例如,如果你能使用非常先进的代数运算,也许也会给你类似梯度下降的解。在这种情况下,也许你不再需要使用梯度下降,梯度下降最终可能会变得过时。当然,这些基本上只是推测。但这篇论文实际上提供了一些微弱的灯光,表明这对于像神经网络这样复杂的系统可能是可能的。
未来,也许我们可以从应用系统开始,让它工作得很好,因为它是一个黑盒,你可以打开这个黑盒,最终找到对神经网络的更好理解,并使整个系统工作得更好。谢谢。好的,非常感谢余远东。同时,在结束之前,我们可能还有一两个问题的时间。教室里有人有问题吗?
呃,所以我确实有一个关于最后一部分的问题,这非常有趣。当然,这种现象对损失函数本身有多敏感?如果我说均方误差损失(MSE loss),是的,如果你切换到其他损失呢?这是一个非常好的问题。对于其他损失,我们还没有做过非常系统的实验,对吧?之前的结果表明你仍然可以得到傅里叶基,但它们会是扭曲的傅里叶基。是的,所以你会得到那个结果。
当然,分解解的方式也可能不同。所以有些东西我们需要弄清楚。是的,是的,因为我在想均方误差损失(MSE loss)是否有什么特别之处,因为我们知道傅里叶变换的能量在均方误差损失下是保留的,对吧?这是它特别的地方,对吧?是的。所以我认为还有,而且我认为你的分析,如果我记得没错的话,你的分析基本上等同于你在半环上做傅里叶分析,对吧?
是的,实际上,这里发生的情况是,如果你在半环上做傅里叶分析,你首先做傅里叶分析,然后你可以基本上做环乘法。所以这个环乘法的定义与傅里叶基有关。是的,所以如果你做……基本上,比如在傅里叶基上做时序乘积,这基本上与在原始基上做更复杂的运算相同。是的,是的,是的。是的,我觉得均方误差损失可能有什么特别之处。是的。这只是因为你知道它在傅里叶分析中非常特别。
是的,它有点特别,因为使用均方误差损失,你实际上可以将损失分解为这种形式。是的,是的。那里会有很好的结构。是的,是的。所以如果你有softmax,也许就不同了。是的,这是真的。但问题在于,现在你有一个数据点,表明这是可能的,但能否将这个数据点扩展到更一般的类别?我们还不知道。但这只是一个基本的初步步骤。
在结束之前还有最后的问题吗?网上的人。没有。非常感谢这次演讲。好的,再次非常感谢余远东,也感谢大家参加这次演讲。下周见。是的。谢谢。再见。再见。谢谢。再见。谢谢。