该笔记主要介绍物理信息嵌入的神经网络(physics informed neural network),包括基本概念和简单的pytorch实现。
1 研究背景
以往描述复杂多尺度系统动力学往往采用有限差分、有限元、光谱亦或是无网络方法数值求解偏微分方程
这些传统的研究方法面临着代价高昂、无法解决缺失、间隙或者噪声边界条件等问题
深度学习的有点在于数据特征的自动选取,但由于其黑箱的性质在物理上不一致性或不可信较多(导致较差的泛化能力)
现有的大概有三种匹配形式:
- 小数据+了解所有的物理知识
- 数据类型中等,但缺少一些参数值或者偏微分方程的项
- 大数据——完全由数据驱动,不包含任何物理知识
2 PINN的优点
2.1 应对不完美的模型和噪声数据
2.2 小数据领域上由较强的泛化能力
2.3 更好的阐释深度学习、不确定性的量化
2.4 高位数据的处理
3 如何嵌入物理——观测与归纳
- 足够的数据可以包含学习任务的所有的数据集——理想情况(面临数据收集的成本)
- 将方程进行求解得到求解表达式,根据表达式来设计输入之后的运算,但这面临着方程求解的难度
- 将偏微分方程嵌入神经网络的损失函数——控制输入和输出之间的网络参数训练过程、使其和输入变量保持一定的物理关系(利用自动求导)
4 pytorch的实现
这里给方程组是随便写的,其中第二个方程是边界条件
首先是二维变成一维:
然后需要设计梯度计算的部分
order是求几阶导
接下来就是基于上述的两个方程来构建损失函数