大家好,我是来自 Meta AI 的田渊栋。Meta 以前叫 Facebook,后来改了名字。我是那里的研究科学家兼经理。今天我要讲的是“AI 引导的代理建模在现实世界优化中的应用”。我稍微改了一下标题,以更忠实地反映演讲内容。我之前从事强化学习研究,现在仍在进行这方面的研究。强化学习在许多游戏中取得了巨大成功,对吧?大家已经在围棋、国际象棋、扑克等游戏中看到了显著的成功。我想昨天 DeepMind 实际上也发表了一篇演讲,探讨如何将 AlphaZero 式的方法应用于 AlphaTensor,从而获得有趣的解决方案。这就是其应用场景。
在我们这边,我们在 2018 年也复现了 AlphaZero,试图基本使用 2000 块 GPU 来训练一个强大的围棋模型。该模型实际上被四位职业围棋选手以 20 比 0 击败。他们连赢一局的机会都没有。而我们只使用了一块 GPU,每步棋耗时 50 秒。但在那之后,人们又开始研究这些游戏。我们看到了针对不同游戏的许多超人表现者。那么,让我们思考一下游戏之外是什么?如果我们使用强化学习,或者使用任何类型的搜索技术,会怎样?
这一方向的一个动机实际上来自 Google 的芯片设计工作。在那篇论文中,他们展示了将人类专家数周的工作减少到完全自动化的六小时设计是可能的。这给了我们一种启发,即也许你可以将任何类型的搜索技术、优化技术或强化学习技术应用于优化问题。对于所有这些优化问题,我们实际上都有一个定义良好的函数 f 需要优化、最小化或最大化,你真的想找到解决这些问题的方法,对吧?
人们可能会想,等等,这似乎不可能,因为许多问题实际上是 NP 难的,好吗?为什么?你可以证明,除非 P 等于 NP(这极不可能),否则没有好的解决方案。那么,为什么机器学习或任何类型的学习技术实际上可以帮助解决这些问题呢?我认为一个理论论点是,这保证了我们的最坏情况保证,这意味着为了证明下界,你真的需要构造一些非常具体的例子,一些对抗性例子,使得任何算法或特定算法在这些特定的具体问题上都失败。
这样你就可以证明,对于这类问题族,你无法在多项式时间内找到解决方案。但这种证明实际上给了你一些见解,对吧?所以对于优化问题的特定分布,可能会有更好的启发式方法。这大概就是为什么在实践中,处理优化问题的人总能找到一种非常有效的启发式方法,它针对特定分布非常有效。基本上,这就是我们真正想利用机器学习来解决这个问题的直觉。
回想一下游戏方面,我在思考如何利用这种游戏范式来优化。我们思考的是,回到游戏中,我们实际上是如何用机器学习模型取代人类知识的?例如,我们用称为策略网络的机器学习模型取代动作的选择。我们还用称为价值函数的机器学习模型取代对棋盘局势的评估。我们基本上可以利用这一点,在短时间内获得更快、更好的解决方案。这就是动机。
但如果从搜索的角度来思考,搜索中有很多组件可以用机器学习模型来取代,对吧?我在这里基本上列出了一些可能通过机器学习技术来取代或改进的不同组件。例如,你有搜索启发式方法。在这一部分,我们在这方面做了大量工作,以改进搜索器,从而为困难的优化问题获得更好的解决方案。
我们从 2019 年欧洲会议发表的“学习重写”论文开始,试图学习这种重写启发式方法,如何逐步改进初始解,直到它变得更好,甚至获得比之前方法更好的解决方案。我们还有最近的工作,试图应用强化学习和网络规划,这是一个大规模混合整数线性规划问题,以找到初始解。该解决方案可用于更高效地解决混合整数线性规划。
我们最近还有 Taoan 在本研讨会上的工作,尝试使用对比学习来学习大规模邻域搜索的启发式方法。这一方向本身就是一个非常有成果的方向,我们可以尝试在其中结合机器学习进行优化。好的,我们还有另一个方向,这也是你可以使用机器学习模型攻击的一个角度。这里有一个简单的例子,试图告诉你如何以强化学习和某种顺序决策过程的形式来制定优化问题。
如果你把优化看作一种搜索技术,你可能想要思考如何进行顺序搜索以找到好的解决方案,对吧?但对于一个优化问题,可能存在无数种将其构建为搜索问题的方法。如果你构建得不好,那你基本上从一开始就完蛋了。这里有一个有趣的图表。该图表基本上说,好吧,你构建了这种顺序决策过程,以便在开始时动作并不真正重要。
你可以选择其中任何一个。假设你有 50 个动作,你实际上不需要思考。你只是随机选择,而在第 51 个动作时,该动作才真正重要。如果你选择顺序……
如果决策过程是这样的,那么任何方法、任何种类的搜索技术都会陷入困境。在这些场景下,搜索技术会卡住,因为它必须先探索前50个动作,并以指数级的方式扩展整个树,直到你真正触碰到那个真正重要的动作。对吧?所以对于这类场景,任何种类的搜索标签、任何种类的强化学习都不会起太大作用,对吧?
但如果你基本上像交换你的动作一样,你说,哦,我真的想先使用那个重要的动作。你先选择那个重要的动作,那么突然之间,问题就变得微不足道了,对吧?所以你只需要将其简化为一个有界问题。你从好的动作开始,然后好的动作会告诉你我们应该去哪里。
对于这一点,我们实际上也有一系列工作,试图重新排列动作空间,使优化问题变得更容易。因此,我们有了ARMCTS系列,试图基本上为许多树的搜索学习动作空间,以便更快、更高效地解决优化问题。
最近,我们还在编译器优化问题中进行了应用,重新排列动作,首先学习一系列重要且有用的编译器路径,以便这些编译器路径有助于减少最终二进制代码的大小。第三部分是,我们也可以尝试学习状态表示。
这里有一个小图,来自我们的一篇论文,试图解释为什么状态表示中存在许多无关特征。这里基本上是一个非常简单的马尔可夫决策过程。你醒来,打开窗户,你基本上想要获得更多阳光。
但你会看到很多东西进入你的眼睛,对吧?所以你会看到太阳,看到飞机,还会看到鸟,甚至火鸡。在这种情况下,你知道,你的状态空间中只有非常小的一部分子集对你的实际决策真正重要。
所以,真正重要的是你可以触摸窗帘,然后移动东西,这是可控的。而且,一旦你移动了窗帘,你也会得到奖励,也就是让阳光进来,对吧?但对于状态中有很多其他信息并不真正重要。
所以你真正想要分解状态,使得只有最重要的状态参与你的决策和你的机器学习模型。由此,我们也围绕这些方向发表了几篇论文。最后,这是我今天演讲的主题。最后一个组成部分,即如何设计电路模型,以便学习良好的模型来基本上加速你的优化过程。
人们可能会想知道,为什么我们要学习电路模型。这是因为,首先,在现实世界的问题中,评估真实系统非常缓慢,对吧?例如,你想优化你的计算系统。获得一次反馈需要花费一天时间。
如果你只是尝试任何在线方法,那你基本上就完蛋了。没有办法基本上像获得解决方案和获得问题反馈那样快速。其次,你的最终优化,即模型的最终结果可能非常嘈杂。你真正想要找到一个代理模型,为你提供准确的预测。
所以这也是一个难题。那么如何设计电路模型?这是一个大问题。为此,我们也有一系列围绕该方向的工作。我还没有,我不,我没有时间涵盖前两个,它们也非常有趣。但今天我要谈论这两项工作。
一项是与Bistro Group的合作,关于如何为非线性计算优化问题学习线性代理模型;另一项也是与我们的产品组的合作,试图基本上建模线性偏微分方程的动态特性以及频率响应,以加速天线的搜索和设计问题。
好吧,让我们从第一个问题开始。正如我提到的,正如我所说的,这是与南加州大学(USC)以及莱斯大学(Rice)和我们自己的合作。对于这一点,我们基本上都知道,设置是我们想要优化组合区域上的非线性函数,好吗?
这里有一个小图,展示了设置的范围。所以你的优化函数可以是高度非线性的,对吧?所以景观形状很奇怪。我们真的不知道它是什么。但你也有非线性约束。
所以这个设置实际上在许多不同场景中非常普遍,因为它实际上应用于许多现实世界领域,包括计算机系统规划、光子器件设计,对吧?吞吐量优化等。
这里有一个例子。这是一个现实世界的例子,你可以从大型语言模型、非英语语言模型的训练中获取。这里基本上被称为嵌入表替换问题。
从数学角度来看,这个问题做的是,你有k个表,好吗?它们基本上是查找表,你需要基本上将这k个表放入n个相同的设备中。这些设备意味着GPU,对吧?
然后,为了放置它们,你基本上有一个约束。约束基本上说,哦,这个表i有内存需求mi,每个设备都有容量,对吧?你想放置表,使得每个表的内存需求之和,每个设备不超过该设备的内存容量,同时你想减少计算所有表的延迟。
是的,所以这里的基本公式是。公式基本上是你有一种二进制约束。这个xij意味着你想将表i分配给设备j。
你基本上说,每个表i必须只分配给一个设备。那基本上就是约束。这是容量约束。你想最小化某些函数,以便整个过程以高效的方式完成。
那么为什么这个误差是非线性的?因为有很多系统问题。例如,GPU有一种奇怪的批处理属性,对吧?如果你将多个表放在同一个GPU中,它们可以以更快的方式执行,对吧?所以这是一种非线性因素。
如果你将多个表放置到多个GPU中,当它们减少所有内容时,你需要有
通信成本。这也是一个非线性问题。对。因为AI是非线性的,所以这可能会使整个问题变得复杂,对于现有的求解器来说,这确实不是一个简单的问题。这实际上是一个大问题。所以,之前人们的工作重点在于尝试将AI线性化。对。也就是说,我们要对目标函数进行线性化。希望这种线性化能给出好的解,然后你可以进行反复调整。比如,稍微调整一下这些权重,得到一些解。也许这个解不够好,那就再稍微多调整一些权重,得到新的解。我是凭直觉这样做的。好,对于Circle,我们实际上试图让整个过程更加自动化。
是的,我们都知道线性优化很难,因为通用的求解器通常很慢,而针对特定领域可能有特定的求解器,对吧?所以,存在一种非常通用的非线性优化问题。例如,遗传算法或贪心方法。但这些方法通常很慢,可能需要永远才能得到可行解,甚至可能无法得到任何可行解。抱歉,你说的“可行解”是什么意思?可行性不应该那么难吧?我猜是指目标函数的最优性。对,对,没错。所以,如果你去掉了这些非线性函数,直接调用任何线性求解器,它应该很快就能给出可行解,对吧?
我这里的观点是,如果你直接应用遗传算法或任何基于梯度的方法,而这些方法内部没有内置可行性检查机制,那么你可能无法很快得到可行解。是的,这就是重点。而且我们知道,相比之下,线性优化更容易一些,因为我们已经有很多求解器能够解决这些问题,对吧?所以我们基本上想提出一个叫Circle的想法,它旨在找到一个线性代理模型。这样,线性代理模型的解实际上就匹配原始非线性问题的解。
好吧,也许这个逻辑有点绕。我想重复一下,说明实际的逻辑是什么。假设你有一个带有计算约束的非线性优化问题,就是这一个,对吧?你真正想用的是这个,并且你想预测一个代理成本。一旦你将这个成本代入线性代理优化问题中,得到的解对于优化原始非线性优化问题是有用的。好吧,这就是Circle的基本逻辑。大家有什么问题吗?为什么这是可能的?
我认为这肯定有很多假设的限制。例如,一个明显的限制是,如果最优解位于可行解的内部,那么这是不可能的,因为如果你将其线性化,它必须在顶点上。除非你的线性近似像凸集一样,或者是所有的整数点之类的。对,对,对。那么,你对目标函数有什么假设吗?比如这个延迟是凸的?不,不,不。那不是。它不是凸的。是的。所以这篇论文更多是一篇经验性论文。
这意味着我们实际上尝试了这种方法,并且在现实世界的问题中确实有效,我们也进行了简单的电路分析。但是,要对这种方法进行非常彻底的电路理解,仍然超出了本文的范围。是的。所以我认为明显的限制是,如果内部存在最优解,那么在这种框架下你将无法得到它。但有趣的是,如果你尝试在现实世界的问题中应用,你实际上会在许多不同的场景中看到相当好的性能。这就是这项工作的重点。
好吧,那么如果你认为这是一种好的设置,下一个问题是如何找到真正的、正确的目标函数,对吧?也就是说,如何找到这种代理成本c,以获得这些解?提出的方法是使用基于梯度的优化,对吧?所以你有一个这样的流程。你知道,首先你要得到一个代理系数c,使得输出x*是目标函数的解,对吧?那么,我们能不能直接进行反向传播呢?也就是说,我只想最小化这个损失函数。
而这个损失函数和x*是由线性求解器提供的,对吧?然后,我们基本上希望通过目标函数和求解器进行反向传播,以获得代理系数c。这基本上是一个粗略的想法,对吧?但是,嗯,你能不低估吗?你能得到吗?你能得到一些东西吗?你怎么保证损失函数不使用任何地面最优解或其他任何东西?所以你只是在寻找具有低值的c。对,没错。所以,这就是为什么我们有该问题或该方法的三个版本,对吧?
第一个版本叫Circle Zero。我的意思是,Circle Zero基本上说,我只想解决一个特定的目标函数,对吧?所以你只有这个f(x),你想解决它。你进行反向传播,然后你会得到一个代理系数c,这个系数c会导致该特定非线性优化函数的最优解,对吧?所以就是函数f。我的意思是,正如你所说,是的,这是真的。你可以得到一些非常具体的系数,这些系数引导你解决优化问题的解。但那个不具有泛化能力。
那是完全可能的,是的。我不确定我是否正确回答了你的问题。酷,是的,那是一种方法,对吧?但你可以考虑另一种不同的方式。所以,好吧,我们经过这个过程,只得到一个解,即x*。如果我们有另一个问题,设置非常相似但目标函数略有不同呢?在这种情况下,我们实际上提出了Circle Prior。在Circle Prior中,我们实际上也考虑了这个问题特征。
这种所谓的上下文特征,对吧?这些特征对于确定我们实际优化的损失函数是有用的,对吧?所以你有一个函数f,你想关于变量x进行优化,但是这个函数f也是参数化的。
基于问题特征,确实需要学习一个也参数化问题特征的解。那么如何实现呢?我们可以采用 Circle Prior(循环先验)方法。在 Circle Prior 中,求解器和目标函数这两个模块依然存在,但代理成本 c 或代理系数 c 不再是一个独立的变量,而是已知问题特征的函数。通过全程反向传播,我们不再学习代理系数 c 以求解非线性问题的最优解,而是训练出一个神经网络。该神经网络将问题特征 y 映射为代理系数 c。
由于该神经网络是在新问题上学习的,对于具有新特征 y 和新描述的新问题,我们可以直接输入问题特征 y。神经网络将直接给出代理系数,该系数可用于使用线性或代理优化求解新问题的最优解。简而言之,一旦训练好该神经网络,在测试阶段,我们可以输入测试问题的描述,从而获得系数 c。这些系数可用于调用线性求解器,从而得到原始非线性优化问题的解 x*。
当然,我们可以将两者结合。首先学习从问题描述 y 到 c 的线性映射(即前一张幻灯片中的 Circle Prior 主要内容),然后使用该 c 作为初始代理系数 c0。接着,我们可以在此基础上应用 Circle Zero 方法,以进一步提高解的质量。这种混合方法结合了 Circle Prior 和 Circle Zero,从而在最终结果上表现更好。
你是在测试阶段进行这些操作吗?是的,这是在测试阶段进行的。那么,为什么还要关心最后的梯度更新步骤呢?你是指这个吗?不,回到那三个模块,也就是你提到的蓝色模块。据我理解,你有一个初始的 c,但我想知道为什么这里也有参数 theta 的更新?既然不再关心 theta 了,为什么还要更新它?
哦,我明白了。在测试时间,你已经有了一个好的 theta,并且它工作良好。利用这个 theta,你可以得到初始的 c0。那么,为什么不在最后两个模块上进行反向传播,而不更新 theta 呢?啊,我懂了,抱歉,这是笔误。我应该移除那个模块。我只是复制粘贴时出了错。所以,我们首先进行 c0 的计算,然后只对最后两个模块进行反向传播。最后一个模块不应该存在,抱歉造成困惑。
总结一下:对于 Circle Zero,你需要优化两个模块并进行反向传播。你不需要任何离线训练数据,只需优化特定的函数 f,即即时解决单个问题实例。而对于 Circle Prior 方法,我们使用离线训练数据,这些数据由一系列问题描述组成。我们以批量方式运行以学习神经网络,然后在测试时使用该神经网络获取测试时的 C。
在 Circle Hybrid(混合)方法中,我们同时执行离线训练和针对新问题的在线微调。正如我们讨论过的,那个模块不应该存在,所以我应该移除它。这种方法与之前的工作有很多联系,我列出了一些相关工作。Circle 与近期“预测后优化”系列工作的一个有趣对比如下:人们试图将预测和优化配对,即为了预测线性问题的线性成本,我们不使用 L2 范数,而是使用与优化问题相关的范数。
Circle 与这种“预测后优化”方法的区别在于:首先,“预测后优化”适用于具有线性目标的线性优化问题,而我们适用于非线性目标。其次,“预测后优化”实际上需要目标函数的真实线性系数。但在我们的案例中,我们不需要这些。我们的训练集只需要问题描述,即只有一列问题描述,无需提供算法任何最优解或线性系数。
算法会自行解决这个问题,这就是其优势。在我们的案例中,我们适用于非线性目标,且该非线性目标只需可反向传播。只要获得梯度,就可以尝试这种方法。对于线性目标,不需要任何解析形式。这与现有的组合约束非线性求解器形成对比。例如,如果在 SCIP 中尝试非线性求解器,它们实际上要求你写出解析形式,如 log、exp、多项式形式,以构建非线性函数,从而找到上下界进行基准测试。
但在我们的案例中,我们只需进行梯度下降,因此不需要任何解析形式。当然,两者都需要上下文信息,如问题描述。这是解决此类问题并将其扩展到未见过的同类问题的最低要求。
我们也看到了许多其他相关的工作,其中很多实际上是由这个社区提供的。感谢所有这些工作,它们激发了我们的思考并导致了 Circle 项目的诞生。接下来,让我们继续讨论我们在两个问题上的最终结果。其中一个称为嵌入表分片(embedding table sharding)。这实际上是训练神经网络中的现实问题,更具体地说,这对于训练我们的 S 模型非常有用。既然这是公开的信息,我可以直言不讳。这基本上是我们想要解决的优化问题。如我所提及,这里存在非线性误差,同时也有线性约束。
我们将此与多种基线方法进行比较,例如贪婪算法。我还与一种名为 DreamShard 的基于强化学习的方法进行了比较。这也是我们即将在欧洲发表的工作。我们检查了结果。横轴代表基准测试,即深度学习推荐模型基准。该基准有几个参数,首先是表格的数量。横轴上列出的表格数量从 10 到 60。从 M10 到 M60,所有实验都放置在四块 GPU 上进行比较。
主要有两种比较维度。一是解的损失(solution loss),即我们要最小化目标函数,函数值越低,解越好。二是为了达到该性能,获取解所需的时间,即运行时间。我们确实希望运行时间越低越好,同时解的损失也要越低越好,即越低越佳。这就是基本的设置。
对于非常小规模的问题,例如只有十个表格时,与领域启发式算法和贪婪算法相比,CircleZero 的表现相当不错。它的解的损失相当低。同时,速度也合理,虽然比启发式算法慢,但实际上比贪婪算法快,且处于合理范围。例如,CirclePrior 非常快,因为它只需一次性求解优化问题,利用预测的 C 即可。
同时,CirclePrior 的损失并不那么糟糕,仍然相当不错。这是一个有趣的权衡。如果将规模扩大到例如六十个表格这样更大的规模,我们会发现优势更加明显。对于 CircleZero,它提供了非常小或非常好的解,其损失低于两种方法,即领域启发式算法和贪婪算法。
此外,它优于我们之前的工作 DreamShard,后者实际上是利用强化学习来获取良好的解。有趣的是,使用求解器实际上能提供更好的解。如果将其与 CirclePrior 结合,得到 CircleHybrid,则可以获得更好的解,损失甚至更低。当然,如果仅使用 CirclePrior,解的效果不如前者,但速度快得多,运行时间显著缩短。
这里存在权衡。在实际应用中,当使用这种方法时,总可以在使用先验解和使用微调解之间进行权衡。例如,可以通过约束部署期间优化步骤的迭代次数来实现这种权衡。好的,这是第一个应用。第二个应用称为逆光子设计,这是材料设计问题的另一个有趣应用。
该目标是为物理上可行的器件设计,这些器件将光波路由到不同的路径,具体取决于其波长。这是一种非常小的器件,例如 100 乘 100 纳米。光从上方射入,我们希望光根据其波长进入不同的路由。对于波长一,光向该方向传播;对于波长二,光向此方向传播。这就是此类器件设计的目标。
人们可能会问,为什么不使用反射镜?但在如此狭小的空间中放置镜子非常困难。因此,必须利用电磁波的性质,特别是衍射性质,来分离这两种波长。这就是目标所在。就优化问题而言,这是一个二进制图像,尺寸为 18 乘 18 乘 18。对于每个位置,都有一个零或一的设计变量。
无论您在那里放置某种材料还是留空,通过添加不同的设计材料,都会改变该小块区域的电磁特性。这样,光从顶部进入时,自然会分裂成两条不同的路由。这就是设计问题。有人问问题吗?没有。好的。
对于这些设计问题,首先变量是二进制的,即每个槽位必须是零或一。其次,还有约束条件。该约束基本上表示您不希望这些“斑块”太小,即希望斑块具有一定的最小尺寸,同时也可能有最大尺寸的限制。
基本上,您不希望出现孤立的一个点,因为它与周围其他部分隔离,这是不允许的,因为会造成制造问题。因此,可以对设计问题施加一些线性约束,而目标函数则非常复杂。这里的目标函数很复杂,我们甚至不完全理解,因为……
领域知识通常由领域专家提供。我想表达的是,出于各种理由,我希望最小化这些函数。是的,我们实际上使用了数据集。这些数据其实已经由谷歌公开了,对吧?我们的一位合著者来自谷歌,他现在在Meta工作。是的。我们还尝试将这些方法与基于刷子的算法进行比较。针对该特定领域有许多专门设计的算法,以获取某些解决方案。我们试图利用我们的一般方法,以展示该方法是否能做得更好,并在多个任务上进行评估。
这里有一系列不同的任务,用于测试算法的性能。例如,这里你基本上试图将波从左到右弯曲,以向上行进。你还希望基本转换模式,即从一个光束转换为两个不同的光束。构建任务有几种不同的方式,未来可能会有更多任务。以下是结果。结果显示了相同的趋势。
对于Circle Zero,它提供了合理的性能,优于现有的最先进水平。这是一种通过梯度方法。它也是一种梯度下降方法,但不涉及任何组合转换组件。它基本上是在做梯度下降,但将结果投影到可行区域。我是直观地这样做,没有使用任何现有的求解器。但我们的方法能够获得更好的解决方案,即更低的解决方案损失。
同时,如果使用Circle Prior,你也会获得更快的运行时间。如果使用Circle Hybrid,则在相同时间内获得更低的解决方案损失,以及相对较快的运行时间。你也可以尝试对其他设置做同样的事情。我不想在这上面花太多时间。我认为这两个任务可能太简单了,大多数算法给出的解决方案损失为零,这很好。最难的任务基本上是二分配器和多路复用器。
这里展示了一条曲线,说明Circle如何收敛。例如,如果你使用这种通过梯度方法,你会看到随着步骤的不同,曲线下降,但非常嘈杂,并且在最终解决方案方面可能不会触及零。如果你尝试使用Circle Zero,你会发现曲线下降得快得多。如果使用Circle Hybrid,下降得更快,因为它们从代理成本的较好起点开始。
这就是为什么Circle论文中Circle能起作用的良好说明。是的,好的。这就是Circle论文的基本结论。总之,它可以处理具有微分优化的工业级应用。它为组合非线性优化问题提供了良好的解决方案。这实际上在工业级问题中有很多覆盖范围。
Circle有不同的版本。我们有三个版本。我们有一个称为Circle Zero的零样本版本,还有一个离线训练版本、微调版本称为Circle Prior,以及Circle Hybrid。好的,这是演讲的第一部分。有什么问题吗?如果没有问题,我将继续演讲的第二部分。
这是我与我们的生产团队合作进行的另一项工作,关于天线的设计。对于这项工作,我们试图使用一些自注意力复多项式为线性偏微分方程的频率边界构建代理模型。人们可能会想知道为什么有多项式。这有点神秘,但你会在接下来的几张幻灯片上看到为什么会这样。
我们在这里讨论不同的问题,试图解决线性偏微分方程。你可以想象这类方程。你可以想象这里有某种时空信号。这可以是空间中的电磁波,并且可以涉及时间。它可以是电场、磁场或任何类型的连续场量。
你基本上想要解决这个问题。这是一个电人,这是一个线性偏微分方程,其中f是一个线性函数或仿射函数,它接受信号本身以及信号的梯度和高阶梯度作为输入,并进行一些线性组合。这种组合会影响信号随时间的演变。这就是我们正在处理的线性偏微分方程。
h是我们想要放入系统的设计选择,以便演变按照我们希望的方式进行。这种公式有很多例子。例如,热方程、波动方程,甚至薛定谔方程。在这些方程中,它仍然是线性方程,因为你在两边只看到phi的一阶项。在两边,没有二阶项,也没有像phi平方或phi与自身之间的任何非线性相互作用。
你也有麦克斯韦方程,并具有相同的特性。你只有E和B,即场,其余所有项基本上相对于E和B是线性的。通常,为了找到满足我们任何要求的良好设计,人们通常想要模拟这些偏微分方程。
我们可以调用任何商业求解器来模拟这些偏微分方程。准确高效地模拟更具挑战性,并且需要大量努力。为了获得良好的解决方案,你可能需要购买商业软件并实际运行它,拥有许可证,并支付大量费用才能获得。那么问题是,我们能做得更好吗?
为此,我们实际上有一个非常具体的设置。我们心中有一个特定的应用,即天线设计问题。我们基本上希望拥有一个看起来像那样的天线。人们会说,哦,那看起来不像天线。我们对天线的印象是,你有一堆像金属棒一样伸向天空的东西,并将它们插入不同的……
就像排列方式一样,这样它就可以接收来自天空的一些信号,对吧?这就是我们要对天线的普遍认知。但在实际设备中,你真正想要的是将天线做得尽可能小。你把它放入一个非常小的部件中,这样它也能从外部接收强烈的电磁波。对,设置就是这样。因此,为了做到这一点,你基本上想要设计某种二维印刷电路板,并在其中以某种类似非常神奇的布局放置金属,以便其频率响应具有特定的形式,对吧?因此,对于特定频率,它将具有极强的吸收性。然后,你基本上通过测量电流或电压,实际上可以读出信号,并获取来自其他人的信号。对,这基本上就是你想考虑的设计问题。
所以在这里,你基本上想要找出所有部件的最佳排列方式,以便频率响应看起来像那样。对,这就是标准。好的,所以在获得任何频率响应之前,有一些目标频率响应标准。比如说,好吧,我希望在某些频率下,这种频率吸收或频率响应低于某个阈值,并且你希望在该频率下的频率响应低于阈值。这基本上就是标准,而这基本上是一条满足该标准的非常好的频率响应曲线。好的,这是基本设置。好的,让我们回到原始问题。我们如何真正处理这些看似复杂的方程,对吧?
为了获得关于这些线性偏微分方程的任何有趣见解,我们首先将其离散化为这种形式。对。因此,我们实际上可以证明,对于任何这样的线性偏微分方程,在对其空间域进行离散化后。你总是可以将其写成以下形式,对吧?所以这里有一个例子。呃,所以你有这些波动方程,然后,然后那个波动方程呃,有这个拉普拉斯,有这个呃,算子。这在空间域上,对吧?所以你基本上在空间域上进行离散化,使得拉普拉斯算子变成一个线性算子,即 b。此外,你可以将这个二阶时间偏微分算子分解为两个一阶算子,对吧?
通过写出两个这样的方程,你基本上得到了这个 A。这个 A 具有这种有趣的形式,然后这对应于线性偏微分方程的谱离散化。好的,一旦你有了那个,那么我们实际上要证明一个定理,该定理实际上会告诉你线性偏微分方程在频域中的性质。对。对于频域,如果你有电气工程背景,人们可能会很熟悉,对吧?所以你基本上尝试使用时域信号进行傅里叶变换,你基本上将这个 phi(x,t) 转换为 phi(x, omega)。omega 是你想要捕获的频率。所以一旦你有了频域表示,那么你就有一个定理。
该定理基本上说,对于任何线性偏微分方程,对吧?所以你基本上可以捕获你的偏微分方程每个位置处的信号。那么,对于频域信号的任何两种线性组合的比率,它们总是具有特定的参数形式。对。所以这里的定理基本上说,两个信号的比率是两个复多项式的比率。所以我们可以证明这是正确的。因为它是复多项式的比率,你总是可以将它们写成多个一阶线性因子的乘积。这是通过代数基本定理完成的。所以你基本上总是可以这样写。所以你实际上不知道 c0 是什么,z 是什么,p 是什么。它们实际上是些神奇的参数。我们真的不知道它们是什么。但至少我们知道这是我们陷入的形式。好的。有什么想法、想法或问题吗?哦,两分钟。好的,抱歉。好的,所以如果你没有其他问题,那么我们尝试将这个定理应用于非线性优化。
频率响应有一个术语称为散射系数。它实际上具有的形式也是两个方程的有理形式,然后你可以应用这种形式,你实际上可以得出频率响应的以下参数形式,对吧?所以它基本上采用了这种形式,对吧?所以你有 z0,并且你在其分子和分母中有 z 和 p。好的,所以这触发了以下思考。好的,也许我们应该直接预测这三个数字,这三个像系数族,这对于确定频率响应的最终参数形式很有用,对吧?为了做到这一点,我们基本上喜欢从基于图像的设计选择表示中学习映射,一直到这三个量,对吧?这种映射可能非常复杂,所以我们利用神经网络的力量来学习从表示到这三个量的映射。呃,到我们不知道的量,但它们对于确定最终滤波器响应至关重要。好的,这基本上就是想法。
好的,所以一旦我们有了想法,那么我们需要收集数据,对吧?数据实际上是由商业软件收集的。所以我们只是像把天线设计放入软件中,然后软件会告诉你滤波器响应。然后我们可以基于这些数据对模型进行评估,对吧?所以我们首先可以进行静态评估,这意味着我们有一个保留的输入输出数据集,然后我们尝试测试神经网络学习的代理模型是否准确,对吧?所以我们基本上想看看损失函数是什么,损失有多少。这就是静态评估。但更重要的是,我们还希望检查学习的代理模型是否有助于找到天线的最佳设计。我们只是将代理模型插入搜索范式,啊,这实际上是由强化过程驱动的,然后一旦搜索给你最优解,你基本上想要检查该解决方案是否真的满足由商业软件指定的初始计划中的标准。对,然后在呃,然后我们展示了一些结果,比如静态演化,我们实际上看到我们的方法使用变压器和图像作为输入,并且实际上有
与基线相比,误差显著降低。这些基线包含许多非常简单的模型。例如,我们仅使用多层感知机,并将天线部件的坐标作为输入,尝试预测频率响应。这种方法效果并不理想,而我们的模型在误差方面实际上要低得多。误差减少了约50%。
我们还测试了CDP框架。这是CDP的结构。如果采用CDP模型,我们基于理论保证提出该模型,发现其误差实际上低于未使用我们CDP公式的原始模型。原始模型直接预测频率响应,而不是使用零点和极点作为参数化方式。
在可视化方面,你会看到原始预测非常锯齿状,存在许多不连续的结构,因为原始预测没有利用由我们的定理证明的频率响应结构。而我们的CDP模型预测出的结果非常平滑,且与实际仿真结果一致。
我们还尝试了动态演化过程,将CDP模型与搜索技术结合,看是否能带来更好的性能。答案是肯定的。与原始模型相比,CDP模型在搜索技术后找到良好设计问题的成功率更高。
我们基本尝试了三种模型,每种模型进行了三次搜索尝试,使用不同的随机种子。对于每次尝试,我们检查前三个解决方案中是否有符合标准的可行解。随着数据量的增加,两者的成功率都会提高,但CDP模型在成功率方面优于原始模型。
未来的工作是如何将此公式应用于更一般的线性偏微分方程,因为理论并不阻止这样做。我们还希望在更复杂的情景下进行测试,例如三维结构化天线等,以及其他类型的设计问题。
这就是本次演讲的内容。如果还有更多问题,请告诉我。时间不多了,感谢大家的关注。YouTube搜索:yuandong Yuandong Tian - AI-guided nonlinear optimization for real-world problems - IPAM at UCLA