通过神经网络对物理模型进行参数化以解决拓扑优化问题

最近,一篇不太吸引人的文章“ 神经重参数化改善了结构优化 ”已上传到arXiv.org [arXiv:1909.04240]。 然而,事实证明,作者实际上提出并描述了一种使用神经网络来获得物理模型的结构/拓扑优化问题的解决方案的非常简单的方法(尽管作者自己说该方法更为通用)。 这种方法非常好奇,富有成效,而且似乎是全新的(但是,我不能担保后者,但是无论是研究的作者,ODS社区还是我都无法回忆起类似物),因此对于那些对使用神经网络感兴趣的人来说可能很有用,以及解决各种优化问题。

你在说什么 拓扑优化的任务是什么?


试想一下,例如,设计桥梁,多层建筑,飞机机翼,涡轮叶片或其他任何物体所需的螺纹。 通常,这可以通过找到一名专家来解决,例如,一位建筑师,他会利用自己对Matan,Sopromat,目标区域的知识以及他的经验,直觉,测试布局等知识。 等 将创建所需的项目。 在此重要的是,这个收到的项目只会对这个专家发挥最大的作用。 显然,这并不总是足够的。 因此,当计算机变得足够强大时,我们开始尝试将此类任务转移给他们。 因为很明显,计算机可以在内存中存储和短路...为什么不呢?

这样的任务称为“结构优化问题”,即 产生承重机械结构的最佳设计[1]。 结构优化问题的一个子部分是拓扑优化问题 (实际上,所讨论的工作专门针对这些问题,但这绝对不是重点,稍后将重点介绍)。 一个典型的拓扑优化问题看起来是这样的:对于空间中的给定概念(桥梁,房屋等),它在二维或三个维度上具有特定的材料,技术和其他要求形式的限制,并且需要一些外部载荷可以承受载荷并满足约束的最佳结构。

  • “设计”本质上是指查找/描述需要用建筑材料填充的源空间的子空间。
  • 最优性可以例如以要求的形式来表达,该要求是在材料中的最大允许应力和在给定载荷下可能的位移的形式下,使结构的总重量最小化。

为了在计算机上解决此问题,将目标解决方案空间采样到一组有限元素(用于2D的像素和用于3D的体素)中,然后使用某种算法,计算机决定是用材料填充此单个元素还是将其保留为空?


(图片来自“ Chaau Hoai Le,2010年拓扑和形状优化的发展”)

因此,从问题的陈述来看,很明显,它的解决方案对科学家来说是一个很大的分裂。 我可以提供那些希望获得详细信息的人,例如,回顾一个非常古老的年份(2010年,对于一个活跃的领域来说仍然很多),但是标题为“拓扑和形状优化的发展” [2]的一个相当详细且易于使用的Chau Hoai Le论文,我偷了顶部和底部的图片。


(图片来自“ Chaau Hoai Le,2010年拓扑和形状优化的发展”)

例如,在这张照片中,您可以清楚地看到不同的算法如何为L型悬架看似简​​单的设计问题提供解决方案。

因此,现在回到有问题的工作。

作者非常机智地建议通过神经网络生成候选解,然后通过梯度下降法针对目标顺应函数生成解决方案,从而解决此类优化问题。 使用可微分的物理模型估算最终结构的柔度,实际上,该模型允许使用梯度下降。 根据他们的观点(作者发表了[5]的源代码 ),对于简单的问题,这可以得到与最佳传统算法相同的结果,对于复杂的问题,则可以得出这些算法中用作基线的最佳算法。

方法


然后,我将尝试描述作者建议的操作方式和精确度,但是我立即警告我,我不能保证100%的正确性,因为除了简短的描述之外,我还会在有些生锈的知识中增加文章的一般“不成熟”根据4天之内的两个版本的判断,该文件正在定稿中( 补充:目前,我认为至少基本上所有内容都描述正确)。

通常,作者遵循解决此类优化问题的方法,称为“修改后的SIMP方法”,并在[3]“使用88行代码的MATLAB中高效拓扑优化”中进行了详细描述。 可以在http://www.topopt.mek.dtu.dk/Apps-and-software/Efficient-topology-optimization-in-MATLAB中找到该作品的预印本以及与之相关的代码。 这项工作通常用于开始向学生教授拓扑优化问题,因此,为了进一步理解它,建议您熟悉它。

在“修改的SIMP”中,通过修改物理密度图片的像素直接优化解决方案。 该论文的作者并没有提议直接修改图像(尽管在其他条件相同的情况下,这种算法是可控制的),而是要更改生成物理密度图像的卷积神经网络的参数和输入。 整个方法的全局外观如下:


