☰
HPKM-PINN:并行混合KAN与MLP,让物理信息神经网络兼顾全局与局部特征
2026/10/21 15:05:02 网站建设 项目流程

上一章讲完 KAN 的理论出身和 MLP 的大致问题后,有个读者留言问我:既然 KAN 这么好,为什么不直接把 PINN 里的 MLP 全换掉,还要折腾什么并行混合结构。这个问题其实问到了点子上。第1章的第二部分,我想专门把这件事讲清楚——而且要讲得比网上一句“KAN 更准、参数更少”更细一点,细到机制层面:KAN 到底凭什么能捕捉局部物理特征,MLP 又在哪些环节结构性失灵,以及为什么 HPKM-PINN 最后选择的是“并行混合”而不是“单枪匹马”。如果你已经接触过物理信息神经网络,正准备在项目里引入 KAN,这节内容应该能帮你少走不少弯路。

1. 上一节埋下的问题:KAN 的“能”和 MLP 的“不能”到底在哪一层成立

1.1 KAN 非线性表示定理的“存在性陷阱”

先别急着讨论 B 样条和网格,我们退回到数学源头。Kolmogorov-Arnold 表示定理一直在说一件事:任何一个连续多元函数,都可以写成有限个单变量函数相加组合的形式。用大白话说,再复杂的多维映射,理论上都能被拆成一堆“只跟一个变量有关的小函数”拼起来。KAN 网络把这个定理当作骨架,把每条边上的单变量函数拿去用可训练的参数化函数来拟合。这个出发点非常漂亮,但里面藏了一个关键问题:定理给的是“存在性”证明,没给“构造性”方法。

存在性和可构造性之间的差距,在机器学习里太常见了。它意味着即使一个函数可以被某种网络表示出来,也不代表你能靠梯度优化在那个庞大的参数空间里把它找出来——这两件事在 PINN 场景里尤其脱节。因为 PINN 训练本质上是多目标优化:PDE 残差要小、边界条件要对、初始条件要满足,三个目标叠加在一个网络上,优化器走一步要看三个方向,谁都不想让。你换一个表达能力更强的网络结构,不等于三个目标就一定更容易同时满足。

所以在讨论 KAN 和 MLP 谁强谁弱之前,我建议把问题的层次理顺:网络结构决定的是一种“表达 biases”,决定哪些函数容易学、哪些函数天生学不动;优化器和损失函数决定的是“可达性”,决定那些理论上能表达的函数能不能被真正训练出来。上一节我们更多在讲表达性的差异,今天这一部分,重点就是把这些差异落到可达性上——为什么 MLP 表达偏置和物理问题想要的解不匹配,为什么 KAN 的偏置更对口。

1.2 PINN 的真正难点不在网络结构,而在于损失面本身

做物理信息神经网络久了你会感觉到,它和平常监督学习不一样。普通监督学习是“给一堆数据,你去拟合”,网络结构再差,数据量大了也总能硬贴。PINN 不是这样,它经常面临数据稀疏、边界条件零散、内部区域全靠物理方程残差来约束的情况。换句话说,网络要在成千上万个配点(collocation point)上同时满足一个微分方程,这个方程本身还要求网络的导数行为符合物理规律。

这就带来了一个很现实的问题:你很可能已经意识到,MLP 哪怕在普通回归问题上表现不错,放进 PINN 之后仍然会在某些区域出现一种“整体平滑、局部失真”的奇怪现象。放大了看,是网络把整个物理场当作一个平滑函数去近似了,但真实物理场往往是“全局大变化 + 局部小尖峰”叠加在一起的。这时候单个全局参数矩阵能做的事很有限,它优化一步就把所有位置的函数值一起动一下,想让某个局部区域单独隆起一个波峰,等价于让整个网络的权重矩阵协同拧出一个局部结构,这件事能被优化器做到,但代价非常高。

KAN 这条路之所以值得研究,就是因为它把“函数学习”的方式换掉了。它不是在固定激活函数前面调权重,而是直接把激活函数本身做成可学习的。这样一来,局部结构不需要牵扯全局权重,只需要调整局部几个控制点就能完成。听起来很理想,但从理论到落地,中间还隔着初始化、网格划分、导数计算、优化器选择这一大堆事情。后面的章节,我一个个展开。

2. KAN 的局部表达能力:B 样条激活如何把自由度放在该放的位置

2.1 KAN 层的数学形式:从节点激活到边激活

