未发表

本篇工作时关于连续时间的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的更多相关文章

  1. [Xavier] Understanding the difficulty of training deep feedforward neural networks

    目录 概 主要内容 Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural netwo ...

  2. Xavier——Understanding the difficulty of training deep feedforward neural networks

    1. 摘要 本文尝试解释为什么在深度的神经网络中随机初始化会让梯度下降表现很差,并且在此基础上来帮助设计更好的算法. 作者发现 sigmoid 函数不适合深度网络,在这种情况下,随机初始化参数会让较深 ...

  3. Understanding the difficulty of training deep feedforward neural networks

    本文作者为:Xavier Glorot与Yoshua Bengio. 本文干了点什么呢? 第一步:探索了不同的激活函数对网络的影响(包括:sigmoid函数,双曲正切函数和softsign y = x ...

  4. MLHPC 2018 | Aluminum: An Asynchronous, GPU-Aware Communication Library Optimized for Large-Scale Training of Deep Neural Networks on HPC Systems

    这篇文章主要介绍了一个名为Aluminum通信库,在这个库中主要针对Allreduce做了一些关于计算通信重叠以及针对延迟的优化,以加速分布式深度学习训练过程. 分布式训练的通信需求 通信何时发生 一 ...

  5. Aluminum: An Asynchronous, GPU-Aware Communication Library Optimized for Large-Scale Training of Deep Neural Networks on HPC Systems

    本文发表在MLHPC 2018上,主要介绍了一个名为Aluminum通信库,这个库针对Allreduce做了一些关于计算通信重叠以及针对延迟的优化,以加速分布式深度学习训练过程. 分布式训练的通信需求 ...

  6. MLHPC 2016 | Communication Quantization for Data-parallel Training of Deep Neural Networks

    本文主要研究HPC上进行数据并行训练的可行性.作者首先在HPC上实现了两种通信量化算法(1 Bit SGD以及阈值量化),然后提出了自适应量化算法以解决它们的缺点.此外,发挥出量化算法的性能,作者还自 ...

  7. Training Deep Neural Networks

    http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html  //转载于 Training Deep Neural ...

  8. [Converge] Training Neural Networks

    CS231n Winter 2016: Lecture 5: Neural Networks Part 2 CS231n Winter 2016: Lecture 6: Neural Networks ...

  9. 阅读笔记 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 ...

  10. [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 ________ ...

随机推荐

  1. Anaconda 使用教程

    Anaconda介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 因为包含了大量的科学包,Anaconda 的下载文件比较大( ...

  2. 如何设置VBA代码的密码?如何取消VBA代码的密码?

    经常有网友问,用Access把软件开发好了,怎么样设置VBA代码的密码?以保护自己的代码不被同事修改.这里简单整理了一下.设置VBA代码的密码及取消VBA代码的密码步骤如下:1.打开任意一个窗体,进入 ...

  3. 负载均衡做集群时关于的session不均衡的解决方案

    从用户端来解释,就是当一个用户第一次访问被负载均衡代理到后端服务器A并登录后,服务器A上保留了用户的登录信息:当用户再次发送请求时, 根据负载均衡策略可能被代理到后端不同的服务器,例如服务器B,由于这 ...

  4. 将现有vue项目基于electron打包成桌面应用程序 如何隐藏electron窗体的菜单栏

    一.前言 项目本来打算采用B/S架构去做的,浏览器网址方式打开还是让用户不方便: 二.使用electron集成桌面应用 本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目 ...

  5. chm文档生成->Sandcastle使用帮助

    1.介绍 Sandcastle是微软提供的开源的,用于生成.net文档帮助的工具. 源代码路径:https://github.com/EWSoftware/SHFB,进去后能找到Relase版本的路径 ...

  6. 在stm32中使用printf

    记录使用printf的方法 1.配置GPIO GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ...

  7. day01-java流程

    Scanner对象 基本语法: Scanner s = new Scanner(System.in); next()方法 nextLine()方法 顺序结构 选择结构 if单选结构 语法: if(布尔 ...

  8. Oracle RAC单节点启停

    由于单节点操作系统需要重启维护,版本为12C 确认集群的db_unique_name,本初的db_unique_name为orcl SQL> show parameter name SQL> ...

  9. datax缺少clickhouse reader插件

    背景:想要把click house的数据源同步到clickhouse,发现Datax没有clickhousereader组件. 1.把clickhousewriter/libs下的所有jar包复制到r ...

  10. 真的,Web安全入门看这个就够了!

    一.HTTP协议 1.HTTP 什么是HTTP? 超文本传输协议,HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd.nginx等,其客户端的实现程序主要是Web浏览器,例如 ...