本文提出了一种将迁移学习应用到PINN的方法。可以极大的缩短训练PINN所用的时间,目前,PINN所需要的训练次数往往都在成千上万次,

作者通过批量训练PINN,来学习丰富的潜在空间用来执行迁移学习。主要是冻结网络的隐藏层,只微调最后一个线性层。这样可以将神经网络的推理速度快好几个数量级。对于线性问题,本文涉及的几个实验都仅仅只需要几秒钟就可以完成训练,此外,非线性问题依旧可以使用梯度下降进行优化,这就类似于一般的迁移学习了。

首先,关于本文模型结构,可以给一个大概的描述,如下图:

不同于一般的PINN结构,本文的输出层的大小是可以根据参与训练的方程的个数进行调整的。但这些方程都是同一类的,具有不同的非齐次项,初始条件,边界条件等。比如,薛定谔方程,因为同时训练三个不同的参数,取n=3,输出层就有6的神经元。(因为薛定谔方程的解是复值解,本身就需要两个神经元)。因为没有找到代码,所以我猜测训练时,网络同时给输出三个解,分别带入各自的损失函数(也就是残差+边界),从而对网络进行优化。最后的微调阶段,对于一个新的方程,只调节最后一个线性层的大小,就可以快速精确的获得近似解。

现在我们看一下论文。本文发表在ICML2022。

摘要:作者首先说到,将迁移学习应用到求解PDE还未被充分探索,诚然,我还没有读到过类似的文章。对于线性的常微分和偏微分方程,作者提出一种一次性推断的迁移学习方法。这就意味着在求解新的方程时,无需重新训练整个网络。

介绍:目前关注PINN计算花费的论文还不是很多,PINN的训练是很慢的,自己的感觉是训练时对cpu要求比较高,收敛速度比较慢。因此作者使用迁移学习来解决这个问题,在一个任务上训练,并将模型转移到其他的任务上。具体的说,在一系列PDE上预训练的PINN,可以有效地用于求解新的微分方程。通过冻结预训练的PINN的隐藏层,求解同一系列的新的微分方程就简化于微调线性层。并且对于线性系统,甚至可以通过人工计算消除微调的必要,从而降低训练开销,大大减少训练时间。这也是本文将重点介绍的。

背景:ODE给定IC,传统下可以使用积分求解器求解。目前也可以使用PINN求解,损失函数如3式。使用神经网络,相比较于传统方法,可以消除维度灾难、避免累积误差等。但是,目前关于迁移学习的应用还比较少。

相关工作是机器学习关于求解PDE的发展历史。

方法:首先以ODE为例。定义一个神经网络去近似方程的解。换句话说,被参数化的神经网络,将输入t投影到一个高维的非线性隐层空间H,H是隐层空间和非线性激活函数的组合。然后,在潜在空间的线性组合,来获得最后的解。

为了训练网络,定义最后的权重层是多输出的。这样就可以同时训练多个方程(比如不同的微分算子,初始条件等)。捆绑训练允许我们 1 将训练集成到单个网络中,2 鼓励隐层状态H对于多个方程适用。

在推断时(对于一个新的任务),我们冻结隐藏层的参数,仅仅微调最后一个线性层。解可以被写成 H*W 的形式。那么,在面对新的问题是,损失就变成了4式。

对于线性系统,W是可以直接计算的。

还有一个更直观的理解,我们把h看作一组非正交基,Wout是一组系数,即通过线性组合确定输出的近似函数。并且7式还可以进一步简化,因为前一项逆矩阵可以提前计算。总之,这样就可以免于计算梯度,因为没有涉及到进一步的训练。并且如果H足够好,就可以获得高精度的解。事实上,这个方法很依赖于矩阵的逆,如果有很大条件数时,会导致问题病态。实验中可以通过正则化和分解来解决。 对于非线性系统,最后的线性层只能使用微调得到了。

然后到了PDE,一样的过程,可以计算得到W。我们再来说一下H,作者认为,只有当H这组基能够很好的表示解空间时,才能获得准确的解(希望由H张成的子空间尽可能大)。因此,为了鼓励学到有代表性的隐空间,作者使用了一个网络来训练多个方程。

结果:

使用了四个不同的泊松方程训练,用两种方式测试。已知分析解。图1结果还不错。