MLP 那一套大家都熟:先把输入做线性组合,再套一个固定激活函数,比如 tanh 或者 ReLU。第l+1层的某个神经元输出,可以写成对第l层所有神经元输出的加权和,再过一个固定的非线性。这个结构里,可训练参数基本都集中在权重矩阵和偏置上,激活函数是所有人共享的、不变的。

KAN 的做法恰好相反,它把一个网络层写成:

x_{l+1,j} = Σ_i φ_{l,i,j}(x_{l,i})

也就是说,上一层第i个神经元传到下一层第j个神经元时,中间经过的不是“一个固定函数 + 一个系数”,而是一个完全独立的、可参数化的函数φ。在实现里,φ通常用 B 样条基函数的线性组合来表达,比如:

φ(x) = Σ_k c_k B_k(x)

其中B_k(x)是第k个 B 样条基函数,c_k是我们要学习的控制系数。这一步操作的直观含义是:每条边有自己的形状,而且这条形状可以被训练改掉。

这个设计带来的一个变化是,KAN 层里几乎不保留传统意义上的“大权重矩阵”。它把自由参数从“边的权重”搬到了“边的形状”上。如果你第一次接触 KAN,可能会觉得它只是把 MLP 换了个表达方式,没什么本质区别。但当你看完 B 样条的局部支撑特性之后,就会明白这不是换个参数位置的问题,而是整个优化动态都变了。

2.2 局部支撑:一个控制点只扰动一小段函数

B 样条基函数最有价值的一个性质叫局部支撑性:每个基函数只在它附近的一小段网格区间上取值非零,离得远了直接为零。这意味着你调整第k个控制系数c_k,只会影响函数在那一小段区间上的形状,其他区间完全不受影响。

拿这个性质跟 MLP 对比,差异非常明显。MLP 里任何一个权重参数的改变,理论上都会影响整个网络的输出,因为每一层的矩阵乘法和激活函数会把输入信息传遍全网络。哪怕你只想改局部某个区域,反向传播算出来的梯度也是所有参数一起动,最后形成一种“大家一起拉网”的效果。这种全局参数耦合会让网络天然偏向于表达光滑、低频、平缓的函数,因为要把某个局部改出一个尖峰,需要非常多的权重协同配合才能在小范围里凑出高梯度。

KAN 的做法更像“局部手术”。在物理场某个区域出现强间断、边界层、或者陡峭波前时,KAN 可以把注意力集中在那一小段网格里的控制点上,让这些控制点被训练得更高或更低,形成一个局部隆起或凹陷。其他区域的控制点不需要跟着动,因此不会破坏已经学好的光滑骨架。这种特性对 PINN 太对味了,因为很多物理方程的解都有“局部剧烈变化 + 整体平缓舒展”的结构。

我实际在做一个模拟项目时试过直接用 KAN 去拟合一个带局部陡峭峰值的静态场,第一感受是:它不像 MLP 那样需要我先用足够多的层去堆出一个“勉强能用的高频表达能力”,而是从一开始就把自由度铺在了整个区间上,然后根据损失函数的梯度自动把自由度往误差大的局部区域集中。只要网格划分不是太稀疏,理论上它就能比 MLP 更快地定位局部特征。

2.3 导数视角:为什么 KAN 天然适合 PDE 残差计算

PINN 的损失函数里到处是导数项:一阶导数很常见,二阶导数也不稀奇,甚至有些方程要算到三阶四阶。如果网络表达的函数不够光滑,或者它的高阶导数信息无法稳定回传,训练就会变得非常糟糕。

MLP 如果用 ReLU 这类分段线性激活,一阶导数还行,二阶导数直接就归零了,等于高阶信息被结构性地抹掉。就算用 tanh、sin 这种光滑激活,梯度在深层传播过程中也会因为反复的乘法和激活函数饱和效应而衰减,到后面几层基本学不动高频细节。

KAN 这里有一个天然优势:B 样条基函数在数学上是分段多项式,阶次足够时,它的一阶、二阶甚至三阶导数都可以显式计算出来,而且是连续的。你把φ(x)对x求导,求的其实是基函数B_k(x)对x的导数,这部分可以提前算好,梯度传递路径非常短,不涉及跨越多层网络的链式衰减。更妙的是,样条的最高阶次决定了它能保留到几阶的连续性。做 PINN 时建议用三次或者更高次样条,保证至少二阶导数是连续的,这样 PDE 残差里的扩散项、波动项都能正常计算,不会因为激活函数本身的光滑度不够而在某些网格节点上出现导数跳变。

