3. 神经网络基础:全连接网络结构、激活函数、损失函数、优化器(Adam/LBFGS)及训练基本流程

在PINN(物理信息神经网络)的工程实现中,全连接网络(Fully Connected Network, FCN)是最核心的骨干结构。无论是求解偏微分方程的正问题,还是反演未知参数,PINN都依赖一个可微的神经网络来逼近目标函数。理解全连接网络的结构设计、激活函数的数学特性、损失函数的物理含义以及优化器的收敛行为,是搭建稳定、高效PINN模型的前提。本章将从工程实践视角,系统拆解这些基础组件,并给出在科学计算场景下的选型建议与训练流程。

全连接网络与PINN训练核心组件关系图 输入层 x y t ... 坐标/参数 隐藏层1 W₁, b₁ + σ₁ 隐藏层2 W₂, b₂ + σ₂ 隐藏层3 W₃, b₃ + σ₃ 输出层 u v 预测解 损失函数(PDE残差 + 边界条件 + 数据)→ 反向传播 → 优化器(Adam/LBFGS)更新权重 输入 隐藏层(激活函数) 输出 训练反馈

3.1 全连接网络结构与初始化策略

3.1.1 核心原理:从输入到输出的映射

全连接网络(又称多层感知机,MLP)由输入层、若干隐藏层和输出层组成。每一层的输出通过线性变换与非线性激活函数逐层传递。对于PINN而言,输入通常是时空坐标(x, y, z, t)或参数化变量,输出则是待求解的物理场(如位移、温度、速度、压力)。数学上,第l层的输出可表示为:

z^(l) = W^(l) · a^(l-1) + b^(l)
a^(l) = σ(z^(l))

其中W为权重矩阵,b为偏置向量,σ为激活函数。PINN中网络深度和宽度的选择直接影响逼近复杂非线性函数的能力。对于光滑的PDE解,3~6层隐藏层、每层50~200个神经元通常能取得良好效果;对于含激波或边界层的多尺度问题,则需要更深的网络或引入残差连接。

3.1.2 初始化方法:Xavier与He初始化

权重初始化对PINN训练收敛速度影响显著。Xavier初始化适用于tanh、sigmoid等饱和激活函数,其方差设置为2/(fan_in + fan_out);He初始化适用于ReLU及其变体,方差设置为2/fan_in。在PINN中,由于常用tanh作为激活函数(因其二阶导数光滑,适合PDE约束),推荐使用Xavier初始化。偏置通常初始化为0或极小值(如1e-4),避免初始输出落在饱和区。

初始化方法适用激活函数方差设置PINN推荐度
Xavier/Glorottanh, sigmoid2/(fan_in+fan_out)★★★★★
He/KaimingReLU, LeakyReLU2/fan_in★★★☆☆
随机正态(小方差)任意0.01²★★☆☆☆
经验提醒:在PINN中,若使用tanh激活函数,输入坐标应归一化到[-1, 1]或[0, 1]区间。否则,当输入值较大时,tanh进入饱和区,梯度消失,导致PDE残差无法有效回传。

3.2 激活函数:PINN场景下的选型与数学约束

3.2.1 常用激活函数对比

激活函数为网络引入非线性,其可微阶数直接决定PINN能否计算高阶PDE残差。例如,求解二阶弹性力学方程时,网络输出对输入的二阶导数必须存在且连续。下表对比了常见激活函数的性质:

激活函数表达式可微阶数PINN适用性注意事项
tanh(e^x - e^-x)/(e^x + e^-x)无限阶光滑★★★★★需输入归一化;梯度在饱和区消失
sigmoid1/(1+e^-x)无限阶光滑★★★☆☆输出非零中心,收敛慢
ReLUmax(0, x)一阶不可导★☆☆☆☆二阶导数为0,无法用于二阶PDE
SiLU/Swishx · sigmoid(x)无限阶光滑★★★★☆计算量略大,但梯度流更平稳
GELUx · Φ(x)无限阶光滑★★★★☆近似光滑,适合复杂边界

