MindSpore AI科学计算系类 | GNN-MoM基于昇思MindSpore Elec的图残差学习电磁求解器
MindSpore AI科学计算系类 | GNN-MoM基于昇思MindSpore Elec的图残差学习电磁求解器
**作者:**于璠 来源:知乎
背景
昇思MindSpore联合清华大学、华为先进计算与存储实验室合作构建了物理信息图残差学习的电磁散射算法,并在复杂三维目标电磁参数计算中实现较高的准确率。
矩量法(Method of Moments, MoM)是电磁计算领域中一种经典且广泛使用的数值分析方法。矩量法通过求解积分方程,在处理电磁散射和辐射问题时有出色的表现,被广泛应用于计算电磁兼容性、天线设计、微波工程等多个领域。传统电磁计算难以描述三维几何体表面的网格剖分,且矩阵求解需要消耗大量计算时间及计算资源。图神经网络(Graph Neural Networks, GNN)是近年来在机器学习领域快速发展的一种新型神经网络结构。与传统的深度学习模型不同,图神经网络能够捕捉数据中的节点关系和网络拓扑结构。图神经网络在药物发现、推荐系统、自然语言处理等多个领域显示出巨大潜力,成为当前人工智能研究的热点之一。
随着人工智能技术的发展,图神经网络与矩量法的融合有望解决上述的几何描述难、方程求解慢的问题。在本工作中,我们基于昇思MindSpore Elec构建了融合物理信息的图神经网络-矩量法(GNN-MoM)求解器 [1]。该求解器可以采用昇思MindSpore的图神经网络算子实现对复杂三维几何体的形状描述,也可以利用昇思MindSpore的自动微分能力构建数据残差到模型更新量的网络映射。我们基于GPU并行对提出的GNN-MoM算法进行了加速,实现了高效的基于图神经网络的矩量法电磁散射快速建模。
**1、**矩量法(MoM)原理
对于PEC介质,表面等效电流满足电场积分方程(EFIE)和磁场积分方程(MFIE):

公式1
其中S_0是目标的表面,E^inc,H^inc和J_s是入射电、磁场和表面电流,n(hat)是PEC目标的表面法线。在EFIE式中,等式左边第二个乘数可以写成:

公式2
其中k_0是波数,G(r, r^’)表示格林函数。MFIE式中等式左边第二项第二个乘数可以表示为:

公式3
为避免内部共振问题,可以采用综合场积分方程(CFIE),通过对EFIE和MFIE的加权组合来表示,可以写为:

式4
其中Z_0是波阻抗,α是权衡EFIE和MFIE的值,在本文中设置为0.5。通过应用 MoM 和 RWG 基函数,CFIE可以离散化为一个矩阵方程,其中u代表未知电流系数, Z是阻抗矩阵,b是激励向量。

式5
**2、**物理信息图残差学习
物理信息监督残差学习被提出作为电磁建模的通用深度学习框架 [2]。它应用深度神经网络(DNNs)来通过残差学习矩阵方程中未知量的更新函数,用于迭代地修改未知量,直到收敛。在残差学习的框架下,第k步迭代的更新方程如下:

式6
在三维建模中通常使用非均匀离散化来表示任意形状,相比卷积神经网络,图神经网络(GNN)可以更好地建模此类非结构数据。从三维目标的RWG基函数集构建一个图。将每个RWG基函数视为图中的一个节点,图中的边是通过连接图中的两个相邻节点形成的,确定两个节点是否相邻的原则是相应的RWG基函数是否共享一个公共端点。下图展示了GNN-MoM算法中图的构建方式

图1
在基于残差学习的三维矩量法电磁建模中,构建两个结构相同、参数不同的GNN,分别学习u_k的实部和虚部的更新规则,方程求解中第 次更新可以写为

式7
算法的示意图如下所示。在训练中,借助昇思MindSpore的自动微分框架,可以构建无监督学习方案或者有监督学习方案学习GNN-MoM算法中未知数的迭代更新量,并可通过迁移学习解决更复杂三维几何体的电磁参数计算问题。

