Respecting causality is all you need for training physics-informed neural networks

未发表
本篇工作时关于连续时间的PDE。也是从因果关系的角度入手,最近看过几篇该作者的工作。(简而言之就是从初始条件方向开始训练)
目前的PINN框架缺乏尊重物理系统演化所固有的时空因果结构。因此,作者提出PINNs损失函数的简单再表述来解决上述问题。并且这个函数可以在模型训练期间明确解释物理因果关系。并将它用作评估PINN收敛的一种机制。
首先,作者表明,目前的通过梯度下降训练连续时间的PINN,可能会隐含地偏向于在稍后的时间,甚至在解决初始条件之前就首先逼近PDE的解,这严重违反了时间因果关系。尤其当目标函数表现出对初始数据强烈的依赖性(混沌系统)时,就很容易失败。通过一个简单地例子描述一下:
one-dimensional Allen-Cahn equation

将边界条件作为硬约束。下图是作者的结果,经典的PINN无法处理好这个问题。

原始的PINN应该也可以求解,下图是我去原始PINN中找到的。

为什么PINN会失败呢?作者通过分析损失函数给出了解释。
一开始,定义一个时间残差损失,即在某个时间点,在该点的所有空间残差损失的平均。如下。

那么,PINN的总损失就可以写成

借助切线核理论,进一步离散损失,就可以得到下式。

离散后的损失告诉我们,如果我们想要最小化在某个时间点的时间残差损失,我们需要准确地预测该点的u和前一时刻的u,而在PINN的框架中,我们将对整个时空域内的u同时进行最小化。这就违反了时间因果关系,使得PINN的收敛性受到影响。只有在前一时刻PINN的模型得到好的优化的时候,小幅度后的PINN残差最小化才有意义。
根据下图,我们可以看到,原始PINN更容易关注远离初始条件的位置。

根据上述的观察,作者提出了PINN的因果训练,通过对损失函数的重新表述来使得PINN满足因果规律。具体地说,就是给每个时间残差损失前添加一个权重,如下。

作者希望,在ti被充分最小化前,它以及它之前时刻的权重都应该很大,它们之后的权重要很小。通过下式的权重选择实现这个目标。

那么总损失就可以写成

这就可以从时间小的开始训练。当时我的疑惑是:网络收敛会很难吧。当优化到中间时,如果前面有学不好了,那么网络就会重新训练前面,会导致收敛上的困难吧?需要去调参设计吧,后面作者使用退火算法来解决。
可以看到改进后可以找到正确的解了。

并且,根据下图,还可以发现一个规律。训练刚开始的时候,除了0时刻,其余时刻权重全是0。也就是网络先学习初始条件附近的。随着训练的进行,权重会逐渐的释放,并且终会收敛到1。

这就可以为训练PINN提供收敛标准,当所有权重趋于1时,PINN训练完成。实际中可以人为选取一个小于1的阈值来停止训练。停止条件如下。

关于因果参数的敏感性,也就是我上面的疑惑,作者做了消融。发现因果参数太小的会阻止网络有效最小化后面的时间残差,太大会导致训练困难。因为前面的时间残差要充分小才能激活后面的时间权重。所以作者使用一组递增因果参数进行训练,虽然会导致计算量的增加,但是避免了人工干预的繁琐。此外作者还提出了一个改进的MLP结构,具体的解释将在另一篇论文中,暂时还没有去看。

实验结果如下



