How to Avoid Trivial Solutions in Physics-Informed Neural Networks


未发表(2021)
本文也是关注采样点的一篇工作。主要从PINN的性能与采样点数量的关系方面入手考虑。提出了一个新的惩罚项,并对采样策略提出了一点看法。
本文的工作相对比较直观,简单,效果可能并不是很好。作者也没有做其他的方程,文章也比较短,没有理论保证并且工作量也不足。
首先,作者认为,虽然自动微分帮助了PINN的想法实现,但是自动微分的使用也会带来显著的计算消耗。故而本文的关注点在于如何减少计算量。简单地说,作者希望通过减少配置点的数量来降低训练PINN所需要的时间。但是,直接的减少数量是不行的,因为在训练点减少时,PINN会收敛到不同的解。所以,作者寻找了方法试图使得减少配置点数量的同时,也不会使得PINN的性能大幅度下降(针对PINN的计算量,我也深有感触,虽然模型的框架并不复杂,但是所需要的计算量却很大,主要是训练时间会很长,因为需要在每一个配置点进行自动微分,计算物理损失)。
一个观察如下,当采样点减少时,PINN的解会从初始条件开始,退化为平凡解。平凡解也满足物理损失最小(对于齐次PDE)。

作者通过研究一维滤波器,发现了一个规律,即使对于简单的问题,解也会存在一个突然的变化,退化为平凡解(这也是一个经验性的观察)。为了避免这个情况,作者准备引入一个新的正则化项,用来稳定PINN的训练,同时还会保持预测的准确性。此外,作者还表明,规律采样会优于随机采样,在当配置点数量比较少的情况下。具体如下。
因为作者的目标是通过减少配置点的数量来降低训练时间和计算量,并且还要使得性能有保证。所以作者基于一个观察,即,当PINN预测失败的时候,NN在某些点会找到一个平凡解,并且在当某个区域开始陷入到平凡解的时候,该区域的物理损失通常会急剧增加(由前几天看的一篇论文,传播假设来解释的话,可以说是,当某个点陷入到了平凡解,它会很快的传播给附近的点,导致PINN训练失败,但遗憾的是,这两篇文章都只是经验性的观察,没有理论保障)。最后,为了避免网络学习到平凡解,作者基于上述的观察,提出了一个新的惩罚项,对物理损失的梯度进行惩罚,来避免网络陷入到平凡解。损失梯度惩罚项如下。

第二点,作者表明,目前流行的Latin Hypercube Sampling (LHS)在样本较少的时候,可能会存在覆盖不好的区域,而在那时,规则采样会优于LHS。
实验部分如下:
首先,使用68个配置点训练PINN拟合一个一维滤波方程,PINN可以找到正确的解。

然后,使用32的配置点重新进行训练,可以看到训练失败了,PINN陷入到了一个平凡解。但是,在最先开始陷入平凡解的位置,残差的梯度出现了剧烈的波动。

下图是作者添加了物理损失梯度惩罚项之后,同样是32个配置点,这次PINN训练成功了。

紧接着,作者使用了12个配置点,在配备有物理损失梯度惩罚项的情况下,同样找到了正确的解。

How to Avoid Trivial Solutions in Physics-Informed Neural Networks的更多相关文章
- 论文解读(GraphMAE)《GraphMAE: Self-Supervised Masked Graph Autoencoders》
论文信息 论文标题:GraphMAE: Self-Supervised Masked Graph Autoencoders论文作者:Zhenyu Hou, Xiao Liu, Yukuo Cen, Y ...
- 房屋布局分析《Physics Inspired Optimization on Semantic Transfer Features: An Alternative Method for Room Layout Estimation》
视觉算法在智能审核系统上的演进与实践 刘天悦 贝壳找房 / 资深工程师 https://static001.geekbang.org/con/56/pdf/1088777747/file/%E8%A7 ...
- 信用评分卡Credit Scorecards (1-7)
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 python风控评分卡建模和风控常识 https://study.163.com/course/introductio ...
- GO语言的开源库
Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- 提高神经网络的学习方式Improving the way neural networks learn
When a golf player is first learning to play golf, they usually spend most of their time developing ...
- (转) Deep Reinforcement Learning: Pong from Pixels
Andrej Karpathy blog About Hacker's guide to Neural Networks Deep Reinforcement Learning: Pong from ...
- 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015
Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...
- Go语言(golang)开源项目大全
转http://www.open-open.com/lib/view/open1396063913278.html内容目录Astronomy构建工具缓存云计算命令行选项解析器命令行工具压缩配置文件解析 ...
- [转]Go语言(golang)开源项目大全
内容目录 Astronomy 构建工具 缓存 云计算 命令行选项解析器 命令行工具 压缩 配置文件解析器 控制台用户界面 加密 数据处理 数据结构 数据库和存储 开发工具 分布式/网格计算 文档 编辑 ...
随机推荐
- cximage菜单(Mirror)
// ID_CXIMAGE_MIRROR 文件:CxImage\demo\demoDoc.cpp 菜单项:cximage->Mirror ON_COMMAND(ID_CXIMAGE_MIRROR ...
- window C盘满了/文件夹太长怎么移动
通过以下命令移动文件夹 robocopy C:\Users\test\ E:\test\ /move /e C盘满了怎么办? 文件移动到其他盘,通过软连接访问 mklink /d "C:\U ...
- 【9】java之static关键字
一. static 定义属性 static 定义的属性和非 static 定义的属性有一个最大区别:所有的非 static 属性必须产生实例化对象之后才可以访问,static 定义的属性不受此限制.也 ...
- 2373. 矩阵中的局部最大值 (Easy)
问题描述 2373. 矩阵中的局部最大值 (Easy) 给你一个大小为 n x n 的整数矩阵 grid . 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal ,并满足 ...
- php 关于 json字符串使用json_decode 转数组为空
项目中遇见一个之前没有遇见的问题,就是 转化一个json字符串为数组时 为空,解决办法是使用 htmlspecialchars_decode 处理一下json字符串 然后 再使用 json_decod ...
- (app笔记)关闭monkey进程命令
1.查询进程命令:adb shell ps | findstr "monkey" 2.杀死进程命令:adb shell kill PID(15015是进程ID,不是所有Monkey ...
- 为 windows 10 右键菜单加打开DOS窗口
创建一个批处理文件,输入以下行,保存执行即可. echo off reg add "HKCR\*\shell\ms-dos" /ve /d 打开DOS命令 /f reg add & ...
- jquery 中根据日期计算天数,以及去掉字符串中的空格
//方法 增添dayNumber天 ,dates:日期 年月日 function SubDay(dayNumber, dates) { var date= new Date(dates ); date ...
- cookie是什么?有什么用?
cookie是什么? 储存在用户本地终端上的数据,是网站为了识别用户和跟踪回话而存储在用户本地终端中的文本数据 cookie就是保存在客户端的纯文本文件,比如txt文件,所谓的客户端就是我们自己的本地 ...
- PHP_递归实现无限级分类
<?php /** * 递归方法实现无限级别分类 * @param array $list 要生成树形列表的数组[该数组中必须要有主键id 和 父级pid] * @param int $pid= ...