本文提出了一种将迁移学习应用到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. Oracle DataGuard 出现 GAP 修复

    下面我们通过实验来进行演示如何修复: 一.主库切几个最新的归档,然后手工删掉,重新开启DG同步. 1.备库关闭应用日志和数据库 SQL> ALTER DATABASE RECOVER MANAG ...

  2. http 协议( 简单了解 )

    HTTP 请求协议 超文本传输协议,是一种用于分布式写作式和媒体信息系统的应用层协议. HTTP是万维网的数据通信的基础. HTTP协议概述 HTTP是一个客户端终端 (用户) 和服务器端 ( 网端) ...

  3. RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

    错误原因:数据有的在cpu上有的在gpu上debug:断点到出错位置查看类型,或者打印`x.is_cuda`查看修改:将cpu上的数据通过`.to(device)`加载到gpu上

  4. 关于浏览器缓存造成的bug解决方法(页面跳转缓存,刷新生效)

    1.在执行操作时带上一个随机数/时间戳,表示每一次的都是独一无二的

  5. 看了这本基础教程的书籍你还担心你的python学不好吗?

    python基础教程(第二版)PDF高清版免费下载地址: 提取码:chcj 值得花时间阅读的一本书 内容简介  · · · · · · 本书是经典教程的全新改版,作者根据Python 3.0版本的种种 ...

  6. 【python操作Excel的常见方法汇总】 xlrd pandas xlwings

    用python处理Excel数据,实现Excel的功能:分列.透视等功能 1. Excel 解压文件 #解压tar_path中的压缩文件到uzipPath def unzip_archive(tar_ ...

  7. .net5 winform 打开文件夹

    直接使用System.Diagnostics.Process.Start("路径"),有可能会包拒绝访问的异常,建议采用以下写法: var  newPath="" ...

  8. linux下启动jar包

    一.jdk 1.安装jdk 2.查看 摘自:(29条消息) Linux如何查看JDK的安装路径_fanyuna的博客-CSDN博客_linux查看jdk安装位置 1:echo $JAVA_HOME 使 ...

  9. 开启MySQL数据库远程连接

    为了使其余用户/计算机能访问SQL数据库,需对SQL Server进行以下配置.有以下两种方法: 方法一:bat命令修改. 新建.txt文件,添加以下内容,保存后再修改为.bat,双击.bat文件. ...

  10. 再识redis-2

    Redis初识 特点关键字: 高性能Key-Value服务器 ops能达到十万级别 每秒能执行约11万集合 每秒约81000-条记录 主要数据结构 列表 集合 有序集合 散列(别名哈希 Redis的哈 ...