3.2.2 激活函数对PDE残差的影响

在PINN中,损失函数包含PDE残差项,即网络输出对输入的高阶导数。若激活函数在定义域内不可导(如ReLU在0点),则自动微分(Autograd)计算二阶导数时会得到0或NaN,导致训练失败。因此,PINN中几乎不使用ReLU作为隐藏层激活函数。tanh因其无限光滑且二阶导数表达式简单,成为PINN的默认选择。对于包含振荡解的问题(如高频波动方程),可考虑使用周期激活函数(如sin)或傅里叶特征映射,但需注意梯度稳定性。

风险提示:当使用tanh时,若网络权重初始化过大,初始输出可能落在饱和区(|x|>3),导致梯度接近0,训练停滞。建议在第一个训练阶段使用Adam优化器(学习率1e-3),待损失下降后再切换LBFGS进行精细优化。

3.3 损失函数:物理约束与数据拟合的加权组合

3.3.1 PINN损失函数的构成

PINN的损失函数由三部分组成:PDE残差损失、边界/初始条件损失、以及(若有)观测数据损失。以二维稳态热传导方程为例:

L_total = λ_pde · L_pde + λ_bc · L_bc + λ_data · L_data

L_pde = (1/N_pde) · Σ | ∂²u/∂x² + ∂²u/∂y² - f(x,y) |²
L_bc  = (1/N_bc) · Σ | u(x_bc, y_bc) - g(x_bc, y_bc) |²
L_data= (1/N_data) · Σ | u(x_data, y_data) - u_obs |²

其中λ为各损失项的权重系数。权重设置直接影响训练收敛方向:若λ_pde过大,网络优先满足PDE但可能忽略边界;若λ_bc过大,则边界拟合好但内部残差大。工程上常用自适应权重调整策略(如NTK理论或梯度归一化)来平衡各项。

3.3.2 损失函数设计要点

  • PDE残差采样点:应在计算域内均匀随机采样,同时可在边界附近加密采样点以提高边界拟合精度。
  • 权重初始化:建议初始设置λ_pde=1.0,λ_bc=10~100,λ_data=1~10,然后根据训练曲线动态调整。
  • 损失归一化:若PDE残差量级远大于边界损失(如相差10⁶倍),需对各项做归一化处理,否则梯度被大项主导。
案例拆解:在一维波动方程求解中,初始条件u(x,0)=sin(πx),边界条件u(0,t)=u(1,t)=0。若λ_bc设置过小(如0.01),训练初期网络只优化PDE残差,导致边界处预测值偏离0,产生虚假振荡。通过将λ_bc提升至50,并在前500次迭代中固定λ_pde=1,训练损失下降速度提升约3倍,最终L2相对误差从8.2%降至1.7%。

3.4 优化器:Adam与LBFGS的协同策略

3.4.1 Adam优化器:稳健的全局搜索

Adam(Adaptive Moment Estimation)结合动量与自适应学习率,对梯度尺度不敏感,适合PINN训练的初期阶段。其超参数推荐:学习率1e-3~1e-4,β₁=0.9,β₂=0.999,ε=1e-8。Adam能快速降低损失,但收敛后期精度有限(通常L2误差在1e-3~1e-4量级)。

3.4.2 LBFGS优化器:高精度局部收敛

LBFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)是一种拟牛顿法,利用梯度历史信息近似Hessian矩阵,在光滑损失函数上具有超线性收敛速度。在PINN中,LBFGS通常作为第二阶段优化器,在Adam训练至损失平台期后切换。其优势在于:

  • 无需手动调整学习率,默认使用强Wolfe条件线搜索。
  • 对高精度PDE求解(误差要求<1e-5)效果显著。
  • 内存占用低,适合大规模参数网络。
对比维度AdamLBFGS
收敛速度(初期)快慢(需较好初始点)
收敛精度(后期)一般(1e-3~1e-4)高(1e-6~1e-8)
学习率敏感性敏感,需调参不敏感,自动线搜索
内存占用低中(存储历史梯度)
适用阶段训练初期/全局搜索训练后期/局部精修

