论文理解:“Self-adaptive loss balanced Physics-informed neural networks“

本文介绍了自适应损失平衡物理信息神经网络(IbPINNs),解决PINN训练中固定损失权重的问题。研究发现PINN的性能高度依赖于损失权重的选择。IbPINNs通过建立高斯概率模型,自适应调整损失项权重,以提高模型的精度和鲁棒性。实验结果展示了该方法在二维泊松方程求解中的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

译:自适应损失平衡物理信息神经网络

-- Neurocomputing -- 2022


一、引言

        鉴于PINN的损失函数的各个权重是固定的,并且也有研究观察到PINN的训练效率敏感地依赖于与不同损失项相关的权重。但是一般的调整损失权重的方法非常耗时、费力,而且容易出现错误和遗漏。所以作者希望找到一种更方便的自适应学习损失权值的方法——自适应损失平衡物理信息神经网络(IbPINNs)。

二、方法

2.1、动机

        首先PINN的损失是:

其中损失权重λ大小是固定的,以及

作者通过数值实验研究了损失权值对PINN精度的影响。这里演示通过表1中具有不同损失权的PINN学习一维泊松方程的结果。

误差曲线如图2所示:

很明显,PINN的性能受损失权值选择的影响。因此,需要提出一种更方便的方法来自适应学习这些损失权值,从而提高PINN的精度和鲁棒性。

2.2、IbPINNs

        作者建立了一个输出为u的高斯概率模型。高斯似然被定义为带均值的高斯,由PINN和不确定性参数近似:

基于最小化目标,最小化模型的负对数似然:

同样,也可以建立一个输出为g或h的高斯概率模型来定义PINN的BC和IC损失。进一步,假设高斯概率模型的输出包括两个向量u, g,每个都遵循一个高斯分布:

这就引出了多输出模型的最小化目标:

因此,作者建立了四个向量的多输出模型来定义损失函数。自适应损失平衡PINN(IbPINNs)的损失函数可以表示为:

一方面,当自适应权重\epsilon_f降低时,总权重\omega _f增加,这意味着对L_{PDE}的惩罚更大;另一方面,最后一项log \epsilon_f可以防止自适应权重下降太多。一般来说,较大的自适应权值会降低损失项的贡献,而较小的自适应权值会增加其贡献并对模型造成惩罚。即自动调整各损失项的自适应权重的方法。

对上述损失做一下变换s:=log\epsilon^2:

通过指数映射,可以使损失函数的最小化不受约束。由于exp(-s)解析为正域,自适应权值不会很快收敛到零。训练会在数值上更加稳定。ibpinn的示意图如图3所示。方法总结为算法一。

三、实验

二维泊松方程

结果:

 

### PINN 中自适应损失权重的实现方法与原理 #### 自适应损失权重的重要性 传统物理信息神经网络 (PINN) 的损失函数各部分权重固定不变,这使得训练过程对不同损失项之间的相对重要性高度敏感。研究表明,这种固定的权重设置可能导致训练效率低下,并影响最终模型的表现[^1]。 #### IbPINNs 方法概述 为了克服这一局限,提出了自适应损失平衡物理信息神经网络 (IbPINNs),该方法旨在动态调整各项损失函数的权重,以提高求解复杂偏微分方程的能力。具体来说,在处理像Navier-Stokes这样的流体力学问题时,通过自动调节损失权重可以显著改善收敛速度和准确性[^2]。 #### 关键技术细节 - **全局自适应机制**:不同于传统的网格化离散方案,SA-PINN采用随机抽样的方式选取训练样本点,降低了所需的数据量并提高了灵活性。更重要的是,引入了一个随位置变化而改变其值的权重函数,允许某些特定区域内的重要特征得到更多关注[^4]。 - **自适应权重更新策略**:在每次迭代过程中,根据当前误差分布情况实时修改各个子目标(如 PDE 损失、边界条件等)对应的系数大小。这意味着那些难以满足的部分将会被赋予更高的优先级,直到整体残差达到最小为止[^3]。 ```python def update_weights(losses, current_epoch): """ 动态调整每类损失项的权重 参数: losses (dict): 各个损失项及其对应数值 current_epoch (int): 当前轮次 返回: updated_weights (dict): 更新后的权重字典 """ total_loss = sum(losses.values()) normalized_losses = {k: v / total_loss for k, v in losses.items()} # 计算新的权重分配 updated_weights = {} for key, value in normalized_losses.items(): alpha = 0.95 # 平滑因子 beta = math.exp(-current_epoch * 0.01) # 衰减率 updated_weights[key] = alpha * value + (1 - alpha) * beta return updated_weights ``` 此代码片段展示了如何基于现有损失比例以及训练进度来自动生成下一阶段适用的新权重集。平滑因子 `alpha` 和衰减速率 `beta` 控制着历史表现的影响程度及时变效应的程度。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值