这其实是我认为 KAN 比 MLP 更适合物理计算的一个非常关键的隐式原因:它把“可表达的函数空间”和“可求导的稳定性”一起提高了。MLP 能表达的函数空间其实很大,但它的导数稳定性经常撑不住 PDE 残差的高阶要求;KAN 是先把函数限定在一个局部多项式空间里,再用足够多的小区间去逼近复杂解,导数天然可控。某种程度上说,这是一种更“工程友好”的表达方式。

3. MLP 在物理约束下的系统性局限:频率、梯度和多目标之间的冲突

3.1 “万能”近似定理没有回答的问题:优化器能不能找到它

MLP 背后有一个被反复引用的万能近似定理,大意是只要有足够的宽度或深度,MLP 可以逼近任意连续函数。但这个定理问都没问一件事:即使存在一组最优权重,你靠梯度下降能不能找到它?

实际训练中经常发生的情况是,MLP 的参数空间里比“理想权重”更密集的区域,反而对应着那些泛化能力不太好、偏平滑、偏平均化的解。因为损失函数在高维空间里不是一块平滑的盆地,而是无数个“差不多能用”的坑。优化器很容易掉进一个整体误差还凑合的坑里,但这个坑对应的高频局部细节是明显缺失的。

在 PINN 里,这个问题会被物理约束放大。PDE 残差项往往对高频成分极其敏感,因为导数会把高频分量放大,残差大不大,跟网络能否表达高频局部结构强相关。MLP 学不动那些高频分量,PDE 残差就降不下来,损失函数表面看起来还是在下降,实际上只是在牺牲别的约束,边界条件或者初值条件开始被破坏。最后出现一种我称之为“假收敛”的现象:损失曲线很漂亮,但解的物理形态不对。

3.2 频谱偏差:低频先学,高频残差迟迟不降

关于 MLP 还有一个实验现象值得专门说,就是频谱偏差。你会发现,MLP 在拟合一个包含多个频率成分的函数时,低频分量总是先被学会,高频分量要很晚才跟上,甚至永远跟不上。原因和梯度流动有关:低频成分在损失函数里贡献的梯度方向更一致、更平稳,高频成分则贡献了更多振荡、方向不停变化的梯度。优化器作为一个动量系统,天然更愿意沿着平稳方向走,于是高频分量一次次被平均掉。

这不是说 MLP 完全学不了高频,而是说它学高频的“成本”比低频高得多,需要更多的训练轮数、更小的学习率、更细的初始化。放到物理场里,问题就大了。很多偏微分方程的解里,低频是主结构,高频是细节特色,两者叠加才构成真实物理场。你让 MLP 在有限轮数内把两者同时学好,它基本会选择先保住低频主结构,高频部分要么欠拟合,要么产生一些伪振荡来强行减小残差。

KAN 的局部 B 样条结构在应对这种多频叠加时,和 MLP 有本质区别。它的基函数分布在局部区间上,不同网格区间天然对应着不同频率的调整能力:网格细一点的地方,能表达的频率就高;网格粗一点的地方,就专注于低频。换句话说,KAN 把“不同频率的学习任务”在一定程度上解耦到不同空间位置上了,而不是像 MLP 那样把所有频率混在一组全局权重里“大锅炖”。这一点用文字描述可能不够明显,但你在实际把两个结构放在同一个测试函数上拟合时,会发现 KAN 在初始几轮就能把局部尖峰拉起来,MLP 则全程在“抹平”它。

3.3 损失权重与梯度平均化:MLP 在 PINN 中更难收敛的结构性原因

PINN 的损失函数通常包含好几项:PDE 残差、边界条件、初始条件、可能还有额外数据项。每一项都要算梯度,然后加权相加。MLP 的结构让这些梯度纠缠在一起,因为它们都作用在同一组权重矩阵上。于是训练过程中经常出现一个情况:边界条件想把网络的某个区域往一个方向推,PDE 残差却想把同一个区域往另一个方向推,梯度一平均,网络就停在中间,两个目标都满足得马马虎虎。

这个现象不全是梯度平均的锅,但是 MLP 的全局权重结构让这个问题变得很尖锐。每一个权重都被所有目标同时影响,你想让边界条件更精确,就不可避免地把内部区域的函数值也动了一遍。KAN 因为参数是局部的,至少在空间上提供了“区域解耦”的可能:边界附近的问题优先调整边界附近的控制点,不会把一个角落的误差传到整个场域。