3.4.3 两阶段训练策略

# 伪代码示例
# 阶段1:Adam全局搜索
optimizer_adam = torch.optim.Adam(model.parameters(), lr=1e-3)
for epoch in range(5000):
    loss = compute_pinn_loss(model, x_pde, x_bc)
    optimizer_adam.zero_grad()
    loss.backward()
    optimizer_adam.step()

# 阶段2:LBFGS精修
optimizer_lbfgs = torch.optim.LBFGS(model.parameters(), lr=1.0, max_iter=2000)
def closure():
    optimizer_lbfgs.zero_grad()
    loss = compute_pinn_loss(model, x_pde, x_bc)
    loss.backward()
    return loss
optimizer_lbfgs.step(closure)
实战建议:切换优化器时,建议先保存Adam训练后的模型权重,再加载到LBFGS优化器中。若LBFGS在初始几步出现损失震荡,可适当降低max_iter或增加梯度裁剪(clip_grad_norm_)。

3.5 训练基本流程与收敛性诊断

3.5.1 标准训练流程

  1. 数据准备:生成PDE残差采样点(随机/拉丁超立方)、边界点、初始点;若含观测数据,划分训练/验证集。
  2. 网络构建:选择层数、宽度、激活函数(默认tanh),初始化权重(Xavier)。
  3. 损失定义:组合PDE残差、边界条件、数据项,设置初始权重λ。
  4. 优化器配置:先Adam(lr=1e-3)训练至损失平台,再切换LBFGS精修。
  5. 训练监控:记录总损失、各分量损失、梯度范数、预测解与参考解误差。
  6. 收敛判断:当LBFGS的梯度范数<1e-6或损失变化<1e-8时,认为收敛。

3.5.2 常见收敛问题与排障

现象可能原因解决方案
损失不下降学习率过大/过小;权重初始化不当调整lr至1e-4~1e-2;改用Xavier初始化
PDE残差大但边界损失小λ_pde权重过小增大λ_pde或对PDE残差做归一化
训练后期损失震荡Adam学习率未衰减使用学习率调度(StepLR/CosineAnnealing)
LBFGS不收敛损失函数非光滑;梯度计算错误检查激活函数可导性;验证自动微分梯度
预测解出现尖峰采样点不足或分布不均增加采样点数量,边界附近加密

3.5.3 案例复盘:Burgers方程求解

以粘性Burgers方程(ν=0.01/π)为例,初始条件u(x,0)=-sin(πx),边界条件u(-1,t)=u(1,t)=0。采用4层隐藏层(每层50神经元),tanh激活,Adam训练3000次后切换LBFGS。关键参数:λ_pde=1.0,λ_bc=100。训练过程中,Adam阶段损失从1.2降至0.03,LBFGS阶段进一步降至0.002。最终在t=1时刻的预测解与解析解对比,L2相对误差为0.8%。若直接使用LBFGS从头训练,损失在500次迭代后陷入局部极小(损失0.15),误差高达12%。这验证了两阶段策略的有效性。

风险提示:在PINN中,LBFGS对损失函数的平滑性要求较高。若PDE包含不连续源项或强非线性,建议在LBFGS前增加少量Adam预热(如1000次),确保网络已进入光滑损失区域。

3.6 总结与工程要点

全连接网络是PINN的骨架,其结构设计、激活函数选择、损失函数构建和优化器配置共同决定了求解精度与效率。工程实践中应遵循以下原则:

  • 结构优先:从3层隐藏层、每层50神经元起步,根据误差分布逐步加深加宽。
  • 激活函数:默认tanh,若需处理高频振荡可尝试sin或傅里叶特征映射。
  • 损失平衡:动态监控各损失分量,使用梯度归一化或自适应权重。
  • 优化器协同:Adam负责全局搜索,LBFGS负责局部精修,切换时机以损失平台为准。
  • 验证闭环:每次训练后,将预测解与解析解或数值参考解对比,计算L2/相对误差,并可视化残差分布。