物理信息神经网络PINNs : Physics Informed Neural Networks 详解

本文深入解析Physics Informed Neural Networks(PINNs),介绍其如何结合物理规律解决有监督学习任务。PINN利用偏微分方程的约束,减少对大量数据的依赖,但存在处理高维数据的挑战。文章通过连续和离散时间模型的实例,验证了PINN在解偏微分方程和反问题上的应用。

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

本博客主要分为两部分:
1、PINN模型论文解读
2、PINN模型相关总结

第一部分:PINN模型论文解读

一、摘要

基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN),是一类用于解决有监督学习任务的神经网络,同时尊重由一般非线性偏微分方程描述的任何给定的物理规律。
原理:它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。
优势:与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理信息约束,因而能用更少的数据样本学习到更具泛化能力的模型。
缺陷:PINN的缺点是较难处理高维数据,低维可以处理,因为所需训练数据随着方程维度的增加而呈现指数增加,故这一点很大地限制了PINN求解高维方程;PINN模型的求解速度其实是很慢的,作为“没有免费午餐”定理的一个方面,作为一种“通用方法”,与为特定偏微分方程设计的传统数值格式相比,PINN在近似偏微分方程数值解的精度和速度方面仍然处于劣势。
问题分类: 文章分为两部分, 第一部分写的是 Data-driven solutions of nonlinear partial differential equations, 就是在讲怎么解 PDEs(Partial Differential Equations), 第二部分写的是 Data-driven discovery of nonlinear partial differential equations, 就是在讲怎样解PDE的反问题 (带参数的PDE,参数需要在解的过程中求解出来)。
问题求解算法模型:根据问题的数据类型不同,设计了两种不同的问题求解算法模型,即连续时间和离散时间模型。
实验验证分析:本文对 第一部分 Data-driven solutions of nonlinear partial differential equations 选取两个方程(数据类型为连续时间和离散时间)进行PINN模型验证分析;对 第二部分 Data-driven discovery of nonlinear partial differential equations 也选取两个方程(数据类型为连续时间和离散时间)进行PINN模型验证分析

全文组织结构:
在这里插入图片描述

二、解决的问题

1、监督学习是机器学习中的一个大类, 很多分类问题,回归问题都可以用它来解决。 那么, 从求解PDE的角度来看, 监督学习能发挥什么样的作用呢? (如何逼近一个函数(算子)一直以来便是数学中的难题。 数学家们发展了很多工具来逼近函数, 如插值理论,框架, 谱方法 , 有限元等。 从逼近论的角度来看࿰

### 使用PINNs求解薛定谔方程 #### 背景介绍 瞬态薛定谔方程(Time-dependent Schrödinger Equation, TDSE)是量子力学中描述量子系统随时间演化的基本方程之一[^1]。该方程由奥地利物理学家Erwin Schrödinger于1925年提出。 #### 方法概述 Physics-Informed Neural Networks (PINNs)是一种结合深度学习和物理定律的方法,特别适用于解决偏微分方程(PDEs)相关的问题[^4]。通过引入物理约束条件,PINNs能够在不完全了解初始或边界条件下有效地逼近复杂系统的解决方案。 对于TDSE而言,可以将空间坐标 \((x, y, z)\) 和时间 \(t\) 作为输入变量传递给神经网络;而输出则是对应时刻下的波函数 \(\psi(x, y, z, t)\),这代表了粒子处于特定状态的概率幅值分布情况[^3]。 #### 实施步骤详解 ##### 数据准备与预处理 由于TDSE本质上是一个线性的二阶偏微分方程,在构建数据集时通常不需要大量的样本点来进行监督训练。相反,更多关注的是定义合理的损失函数来指导模型的学习方向。具体来说: - **初始化参数设置**:确定网格大小、步长以及总的模拟周期。 - **随机采样时空节点**:为了提高泛化能力并减少过拟合风险,可以从整个定义域内均匀抽取若干组\([x_i,y_j,z_k,t_l]\)组合形成训练集。 ##### 构建PINN架构 采用多层感知机(MLP)结构搭建基础框架,并在此基础上加入额外项以体现TDSE特性: ```python import torch import torch.nn as nn class SchrodingerNet(nn.Module): def __init__(self, layers): super(SchrodingerNet, self).__init__() # Define fully connected layers according to given layer dimensions linears = [] for i in range(len(layers)-1): linears.append(nn.Linear(layers[i], layers[i+1])) if i != len(layers)-2: linears.append(nn.Tanh()) self.fc_layers = nn.Sequential(*linears) def forward(self, xyt): u_pred = self.fc_layers(xyt) return u_pred def compute_loss(model, points, hbar=1., m=1.): """Compute the loss function based on the physics-informed principle.""" # Extract spatial-temporal coordinates from input tensor xyt = points.requires_grad_(True) psi_real = model(xyt)[...,0] psi_imag = model(xyt)[...,1] grad_psi_real = torch.autograd.grad( outputs=psi_real.sum(), inputs=xyt, create_graph=True, retain_graph=True )[0][:,:-1].sum(dim=-1).unsqueeze(-1) grad_psi_imag = torch.autograd.grad( outputs=psi_imag.sum(), inputs=xyt, create_graph=True, retain_graph=True )[0][:,:-1].sum(dim=-1).unsqueeze(-1) laplacian_real = torch.autograd.grad( outputs=(grad_psi_real * grad_psi_real).sum(), inputs=xyt, create_graph=True, retain_graph=True )[0][...,-1:] laplacian_imag = torch.autograd.grad( outputs=(grad_psi_imag * grad_psi_imag).sum(), inputs=xyt, create_graph=True, retain_graph=True )[0][...,-1:] dt_real = torch.autograd.grad( outputs=psi_real.sum(), inputs=xyt, create_graph=True, retain_graph=True )[0][...,-1:].squeeze() dt_imag = torch.autograd.grad( outputs=psi_imag.sum(), inputs=xyt, create_graph=True, retain_graph=True )[0][...,-1:].squeeze() f_real = (-hbar / (2*m)) * laplacian_real - \ dt_imag.unsqueeze(-1) f_imag = (+hbar / (2*m)) * laplacian_imag + \ dt_real.unsqueeze(-1) mse_f_real = ((f_real)**2).mean() mse_f_imag = ((f_imag)**2).mean() total_mse = mse_f_real + mse_f_imag return total_mse ``` 上述代码片段展示了如何利用PyTorch库创建一个简单的SchrodingerNet类实例及其对应的loss计算逻辑。这里假设波函数具有实部和虚部分量形式\[ψ=\Re{ψ}+i\Im{ψ}\],因此最终预测结果会返回两个通道的数据表示。 ##### 训练过程优化策略 考虑到实际应用场景可能涉及复杂的势能环境等因素影响,建议采取如下措施提升收敛速度及稳定性: - 初始权重设定遵循Xavier/Glorot初始化原则; - 学习率衰减机制配合AdamW优化器共同作用; - 动态调整batch size规模适应不同硬件资源限制; - 对关键超参如\(ℏ,m,V(x)\)等进行敏感度分析实验验证最优配置方案。 ---
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值