(图片来自相关出版物)

步骤1,产生候选人


使用随机主输入向量_beta的神经网络(以下称为NS)(类似于网络权重,是经过训练的参数),生成(某种)解决方案图片(适用于2D,但在3D中,我认为它也可以分布) 众所周知的U-Net架构的上采样部分用作NS生成器。

步骤2,应用限制并将候选者转换为物理模型框架


像素值通过两个步骤转换为物理密度:
  1. 首先,在一个步骤中,解决了将生成的像素的非归一化值归一化的问题(设计了NS,以便它输出所谓的logit-值在(-inf,+ inf)范围内的值)并对总解量施加限制。 为此,将S形元素逐个应用于图像,其自变量根据要转换的图像和所需解决方案的体积而偏移一个常数(此偏差常数的值通过二进制搜索选择,以使以此方式获得的密度的总体积等于某个预定体积V0)。 此阶段的详细分析,请参阅注释 );
  2. 此外,所得到的结构密度的归一化图片由所谓的 半径为2的密度滤镜。更广为人知的是,该滤镜不过是图片中相邻点的正常加权平均值。 该过滤器(过滤器核心)中的权重可以表示为位于平面上的常规圆锥体表面上的点的高度值,以使其顶点位于当前点,因此,作者将其称为圆锥过滤器(有关此主题的详细信息请参阅第2.3章[3]的过滤中的密度过滤器说明。


简而言之,整个步骤2的本质在于,完全普通的NS的未归一化输出变成了物理模型的适当归一化,略微平滑的框架(一组元素的物理密度),已经对其施加了必要的先验限制(这是使用的材料量)。

步骤3,评估生成的框架物理模型


生成的骨骼通过可微分的物理引擎运行,以获得结构在载荷(包括重力)U下的剪切矢量(/张量?)。关键是引擎的可微分性,这使我们可以获得梯度(我记得该函数的梯度通常为由函数相对于其所有参数的偏导数组成的张量。渐变显示了函数在当前点的变化方向和变化率,因此,知道了这一点,您就可以“扭曲”参数,以便函数随需变化 -它减少或增加)。 这种可区分的物理引擎不需要从头开始编写,它们早已存在并且众所周知。 作者只需要与神经网络计算包(例如TensorFlow / PyTorch)配对即可。

步骤4,为线框/候选对象计算目标函数的值


计算要最小化的标量目标函数c(x),它描述了所得框架的依从性(刚度的倒数)。 依从性函数取决于在最后一步获得的位移向量U和结构K的刚度矩阵(我不具备足够的拓扑优化知识来了解K的来源-我假设它似乎是直接从框架中考虑的)。

/ *
另请参阅来自kxx的注释(1)和来自350 Stealth的注释 2) ,尽管基本的启蒙值得研究[3]。
* /

然后完成。 由于所有事物都是在具有自动微分的环境中创建的,因此在此阶段我们会自动获得目标函数的所有梯度,这是由于每一步所有变换的微分性都将其推回到生成神经网络的权重和输入向量上。 权重和输入向量及其偏导数分别发生变化,从而引起必要的变化,从而使目标函数最小化。 接下来,出现了直接通过NS的新循环->限制的应用->物理模型的计算->目标函数的计算->新的梯度并更新权重。 依此类推,直到算法融合为止。

重要的一点是我如何在工作中找不到的描述,是如何选择构造V0的总体积,并在步骤2的帮助下将候选解决方案转换为框架。显然,所得解决方案的属性极大地取决于其选择。 通过间接指示(获得的解决方案的所有示例[4]都有几个实例,它们在体积限制方面存在精确的差异),我假设他们只是将V0固定在[0.05,0.5]范围内的某个网格上,然后用不同的解决方案通过眼睛观察V0。 好吧,对于一个概念作品来说,这通常就足够了,尽管当然也很高兴看到选择该V0的选项,但它可能会进入作品的下一阶段。

我不了解的第二个重点是它们如何对特定类型的解决方案施加限制/要求。 即 如果由于物理模型您仍可以将桥梁与建筑物分开(建筑物有充分的支撑,并且桥梁仅在边界端),那么如何将3层建筑物与4层建筑物分开?

如何运作?


事实证明,对于较小的问题(根据解决方案空间的大小=像素数),该方法可提供与最佳传统拓扑优化方法相同的结果质量,而对于较大的问题(网格大小为2 ^ 15或更多像素,即)。例如,从128 * 256个以上的样本中,通过该方法获得高质量解决方案的可能性比最佳传统解决方案更高(在116个测试问题中,该方法在99个问题中给出了首选解决方案,而在最佳传统问题中为66个首选解决方案)。