当然这不代表 KAN 就能绕过所有的多目标冲突,但它确实会把“不同位置的物理目标互相干扰”的程度减轻不少。这也是我做 HPKM-PINN 的原始动力之一——不是要从原理上证明哪个网络绝对好,而是想把两种结构的优点拆出来,放到一个可工程实现的并行框架里用。

4. HPKM-PINN 的并行混合逻辑:两个分支各补一块短板

4.1 并行输出的组合方式:不是把模型拼大,而是把误差分开处理

HPKM-PINN 这个缩写,我把它理解为 HHybrid Parallel KAN-MLP Physics-Informed Neural Network,也就是并行混合 KAN 与 MLP 的物理信息神经网络。它最核心的设计思想不是把 KAN 和 MLP 简单拼成一个更大的网络,而是让两个分支各自负责一类误差模式,最后在输出层做线性叠加。

具体来说,可以把网络输出写成:

u(x) = u_MLP(x) + u_KAN(x)

其中u_MLP负责整个物理场的平滑、低频、大尺度结构;u_KAN负责局部、高频、突发性的细节修正。在最简单的情况下,两个分支的输入都是坐标x,输出在末端相加,共同去匹配物理方程的解和边界条件。这个“相加”看起来很简单,但它背后的分工逻辑非常明确:MLP 那个分支先兜底,KAN 那个分支只去做“MLP 做不到的补丁”。

为什么不干脆全用 KAN?因为 KAN 在全局光滑区域的表达效率未必比 MLP 高,而且样条网格一旦覆盖一个很大的空间范围,控制点数量会爆炸,优化起来反而更慢。为什么不干脆全用 MLP?因为前面讲的那些频谱偏差、梯度纠缠、局部失真问题,会让 MLP 在关键物理细节上卡住。两个分支并行,是一种“各自的短板让对方补”的思路。

4.2 平滑骨架与局部修正:分工的理论依据

物理方程的解经常可以粗略拆成“整体趋势 + 局部扰动”。比如对流扩散问题里,一个大尺度的浓度分布是平滑变化的,但在某些区域会出现陡峭的浓度界面;流体问题里,整体流场相对平滑,但在边界层和激波附近会有急剧变化。MLP 的偏置让它擅长前者,KAN 的局部支撑特性让它擅长后者。

并行混合在网络结构上天然就对应着这种解构。训练初期,MLP 分支会先把物理场的轮廓撑起来,因为它的全局平滑表达能力本身就是在“抓大放小”;KAN 分支因为初始状态近似恒等或小扰动,不会干扰 MLP 的起步。随着训练进行,PDE 残差会告诉优化器哪里还不够好,梯度大的地方大概率就是局部细节缺失的地方,KAN 分支的控制点会在那些区域被拉动,逐渐长出局部结构。

这里有一个值得注意的工程细节:为了让两个分支真正做到分工,而不是互相抢活干,需要控制 KAN 分支的初始输出幅度,让它一开始只输出一个小量,后面再由损失函数决定它要不要变大。如果一开始就把 KAN 和 MLP 放在同一起跑线上,两个分支都可能去拟合同一部分内容,最后不仅浪费参数,还可能出现互相抵消的情况。某开发者在做模拟项目 X 时,就因为没做这个初始化控制,KAN 分支直接反向学出了 MLP 的形状,最后两个分支抵消得干干净净,效果还不如单独用 MLP。

4.3 并行混合解决不了的问题清单

说实用的话,并行混合也不是万能钥匙。至少有三类问题它解决不了,如果你在做类似方案,最好提前有预期。

第一,KAN 在边界附近的边缘效应不会因为并行混合就消失。B 样条基函数在网格边界处的导数定义往往比内部弱,如果物理场的边界条件本身很尖锐,KAN 分支可能会在边界处产生多余振荡,混合结构里依然需要额外的边界损失权重来压制它。第二,高维问题的网格个数仍会爆炸。KAN 的局部支撑特性在二维、三维的规则张量网格下还能用,但维度一高,网格点数量指数增长,控制点总数会迅速膨胀,并行混合并不能改变这个现实。第三,混合结构不能消除 PINN 本身在病态方程上的不稳定性。如果方程本身是强非线性、多解或者带混沌性质,再加多少个分支也只是增加了拟合能力,不解决物理问题本身的适定性。