实验结果还是很好的,有效的解决了远离初始位置训练不好的问题。
Respecting causality is all you need for training physics-informed neural networks的更多相关文章
- [Xavier] Understanding the difficulty of training deep feedforward neural networks
目录 概 主要内容 Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural netwo ...
- Xavier——Understanding the difficulty of training deep feedforward neural networks
1. 摘要 本文尝试解释为什么在深度的神经网络中随机初始化会让梯度下降表现很差,并且在此基础上来帮助设计更好的算法. 作者发现 sigmoid 函数不适合深度网络,在这种情况下,随机初始化参数会让较深 ...
- Understanding the difficulty of training deep feedforward neural networks
本文作者为:Xavier Glorot与Yoshua Bengio. 本文干了点什么呢? 第一步:探索了不同的激活函数对网络的影响(包括:sigmoid函数,双曲正切函数和softsign y = x ...
- MLHPC 2018 | Aluminum: An Asynchronous, GPU-Aware Communication Library Optimized for Large-Scale Training of Deep Neural Networks on HPC Systems
这篇文章主要介绍了一个名为Aluminum通信库,在这个库中主要针对Allreduce做了一些关于计算通信重叠以及针对延迟的优化,以加速分布式深度学习训练过程. 分布式训练的通信需求 通信何时发生 一 ...
- Aluminum: An Asynchronous, GPU-Aware Communication Library Optimized for Large-Scale Training of Deep Neural Networks on HPC Systems
本文发表在MLHPC 2018上,主要介绍了一个名为Aluminum通信库,这个库针对Allreduce做了一些关于计算通信重叠以及针对延迟的优化,以加速分布式深度学习训练过程. 分布式训练的通信需求 ...
- MLHPC 2016 | Communication Quantization for Data-parallel Training of Deep Neural Networks
本文主要研究HPC上进行数据并行训练的可行性.作者首先在HPC上实现了两种通信量化算法(1 Bit SGD以及阈值量化),然后提出了自适应量化算法以解决它们的缺点.此外,发挥出量化算法的性能,作者还自 ...
- Training Deep Neural Networks
http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html //转载于 Training Deep Neural ...
- [Converge] Training Neural Networks
CS231n Winter 2016: Lecture 5: Neural Networks Part 2 CS231n Winter 2016: Lecture 6: Neural Networks ...
- 阅读笔记 The Impact of Imbalanced Training Data for Convolutional Neural Networks [DegreeProject2015] 数据分析型
The Impact of Imbalanced Training Data for Convolutional Neural Networks Paulina Hensman and David M ...
- [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization
课程主页:http://cs231n.stanford.edu/ Introduction to neural networks -Training Neural Network ________ ...
随机推荐
- Hadoop YARN与MapReduce
YARN架构 ResourceManager 负责整体资源的管理 (Scheduler and ApplicationsManager)NodeManager 向ResourceMa ...
- thinkphp5框架使用总结
因为采用了mvc模式,所以理解上为了简便,把控制中心作为一个浏览对象去处理,其他不要去考虑只把它们当做附属物 一.路径访问方式 http://网址/index.php/模块/控制器/操作.html 其 ...
- Windows10使用VMware安装centos
系统环境: Windows 10 安装步骤: 1.下载centos http://mirrors.aliyun.com/centos/ 2.使用VMware安装centos 3.配置网络 $ cd / ...
- vue父子组件传值的方式
给子组件传值: this.$refs.child.xx(query); 调用父组件的方法:this.$parent.xx();
- Lnmp切换PHP版本
进入lnmp的安装目录 cd /root/lnmp1.8 执行 ./install.sh mphp 然后选择你要变更的版本
- redis之单线程
一.redis为何是单线程 官方给出的答案: 因为 Redis 是基于内存的操作,CPU 不会成为 Redis 的瓶颈,而最有可能是机器内存的大小或者网络带宽.既然单线程容易实现,而且 CPU 不会成 ...
- log4net两分钟三步急速搭建日志框架教程(注意System.Configuration.ConfigurationErrorsException: 配置系统未能初始化 ---> System.Configuration.ConfigurationErrorsException: )
最近接了个活,winform的帮人做几个页面,这里就以winform项目为例了,之前log4net都是项目中继承好了的,这次自己研究从0到1搭建了一个,发现其实也蛮简单的,主要分为以下三步和一个注意事 ...
- MYSQL 5.7及以上【ONLY_FULL_GROUP_BY】报错和解决方法
由于同事安装的Docker,就在docker上举例子吧,和非docker的操作方式都一样,只是路径上和重启方式可能不同 1,进入容器 docker exec -it xxxx(你的mysql容器名称) ...
- docker容器部署flask单页面应用
本地安装docker,拉取centos镜像. docker pull centos:7 本地文件结构: /usr/local/var/tmp/docker_demo .app ---requireme ...
- react 二级路由嵌套
嵌套路由之后,静态文静路径错误, 更改webpack 打包output 输出根目录,publicPath:'/',二级路由刷新之后白屏,在首页模板文件中路径前加 /,