此外,从这里开始特别有趣的事情。 大型问题的传统拓扑优化方法遭受以下事实的困扰:在工作的早期阶段,它们迅速形成了一个小型网络,从而干扰了大型结构的发展。 这导致这样的事实,即所获得的结果很难/不可能在物理上实现。 因此,在拓扑优化问题中有一个全面的方向,即研究/提出如何使所得解决方案在技术上更加方便的方法。

在这里,显然,借助卷积网络,优化同时在几个空间尺度上同时进行,这可以避免/大大减少“网络”,并获得更简单,但高质量且技术友好的解决方案!

另外,再次感谢网络的卷积,与标准传统方法相比,获得了根本不同的解决方案。

例如,在设计中:

  • 悬臂梁法发现只有8种成分的解决方案,而传统方法最好的是18种。
  • 薄支撑桥方法选择了一种具有树状分支模式的支撑,而传统的一两种支撑
  • 屋顶方法使用列,而传统方法使用分支模式。 等等


(图片来自相关出版物)

这项工作有什么特别之处?


我从未见过如此使用神经网络。 通常,神经网络用于获取一些非常棘手且复杂的函数y = F(x,theta)(其中x是自变量,theta是自定义参数),这可以做一些有用的事情。 例如,如果x是来自汽车摄像头的图片,则该功能的y值可以例如是危险地靠近汽车的行人的信号。 即 在此重要的是,反复用于解决问题的特定功能类型本身很有价值。

在这里,神经网络被用作某些物理模型参数的狡猾的存储库-修改器-调整器,由于其本身的体系结构,对这些参数的值和变化的变化施加了一定的限制(实际上,Pixel-LBFGS标题下的示例是尝试直接优化像素,而不是优化像素)。使用神经网络生成它们,结果可见,NS很重要)。 在这里,所使用的神经网络的卷积变得至关重要,因为它的体系结构使您可以“抓住”传递不变性和稍作旋转的概念(假设您从图片中识别出文本,这对于提取文本很重要,而无论哪种图片的部分位置,位置以及旋转方式-也就是说,您需要在传递和旋转方面保持不变。 在这个问题中,某种物理棒是结构的一个单元,我们对其进行了许多优化,无论其在空间中的位置和方向如何,它仍然保留着。

例如,经典的全连接网络可能无法在这里工作(同样好),因为它的体系结构允许太多/太小(嗯,是的,这种二元论,外观如何)。 同时,尽管事实上NS仍然保留在非常棘手和复杂的函数y = F(x,theta)上,但在此任务中,我们最终并未给出有关其参数x和参数theta的信息。 ,以及如何使用该功能。 我们只关心它的单一值y,它是在为一个特定的物理模型优化一个特定的目标函数的过程中获得的,其中{x,theta}只是可配置的参数!

我认为,这是一个很棒的新主意! (当然,尽管如此,Schmidhuber可能会像90年代初那样描述它,但是我们将拭目以待)

通常,该方法的含义有点让人联想到强化学习-粗略地说,NS被用作在某些环境中行动的行动者的“经验库”,随着环境接收到关于行动者行为的反馈,NS会被更新。 只是在那里,这个非常“经验的存储库”一直被代理用来制定新的决策,在这里,它只是物理模型参数存储库,从中我们只对唯一的最终优化结果感兴趣。

好吧,最后。 一个有趣的时刻引起了我的注意。

这是多层建筑物任务的最佳解决方案:


(图片来自相关出版物)

依此类推:



位于梦幻般的圣家族教堂内,圣殿位于西班牙巴塞罗那,由杰出的安东尼奥·高迪(Antonio Gaudi)“设计”。



致谢


我感谢本文的第一作者斯蒂芬·霍耶(Stephan Hoyer)的迅速协助,帮助他们解释了一些晦涩难懂的细节,并感谢哈勃(Habr)参与者的补充和/或有益的启发性想法。



[1] 确定结构/拓扑优化问题的选项

[2] “拓扑和形状优化的发展”

[3] E. Andreassen,A。Clausen,M。Schevenels,BS Lazarov和O. Sigmund。使用88行代码在MATLAB中进行高效的拓扑优化。 《结构和多学科优化》,2011年第43期(1):1–16。此工作和代码的预印本可在http://www.topopt.mek.dtu.dk/Apps-and-software/Efficient-topology-optimization-in中获得-MATLAB

[4] 工作解决方案示例

[5]工作源代码: https : //github.com/google-research/neural-structural-optimization




另请参阅







该出版物的最新更新2020.01.23 09:18

Source: https://habr.com/ru/post/zh-CN469389/


All Articles