图2
**3、**实验与结论
3.1 算例1:基本三位PEC目标的RCS计算
雷达散射截面(Radar Cross Section, RCS)是衡量目标物体对雷达波反射能力的量度。RCS大小取决于目标的形状、大小、材料以及波长等因素,RCS的准确计算和分析对于雷达系统和电磁隐身的性能评估至关重要。
利用昇思MindSpore图神经网络代码库,用户可以通过离散的几何体网格,构建图神经网络,描述复杂三维几何体的表面结构,并通过自动微分模块完成网络有/无监督和迁移学习等多种训练模式。
首先,导入图神经网络相关代码包
import os
import time
import numpy as np
import scipy.io as sio
import mindspore as ms
from mindspore import nn, ops
from mindspore.nn import optim
from mindspore.dataset import GeneratorDataset
在训练阶段,构建三种不同的三维几何体,用三角网格进行离散三维几何体并利用昇思MindSpore的图神经网络计算包加载训练数据集。
def process(self):
ranidxmat = sio.loadmat(self.root + '/randomidx.mat')
ranidx = ranidxmat['randomidx'][:][:].T
for kk in range(int(self.totnum)):
ii = ranidx[kk, 0]
edgeneed = sio.loadmat('./GNN-CFIE-Dataset' + '/edgeneed' + str(ii) + '.mat')
edgeidx = ms.Tensor((edgeneed['edgeidxfull'][:][:] / 1.0 - 1.0).astype(np.int32), ms.int32)
edgeidxparnoself = ms.Tensor((edgeneed['edgeidxparnoself'][:][:] / 1.0 - 1.0).astype(np.int32), ms.int32)
edgelabelR = ms.Tensor(edgeneed['edgelabelR'][:][:].astype(np.float32), ms.float32)
edgelabelI = ms.Tensor(edgeneed['edgelabelI'][:][:].astype(np.float32), ms.float32)
ZmatR = ms.Tensor(edgeneed['edgeZRfull'][:][:].astype(np.float32), ms.float32)
ZmatI = ms.Tensor(edgeneed['edgeZIfull'][:][:].astype(np.float32), ms.float32)
JmR = ms.Tensor(edgeneed['edgeJmR'][:][:].astype(np.float32), ms.float32)
JmI = ms.Tensor(edgeneed['edgeJmI'][:][:].astype(np.float32), ms.float32)
data = (edgeidx, edgelabelR, edgelabelI, ZmatR, ZmatI, JmR, JmI, JmR.shape[0], edgeidxparnoself)
self.all_data.append(data)
而后,构建用于计算损失的类
class LossCell(nn.Cell):
def __init__(self, net, criterion):
super().__init__()
self.net = net
self.criterion = criterion
def construct(self, *args):
netr, neti = self.net(*args[:-2])
yr, yi = args[-2:]
mseloss = (self.criterion(netr, yr) + self.criterion(neti, yi)) / 2
return mseloss
最后,定义单步训练过程并利用合适的优化器对网络参数进行迭代更新。
model = GCNnet(channels)
criterion = nn.MSELoss()
loss_cell = LossCell(model, criterion)
exponential_decay_lr = nn.ExponentialDecayLR(learning_rate=0.001, decay_rate=0.9, decay_steps=25 * len(traindataset),
is_stair=True)
optimizer = optim.Adam(loss_cell.trainable_params(), learning_rate=exponential_decay_lr)
train_cell = nn.TrainOneStepCell(loss_cell, optimizer)
end_epochs = 300
last_time = time.time()
start_time = last_time
for epoch in range(1, end_epochs + 1):
noneedloss1 = model_train_epoch(epoch, traindataset, train_cell, criterion)
now_time = time.time()
print(f"epoch :{epoch}, loss_epoch: {noneedloss1}, time interval: {now_time - last_time}, "
f"total_time: {now_time - start_time}")
last_time = now_time
train_resloss.append(noneedloss1)
完成训练后,分别从测试集中选择样例进行推理,得到的结果如下。

图3
可以看出用GNN-MoM计算的RCS和传统矩量法计算的RCS拟合情况较好。
3.2 算例2:基于迁移学习的复杂三维几何体RCS计算
在昇思MindSpore框架下,基于迁移学习的方法,可以实现对飞机形状等复杂三维几何体的RCS进行计算。根据基本三维几何体训练完成的图神经网络,添加少量飞机形状的几何体的RCS数据。下图展示了典型的飞机几何体形状。

图4
完成迁移学习后针对飞机数据集进行推理,得到如下的结果。

图5
由MoM和GNN-MoM计算的表面电流及RCS,GNN-MoM预测的表面电流和RCS与MoM计算的结果有较好的吻合。
**4、**总结与展望
我们推出了基于昇思MindSpore Elec的图神经网络矩量法电磁求解器,可以实现复杂三维几何体表面形状的精确描述和面电流分布、RCS等电磁参数的快速求解,实现了和传统矩量法相当的数值精度。我们希望能够有更多的企业、科研院所参与进来,共同打造和维护昇思MindSpore Elec套件。
参考文献
[1] T. Shan, et al., Solving Combined Field Integral Equations with Physics-informed Graph Residual Learning for EM Scattering of 3D PEC Targets [J], IEEE Transactions on Antennas and Propagation, 2023.
[2] T. Shan, et al., Physics-informed supervised residual learning for electromagnetic modeling [J], IEEE Transactions on Antennas and Propagation, 2023.
[3] R. Guo, et al., Physics embedded deep neural network for solving volume integral equation: 2d case [J], IEEE Transactions on Antennas and Propagation, 2021.
往期回顾
MindSpore AI科学计算系类 | VAE基于MindSpore Elec的特征域MT反演,提升大地电磁反演的精度和分辨率
MindSpore AI科学计算系类 | Allegro提升昇思分子势能预测准确性,将上线MindSpore Chemistry
MindSpore AI科学计算系列 | 周期性图Transformer提升MindSpore模型对晶体性质的预测