然后又考虑了薛定谔,使用三个方程训练,测试结果如下。

One-Shot Transfer Learning of Physics-Informed Neural Networks的更多相关文章

  1. 1506.01186-Cyclical Learning Rates for Training Neural Networks

    1506.01186-Cyclical Learning Rates for Training Neural Networks 论文中提出了一种循环调整学习率来训练模型的方式. 如下图: 通过循环的线 ...

  2. Learning How To Code Neural Networks

    原文:https://medium.com/learning-new-stuff/how-to-learn-neural-networks-758b78f2736e#.ly5wpz44d This i ...

  3. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Assignment(Optimization Methods)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. 请不要ctrl+c/ctrl+v作业. Optimization Methods Until now, you've always u ...

  4. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Initialization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Initialization Welcome to the first assignment of "Improving D ...

  5. 吴恩达《深度学习》-课后测验-第一门课 (Neural Networks and Deep Learning)-Week 3 - Shallow Neural Networks(第三周测验 - 浅层神 经网络)

    Week 3 Quiz - Shallow Neural Networks(第三周测验 - 浅层神经网络) \1. Which of the following are true? (Check al ...

  6. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Regularization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Regularization Welcome to the second assignment of this week. Deep ...

  7. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Gradient Checking)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Gradient Checking Welcome to the final assignment for this week! In ...

  8. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week3, Hyperparameter tuning, Batch Normalization and Programming Frameworks

    Tuning process 下图中的需要tune的parameter的先后顺序, 红色>黄色>紫色,其他基本不会tune. 先讲到怎么选hyperparameter, 需要随机选取(sa ...

  9. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Optimization algorithms

    Gradient descent Batch Gradient Decent, Mini-batch gradient descent, Stochastic gradient descent 还有很 ...

  10. Coursera, Deep Learning 2, Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Course

    Train/Dev/Test set Bias/Variance Regularization  有下面一些regularization的方法. L2 regularation drop out da ...

随机推荐

  1. c++多线程thread用法小例子

    测试分布式存储系统时,针对并发测试,同时创建500个文件,采用这种方法. #include<iostream> #include<thread> using namespace ...

  2. PULPINO仿真建立

    PULPINO仿真建立 PULPINO主要特点: systemverilog实现 有常规外设,GPIO.SPI.I2C.UART等 有调试接口 总线有AXI,外设总线为APB,扩展性好 脚本为cmak ...

  3. Oracle 验证身份证号

    --验证身份证号是否正确CREATE OR REPLACE FUNCTION fn_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regstr ...

  4. cypress初探

    long long ago就已经被各大公众号洗脑这款神奇的工具,那我们一起来学习下吧(基础入门安装,边学习边记录,勿喷谢谢) 第一步:访问官方网站:https://www.cypress.io/ 第二 ...

  5. git commit提交代码时跳过 eslint校验

    在使用命令 git commit -m '提交信息' 将本地代码提交到远程仓库时候, 如果项目安装了 per-commit,则会在Git键入提交信息前进行代码风格检查,如果代码不符合相应规则,则报错. ...

  6. Python条件语句和基本数据类型

    1.if基本语句 if 条件: 内部代码块 else: ...... 2.if支持嵌套 if 1 == 1: if 2 == 2: print('走一步') else: print('走两步') el ...

  7. 借助mapshaper的简化来修复geojson的拓扑错误

    在使用turf.union方法合并面的时候,报错了.无法全部合并完成. 按照提示说是出现线的拓扑错误.至于哪里错误也看不出来. turf不提供拓扑修正功能的js包 难道有转到arcgis中去修复?好搓 ...

  8. Mysql之迂回连接术

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14932870.html 关键词:OmniDB.Mysql Router 背景:项目的测试数据库放在了生产机 ...

  9. react native 中 fetch获取请求头header 的token信息

    首先说一句,所有请求,都要带一个token信息,很难受啊,我目前直接将token信息放在global下自定的属性里面.(本地存储Storage和AsyncStorage,取一下,好麻烦) global ...

  10. ubuntu 20.04 ibus添加五笔输入法

    ubuntu 20.04 ibus添加五笔输入法:虽然现在五笔输入法已经没有什么新人使用,如果还有一两个人,找不到系统自带的极点五笔输入,可以按如下方式操作:以前是用ibus-setup,点添加,现在 ...