所以我对并行混合的定位是:它优化的是“给定方程和配点,网络能不能更快更稳地找到合理解”,而不是去解决“PDE 方程本身适定不稳定”这个数学问题。把两者分清,才不会对架构抱不切实际的期待。

5. 从理论到训练:把这节内容落进代码前要处理的五件事

5.1 初始化与网格尺度:B 样条不是越细越好

KAN 实现里最常见的翻车点就在网格设置。新手容易觉得网格越细,表达高频越强,效果越好,但实际上一上来就铺极细的网格,控制点数量增大,训练初期梯度信息会被大量局部自由度稀释,反而更难收敛。更合理的做法是从粗网格开始,先让 KAN 抓住大尺度结构,训练一段后再加密网格,让局部细节有地方落脚。这种“由粗到细”的策略,比一上来就精确密密麻麻的网格要稳定得多。

初始化时还有一个技巧:把 KAN 分支的 B 样条控制点初始成近似恒等映射的形状,也就是让它的输出一开始接近输入本身或者接近零。这样在并行混合里,MLP 分支可以安心先学习全局结构,KAN 分支再逐步偏离恒等状态去学习残差。我试过不这么做,直接随机初始化 KAN 分支,结果整个混合网络的前几十轮几乎全在“吵架”,损失曲线上下抖动,训练体验非常差。

5.2 KAN 与 MLP 分支的学习率、优化器需要分开管理

不同结构对不同优化器的反应很不一样。MLP 用 Adam 类的自适应优化器通常问题不大,但 KAN 在大量实际实验中,用 L-BFGS 这类二阶优化器反而更稳,因为样条控制点的局部特性配合二阶信息,可以更快地定位局部控制量。如果你把两分支塞进同一个优化器、共用一套超参数,很可能出现一个分支学好了,另一个分支过拟合或欠拟合的情况。

建议在代码里给两个分支单独维护优化器,KAN 分支优先考虑小步长 Adam 预热,再切换 L-BFGS;MLP 分支保持常规 Adam。学习率相差一两倍也很常见,不必追求统一。并行混合的重点是“各取所长”,那就让它们各用各的节奏跑。

5.3 显式样条导数:别让自动微分链替你兜底

做 PINN 时求导是躲不掉的。KAN 网络里大量使用 B 样条基的线性组合,自动微分框架能处理链式法则,但更稳妥的做法是显式写出样条基函数关于坐标的导数公式,在前向计算时就把一阶、二阶导数值算出来。原因有两个:一是效率,显式求导省去了冗长的反向图;二是稳定性,B 样条在节点处的导数定义依赖重复度,显式处理不容易出错。

一个比较隐蔽的坑是:你把 B 样条和 MLP 并行之后,PDE 残差要同时考虑两个分支的输出导数。这时候别把 KAN 和 MLP 的导数分开算再简单相加就完事,要看清楚物理方程里有没有交叉项,比如对流项里出现“速度乘以浓度梯度”,如果速度场本身也是网络输出的一部分,交叉项就会让导数计算多一层复杂性。我在做模拟项目 X 时就在这里吃过亏,漏了一个交叉项,损失曲线看着降了,解的物理特性完全不对。

5.4 对比实验最少要做三个配置

理论分析再多,最后还是要用实验说话。建议你至少跑三个配置:纯 MLP、纯 KAN、以及 HPKM 并行混合。不要只看最终误差,还要记录训练中误差的下降曲线、最大残差出现的位置、训练耗时、以及不同配置下边界条件的满足情况。

我见过有人在对比时只看整体 L2 误差,结果整体误差下降了,但最关键的局部区域误差反而变大了,这种对比很容易被平均数字骗过去。物理信息神经网络的评价一定要盯着“最大残差在哪、边界条件保得住吗”这两个维度,因为它们才是物理可用性和普通拟合误差的差别所在。如果你做的题本身有已知的解析解或参考解,尽量在最大误差位置做个标签,看看每个配置都卡在哪个区域。这样你才能判断并行混合是不是真的把 KAN 的局部能力和 MLP 的全局能力都吃到了。

写到这里,第1章的理论部分算是收了尾。这些内容不复杂,但确实是一条条踩坑踩出来的认知。我个人的体会是,KAN 和 MLP 的争论短时间内不会停,与其纠结谁取代谁,不如把这两种结构当作两种不同的“表达习惯”,在具体物理问题里按需组合。HPKM-PINN 的并行混合只是其中一种组合方式,后面我还会继续更新实际训练中的调试记录和具体案例,希望这个系列对正在做 PINN 的你有点实际帮助。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询