未发表

本篇工作时关于连续时间的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结构,具体的解释将在另一篇论文中,暂时还没有去看。

实验结果如下

实验结果还是很好的,有效的解决了远离初始位置训练不好的问题。

最新文章

  1. Using dijit/Destroyable to build safe Components
  2. How to Programmatically Switch between the HubTile Visual States
  3. HTML5自学笔记[ 2 ]新增表单控件和表单属性
  4. [Flex] ButtonBar系列——flex3 ButtonBar圆角菜单的运用
  5. HTTP权威指南一
  6. EasyUI datagrid组件绑定有转义字符的json数据出错
  7. POJ 2081
  8. TopFreeTheme精选免费模板【20130619】
  9. VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer
  10. Java - 推断元音辅音
  11. Linux下安装oracle11g
  12. css3的一些属性
  13. 基于visual Studio2013解决C语言竞赛题之0611素数排序
  14. C#压缩字符串
  15. github 发布项目
  16. localStorage(本地存储器)、sessionStorage(会话存储)
  17. 12.python-metaclass元类
  18. shell脚本之流程控制语句
  19. 02-创建String对象
  20. 179. Largest Number(INT, String)

热门文章

  1. plesk 关闭维护模式
  2. vue打印图片
  3. web实践学习2
  4. ionic混合开发总结之调用手机相机
  5. @NotNull,@NotBlank,@NotEmpty注解的区别
  6. 0627.selenium请求库*2
  7. .net5的安装部署条件
  8. vue3中读取本地excel文件内容
  9. 【SSO单点系列】(5):CAS4.0 之JDBC
  10. jquery随手做的一个滚动库 我称之为 idkScroll