上一章讲完 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。第l1层的某个神经元输出可以写成对第l层所有神经元输出的加权和再过一个固定的非线性。这个结构里可训练参数基本都集中在权重矩阵和偏置上激活函数是所有人共享的、不变的。KAN 的做法恰好相反它把一个网络层写成x_{l1,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-BFGSMLP 分支保持常规 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 的你有点实际帮助。