资讯动态

HPKM-PINN:KAN与MLP并行混合的物理信息神经网络解析

发布时间:2026/10/17 11:22:58 来源:尧图企业网站定制
HPKM-PINN叫起来一串字母拆开来看其实不复杂KAN旁路负责把局部细节抠出来MLP主杆负责把全局轮廓稳住两者并行到最后再融合出去。名字看着唬人数学上却是非常朴素的一套设计。这一章我把它拆开从网络层的数学定义讲到损失函数权重怎么配希望能帮正在做物理信息神经网络的朋友理清两条路的来龙去脉。如果你是第一次接触PINN也不用被“物理信息”“并行混合”吓住。整个思路是用神经网络逼近偏微分方程的解同时把方程残差当成训练损失的一部分让解满足物理规律。HPKM-PINN在这里做的革新是把过去单一的MLP逼近器换成KAN和MLP并联的双通道结构。下面所有公式我都尽量写成能在代码里直接落地的形式方便你拿去做对照实验。1. 为什么PINN需要“两条腿”混合架构的数学动机与选型逻辑1.1 标准PINN的表示瓶颈谱偏差与全局局部失衡物理信息神经网络最常碰到的尴尬是简单方程训练得很好方程稍微带点高频、多尺度、激波特征就训不动了。用数学眼光看PINN的训练目标是让网络输出u_θ(x,t)同时满足几类约束内部残差R(x,t) ∂u_θ/∂t N[u_θ]其中N是PDE里的微分算子初始条件与边界条件以及可选的观测数据。于是总损失写成J(θ) λ_pde · ||R||² λ_bc · ||B[u_θ] - g||² λ_ic · ||u_θ - u0||² λ_data · ||u_θ - d||²标准做法是把u_θ实现为一个多层MLP。MLP的逼近定理保证了存在一组参数能逼近目标解但这只是存在性训练过程能不能找到这组参数是另一回事。实际训练中MLP表现出明显的谱偏差网络先拟合信号的低频成分高频成分收敛极慢。对强振荡方程单一MLP往往要跑几十万步才勉强压住残差而且内部点梯度会经过多次链式求导后变得很小出现深层梯度衰减。这个问题的根源在于单一MLP的每个权重都是“全局参数”改动任意一个值整个定义域上的输出都会跟着动。它没有专门的机制去“记住”某个局部的高频特征。训练器在低频梯度主导下会优先满足平滑分量结果就是整体轮廓对了细节一团糟。1.2 KAN带来的转机与它的短板KAN走的是另一条路。Kolmogorov-Arnold表示定理下文简称K-A定理指出任何多元连续函数都能拆成有限个一元函数的嵌套与叠加。KAN据此把“学习什么”从线性权重换成了可学习的一元激活函数φ(x)每个连接上都是一个样条函数。这样做的好处是网络天然具备局部可塑性某个区间拟合不好样条只需要在局部改系数不像MLP改一个权重会牵动全局。这对强振荡、带局部特征的问题很友好。许多复现过KAN-PINN的人应该都有体会KAN在逼近含尖峰、边界层、激波结构的解时潜力确实比MLP大。但KAN不是银弹。样条函数训练慢因为它要维护一组控制点系数并参与网格细化高维输入下每个连接的样条基函数数量不变但连接数变多参数规模比MLP涨得快而且纯KAN网络缺少全局光滑先验收敛初期的稳定性也偏差。我见过不少尝试全KAN架构的朋友第一反应都是同样的迭代轮数KAN分支的残差下降速度明显慢于MLP训练前半段基本是在熬。1.3 为什么选并行而不是串联或嵌入我是先试过两种混合方式才定下并行方案。串联方案是KAN编码、MLP解码输入先经过KAN抽取特征再交给MLP输出。问题在于KAN输出的特征空间如果压缩过度MLP拿到的信息就有损整体精度受中间瓶颈特征制约而且梯度交换和样条网格更新交织在一起调参非常费劲。嵌入方案是直接把网络里的部分隐藏层换成KAN层。这个方案最适合任务本身就需要层级非线性变换的场景但PINN的输入通常是坐标和时间维度不高嵌入几层KAN对最终解的高频补偿有限网格、基函数和残差连接的代码却要多写很多。并行方案的数学表达简洁明了两条子网络读取同一个输入各自走自己的路径最后的预测是两者输出的融合。设输入为zKAN子网输出为u_K(z)MLP子网输出为u_MLP(z)最终预测取u Fuse(u_K, u_MLP)。这种结构在训练时两条路径的梯度互不干扰可以分别调参在表示能力上MLP负责全域光滑分量KAN负责局部细节修正两者是互补的逼近空间而不是互相迁就的耦合结构。并行相比串联的优势我在一个含高频项的波动方程算例上验证过同样训练100k步并行结构的最终PDE残差比串联低接近一个数量级。虽然这不能代表所有问题但至少说明了“两条腿走路”的直觉是对的。2. 分支一的数学内核KAN样条激活层的表示与参数化2.1 从表示定理到网络层的工程化映射KAN层的数学构造依赖于K-A定理的多元分解思想。一维KAN层的标准前向形式是h^{l1}_i Σ_{j1}^{n_l} φ_{l,i,j}(h^l_j)其中φ_{l,i,j}(x)是第l层中、从输入通道j到输出通道i的一元可学习函数n_l是该层输入通道数。展开写就是h^{l1} Φ_l(h^l) ( Σ_j φ_{1,j}(h_j), Σ_j φ_{2,j}(h_j), ... )和MLP的h^{l1} σ(W h^l b)不同KAN不维护独立的权重矩阵W线性组合变成了激活函数的求和。理论上只要每个φ足够光滑、基函数足够密KAN层就能以较小的层数逼近更复杂的多元函数。工程实现上有一点要提醒KAN层需要维护的“算子数量”是输入通道数乘输出通道数。如果分支宽度从16涨到64算子的数量会按平方增长内存和计算开销涨得非常快。所以HPKM-PINN中KAN分支的宽度通常控制在32以下把宽度上的不足交给MLP分支去补。2.2 可学习激活B样条参数化与网格更新在HPKM-PINN里我采用的φ(x)是由B样条基函数加权叠加得到的φ(x) Σ_{k1}^{K1} c_k · B_{k,3}(x)其中B_{k,3}(x)是三次B样条基函数c_k是控制点系数K是网格区间数。选择三次B样条而不是线性插值是因为三次B样条具备二阶连续光滑性对PDE里二阶导数项的自动微分非常友好线性插值会造成导数不光滑训练时残差项会振荡。网格更新是一个容易忽略的细节。样条在x超出初始网格范围时系数会失去约束。实践中需要在训练初期用较宽的均匀网格或者定期做网格自适应把控制点分布调到残差大的区域加密类似于有限元里的h-refinement这样同样网格数量下KAN的局部分辨率会高很多。自适应更新时还要注意频率。我在实际操作中每2000步检查一次残差分布如果局部残差一直偏高就调整该区域的网格密度如果频繁更新样条系数会被反复扰动训练曲线反而会震荡。2.3 残差激活与基础函数保证数值稳定性的初始化技巧纯B样条初始化会带来两个问题一是φ一开始没有明确的非线性方向随机初始化容易导致前向输出量级漂移二是如果输入经过样条后输出的方差过大后续MLP分支的梯度会被带偏。可靠做法是把每个φ写成残差形式φ(x) w_base · silu(x) w_spline · spline(x)base是固定的siLU激活函数保证每层有基本非线性spline部分初始化为零附近的控制点让网络在训练初期接近一条浅层线性路径再由样条逐步接管细节。实际用下来这个初始化让前500步的训练损失下降曲线平滑很多不会出现KAN常见的初期震荡。参数规模上需要算一笔账。比如输入维数d_in2隐藏层宽度w32一个KAN层的控制点数K8、B样条阶数3单个算子参数大概是K19再加两个缩放因子。算子总数为2*3264单层参数约64*9≈576对比同宽度MLP层的参数2*323296。KAN层确实更重但换来的是局部逼近能力。所以HPKM-PINN里KAN分支不宜过深通常2到3层已经足够再深的话参数量和训练成本收益很低。3. 分支二的数学内核MLP全局逼近器在混合架构中的定位3.1 普适逼近定理与全局作用方式MLP的价值在于它的“全局性”。万有逼近定理告诉我们含至少一个隐藏层、激活函数为非多项式的MLP可以在紧集上逼近任意连续函数。关键在于MLP的每一个权重变化都会影响整个定义域上的输出这正是全局光滑逼近器最需要的特性。在HPKM-PINN中MLP分支承担“背景解”的逼近任务低波数的平滑部分、接近线性的区域、远离边界奇异性的地方都交给MLP。因为这些地方用全局光滑函数最容易拟合训练时MLP收敛很快也给整个网络提供了一个稳定的预测基座。从频率角度看MLP的谱偏差在混合架构里反而变成了优点。它先把整体形状拉出来把残差控制在“需要细节修正”的程度KAN分支看到的是这个残差信号样条可以针对残余的小尺度结构精准调整。两边各干各擅长的活而不是让一个网络硬扛所有频率分量。3.2 混合分支之间的互补关系数学分工可以写成u_true ≈ u_MLP u_KAN如果u_MLP已经逼近了主分量那么u_KAN只需要拟合u_true - u_MLP。这个差信号的复杂度远低于原始函数因此KAN分支的网格可以不用太密、控制点不用太多就能达到同等的精度。这是一个非常划算的配合。我在某些算例里观察过训练中两个分支输出的演变早期MLP分支的输出占主导几乎就是最终解的粗略轮廓随着训练推进KAN分支的输出慢慢长出高频细节尤其在解变化剧烈的局部区域KAN分支的贡献比重持续上升。这种演变轨迹天然符合“由粗到精”的求解逻辑。3.3 深度和宽度的选择不能照抄标准PINN标准PINN为了拟合复杂解会把MLP做得很深6层以上很常见。但在HPKM-PINN里我建议MLP分支不要超过4层。原因有两个一是KAN分支已经在旁边补充细节MLP再深只会增加训练负担二是深度增加会让梯度信号衰减加快尤其当损失函数还带着自动微分求出的高阶PDE残差时更深的结构训练稳定性更差。我在某科学计算任务里对比过MLP分支3层、4层、6层的表现4层的最终精度高过3层一个身位但6层不仅没继续涨还出现了边界预测抖动。混合架构里MLP分支3到4层、宽度64到128KAN分支2到3层、宽度16到32是我用过最顺手的组合。这个配置下两条分支的参数量大致相当梯度量级也不会差得太离谱。4. 并行融合单元的数学设计加权、门控与残差连接4.1 基础融合凸组合与超参数β最简单的融合形式是凸组合u(x,t) β · u_K(x,t) (1-β) · u_MLP(x,t)β∈[0,1]β直接控制两个分支的权重。β1时退化为纯KANβ0时退化为纯MLP。数学上这是两个函数空间之间的线性插值实现起来只有一行代码。问题在于均匀的β无法适应空间位置的变化。某个区域KAN表现好、另一个区域MLP表现好全局一个β就会拖后腿。如果只是为了验证架构可行性凸组合完全够用。我在早期实验中从β0.5起步发现多数问题都能稳定收敛。但一遇到局部特征特别强的问题比如边界层很薄的流动算例单一β就会明显限制精度这时候才需要换更聪明的融合方式。4.2 门控融合让数据决定分支权重改进做法是门控机制。先把两路特征向量拼接经过一个小型线性层得到标量门g(x,t) σ( w_g · [h_K(x,t), h_MLP(x,t)] b_g )然后算u g ⊙ u_K (1-g) ⊙ u_MLP这里的g是位置相关的理论学习可以学会“哪里该更信任哪条路径”。数学上它是一个可微的软开关梯度能同时流向两个分支。门控还有一个实践优势我们可以从训练后的g分布中看出模型在各个区域更依赖哪条分支这对诊断问题非常有帮助。需要留意的是门控层容易饱和。如果初始化w_g过大g会迅速贴近0或1变成硬开关混合效果就没了。我通常把w_g初始化为标准差0.1的小值b_g初始化为0附近确保训练初期门控处于中间值让两个分支都有机会参与。4.3 残差连接融合与初始退耦第三种更稳的融合方式是残差结构u(x,t) u_MLP(x,t) W_out · h_K(x,t)其中W_out是KAN分支到输出的线性映射初始化时设成很小的值比如标准差0.01。这样训练刚开始时u_MLP占据绝对主导网络首先在全局上找到一个大致的解随后W_out逐渐变大KAN分支以残差方式加入专注于修正u_true - u_MLP。这种“先全局后局部”的训练轨迹相当于隐式的课程学习比固定β的凸组合更稳定。我在多个方程上发现残差融合的收敛曲线上几乎看不到突变门控融合偶尔会有中期的残差反弹凸组合则对 β 相当敏感β稍微调大一点就可能导致KAN分支过早介入、后期震荡。三种融合方式可以放在一起对比融合方式数学形式优点注意点凸组合β·u_K (1-β)·u_MLP最简单稳定全局β无法适应区域差异门控融合σ(·)⊙u_K (1-σ(·))⊙u_MLP位置自适应需要额外线性层训练初期门易饱和残差融合u_MLP W_out·h_K隐式课程学习最稳依赖W_out初始化复现建议从凸组合起步跑通之后换成残差融合最后再上门控。不要一开始三个模块一起上出了问题很难定位是哪一块影响了大局。5. 物理约束下损失函数的数学构造PDE残差、初边值与自适应权重5.1 自动微分与PDE残差的实现要点损失函数的构造直接决定训练质量。PDE残差项用自动微分计算这是PINN的基本操作R(x,t) ∂u/∂t N_x[u]在自动微分框架里∂u/∂t是对u关于t求梯度得到的。这里有一个经常踩的坑如果网络输入没有经过归一化t和x量纲差距大自动微分出的导数量级会差很多残差项被大尺度变量淹没损失权重平衡就无从谈起。所以第一步永远是对空间和时间坐标做归一化通常归一化到[-1, 1]或[0, 1]。残差采样时内部点的分布至关重要。均匀蒙特卡洛采样在低维下好用高维时建议拉丁超立方或伪随机序列避免局部聚集。PDE越非线性越需要在预测残差大的地方加密采样点这一点和KAN的网格自适应思路一致可以在训练过程中动态调整。自动微分还有一个计算量上的考量对u求二阶导时需要把一阶求导图再求一次梯度显存占用会明显上涨。KAN分支的B样条本身就比较复杂二次求导更重所以KAN分支宽度不宜过大省的每一笔计算最后都会变成训不动模型的现实问题。5.2 初始条件与边界条件的约束结构总损失四件套的写法J λ_pde · ||R||²_Ω λ_ic · ||u - u0||²_初始面 λ_bc · ||B[u] - g||²_边界 λ_data · ||u - d||²_观测这里要特别注意初始条件和边界条件在数学上是不同维数的流形初始面是一个时间切片边界是空间边界上的点集。实现时不要把所有采样点混成一个数组算应该分开存储、分开加权这样在自适应权重中才有独立调节的余地。边界条件如果写成混合形式B[u] a·u b·∂u/∂n实现时还要注意法向导数在边界点的计算精度。边界点的法向量方向必须统一否则某些点上的导数符号不对损失值再低都是错的。这个细节造成的隐性错误在标准PINN也常见混合架构因为分支多更容易被掩盖。5.3 自适应权重梯度尺度的对齐策略固定权重时λ_pde、λ_ic、λ_bc的量级常常要试很多组。HPKM-PINN在训练过程中用基于梯度统计的权重更新思路每个损失项的权重与该项梯度范数的倒数成正比。λ_i ← λ_i · ( ||∇_θ L_i||_max / ||∇_θ L_i||_2 )^α其中α∈(0,1)是平滑因子。直观理解是哪一项梯度太小、学不动就把它对应的权重调大形成抬拉平衡。这个策略在标准PINN里也能用但混合架构下更有意义因为KAN分支的梯度量级天然比MLP分支小如果不用自适应权重KAN很容易被雪藏网络最后只是变成了一个带KAN装饰的MLP。权重更新的频率也要控制。我通常每100步更新一次而不是每个batch都更新。太频繁会让损失项权重跟着梯度噪声抖动反而破坏学习率调度的稳定性。其次要注意梯度统计量需要在整个损失项上计算不是只取一个采样子集的梯度范数否则统计结果有偏。5.4 损失量级的预扫描与特征缩放在实现层面我会做一次损失量级预扫描随机初始化后跑几步前向统计各损失项的初始数值然后设置λ使各项初始量级接近1。这一步虽然简单但直接决定训练顺畅度。我的习惯是坐标归一化到[-1, 1]或[0, 1]输出u如果跨数量级先做常数缩放每类损失项计算初始均值再定λ训练500步后再检查一次各项损失占比微调λ。做完这一套之后HPKM-PINN的训练损失曲线会呈现出一种很健康的同步下降状态而不是哪一项永远压过另一项。我相信很多做PINN的人都有过这种经历模型架构没问题怎么练都不收敛最后发现只是损失项量级差了三个数量级权重完全失衡。6. 梯度传播机制与训练稳定性混合架构的数学行为与调参体会6.1 并行架构下的梯度分解并行架构的梯度在数学上很有特色。设模型输出为u Fuse(u_K, u_M)损失J对任意可训练参数θ的梯度是∂J/∂θ ∂J/∂u · ∂u_K/∂θ ∂J/∂u · ∂u_M/∂θ如果融合方式是加法那两项之间没有任何耦合项两条分支的梯度完全独立。若是门控融合梯度会多出∂g/∂θ项耦合作用发生但幅度通常可控。因此并行结构的训练稳定性取决于两个分支各自是否稳定而不是像深串联结构那样后一层梯度要穿透前面所有层才能传回来。两条路径的梯度是相加关系不是相乘关系避开了梯度连乘衰减的经典困境。这也是许多KAN混合能跑顺的底层原因。纯KAN网络虽然在表示能力上有优势但样条系数的局部梯度更新存在空间不均匀性MLP的全局梯度正好可以补上KAN分支梯度薄弱区域让优化过程不会长期停滞。6.2 KAN分支梯度的特殊行为与应对实际训练中KAN分支和MLP分支的梯度在量级上有明显差异。KAN的样条系数梯度在某些区域可能极小尤其是网格稀疏时样条基函数覆盖不到的位置梯度几乎为零MLP的梯度则在全局都比较均衡。混合架构的天然补偿就出来了KAN梯度消失的区域MLP梯度仍在整体优化不会停摆。但也有反向问题某些区域两个分支的梯度方向相反互相抵消导致收敛变慢。这是一个实打实的困难。我一般用两种办法缓解。一是把KAN分支的初始学习率设得比MLP低一个量级让MLP在前期主导全局KAN慢慢调整方向二是定期查看门控或残差权重如果某条分支长期被压制就用梯度归一化的方式强制拉齐两侧的更新幅度。6.3 一套可以“安全起飞”的参数与流程关于超参数我的常用起点是KAN分支宽度16到32深度2到3B样条阶数3网格区间8到16MLP分支宽度64到128深度3到4激活函数siLU融合方式先凸组合β0.5稳定后改残差融合优化器Adam基础学习率1e-3融合层降到1e-4采样点内部点每轮重采样初边值点固定或低频重采样自适应权重关闭前300步开启后每100步更新一次。训练中的几个稳定技巧开启自适应权重前先用固定权重确认各损失项量级基本对齐KAN网格更新不要过于频繁2000步检查一次残差分布监控门控g的分布如果长期卡在0.9以上说明KAN分支没在学需要调大KAN分支的初始化权重或学习率如果训练中期出现残差反弹优先降低KAN分支学习率而不是动MLP结构。这些经验不算普适公式更接近工程上的“安全起飞参数”读者拿到后理应在自己的算例上再调一轮。我在每个新方程上花的时间前期七成都在损失量级和超参上真正架构改动很少。混合架构一旦稳定下来后续迭代非常省心。这一章把HPKM-PINN的数学设计原理从头到尾过了一遍两条分支的数学角色、融合方式的取舍、损失函数的量级控制、梯度传播的特点。下一步我准备聊实际代码实现和不同PDE算例的对照实验。就我个人的观察数学设计和训练稳定性的关系比很多人以为的还要大。真正把损失项量级对齐、把融合方式选对后面的事情基本就是水到渠成。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