Efficient training of physics-informed neural networks via importance sampling


因为看着作者是英伟达的,便看了一下。总体感觉没有什么新意,改进幅度也很小,但是理论推导可以看一下。可以借鉴一下。
本文通过重要性采样对PINN进行高效计算,本文提出的方法很简单,也很直观,但效果提升有限。大概说一下,就是利用一个与损失函数成比例的分布,进行采样,再利用这个子集更新网络参数。最后为了减少计算量,提出了一个分段常数近似(利用最近邻算法)。
一开始,作者提到,目前在PINN中,常使用的mini-SGD,其中由于小批量的选取服从均匀分布,所以会导致对解的收敛产生阻碍影响,因为,有可能很少或者几乎没有梯度信息被获取,这将会阻碍收敛。因此,作者认为通过重要性采样,选取一组合适的配置点可以加速收敛。目前,根据图像和文本领域的发现,如果在每次训练中,根据与损失的梯度的二范数成比例的建议分布进行采样,可以将训练收敛速度最大化。但是,这样直接计算这样的建议分布是计算昂贵的,因此该作者使用了与损失函数本身成比例的近似建议分布来提高计算效率。这在图像分类和语言建模中已经验证了。最后,为了减少计算量,提出分段常数近似(PWC)。由于所提出方法十分简单,所以可以直接应用到目前的PINN模型中。
有一个逐步的推导:
这是目前的优化目标函数,最小化所有配置点的损失

作者希望将其改进成下式,因为有理论证明,下式可以假如收敛。f是均匀采样,q是我们所需要的找的采样分布。在这里我们只考虑离散分布。

根据理论,这个分布可以找到,并且这个分布于损失函数梯度的二范数相关(某点的损失与所有点的损失之和的比值,考虑离散分布)。

然后,训练时,我们利用q,从N个配置点中,选取m个,作为重要性的代表,用来更新网络。作者认为这样比均匀采样更具代表性,更有利于PINN的收敛。
最后我们的更新方法为下式(η应该为学习率):

理论证明(上面的推导),可以通过重要性采样加速PINN的训练,其中训练样本是从与损失函数相对于模型参数的梯度的2范数成比例的分布中获得的。但是,直接计算这个分布是昂贵。再次根据理论(Katharopoulos and Fleuret),我们可以使用损失值而不是梯度来作为重要性指标。我们最后获得的分布是:

不过,每次迭代中对计算这种分布也是昂贵的,因此作者提出了一个分段常数近似对于损失函数。即,只在点子集上评估,然后使用最近邻搜索,对于每一个配置点j,确定最近的种子s,并且将配置点j的损失值设定成种子s处的损失值。下图为一个示意图,其中橙色为种子s。

伪代码如下:

实验部分,作者做了很多消融实验。但具体的性能提升是有限的。也没有与其他PINN的变体相比。


这篇论文虽然简单,还很一般,但是我还是有收获的。最大的一点就是,本文有少量的理论推导,以前我是读不动的,这次读起来感觉还可以。因此以后可以逐渐的进步了。
Efficient training of physics-informed neural networks via importance sampling的更多相关文章
- 阅读笔记 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 ... 
- 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》
		论文信息 论文标题:Self-supervised Graph Neural Networks without explicit negative sampling论文作者:Zekarias T. K ... 
- Must Know Tips/Tricks in Deep Neural Networks
		Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei) Deep Neural Networks, especially C ... 
- Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)
		http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html Deep Neural Networks, especially Conv ... 
- 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记
		本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ... 
- Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
		1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ... 
- [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)
		论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ... 
- [Converge] Training Neural Networks
		CS231n Winter 2016: Lecture 5: Neural Networks Part 2 CS231n Winter 2016: Lecture 6: Neural Networks ... 
- Training (deep) Neural Networks Part: 1
		Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ... 
- 【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
		MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ... 
随机推荐
- Django中多数据库的配置,实现分库分表,主从复制,读写分离
			在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接. 1. 修改项目的 settings 配置 在 settings. ... 
- 2023 年 CCF 春季测试赛模拟赛 - 2
			T1 分治,\(a^b + \dots + 1 = (a^{\lfloor\frac{b}{2}\rfloor} + \dots + 1) \times (a^{\lfloor\frac{b}{2}\ ... 
- MySQL Workbench部分出错及可能解决方案
			出错一:8.0.23.0版本,在workbench内建立表eg1,select * from eg1无返回结果,无法向表内导入数据,在如下图的下一步,workbench会直接闪退 可行的办法:(不建议 ... 
- 微信小程序中实现自定义省市区选择
			背景: 1.小程序官方提供的省市区组件的数据与原有的数据对应不上,官方的数据太旧 2.小程序重构以后没有在使用vant等框架 实现过程: 1.安装依赖 a.微信小程序使用npm包配置: 1.初始化pa ... 
- Iperf参数详解
			IperfIperf是一个网络性能测试工具,可以测试TCP和UDP最大带宽,具有多种参数和UDP特性,可以根据需要调整,报告带宽,延迟,数据包丢失 通用参数-b(bandwidth):指定UDP模式使 ... 
- Jest - Configuring Jest
			Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It works with projects ... 
- 090_Java
			在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. ● 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载 ... 
- 2023 2 4 c++NOIP机试 小豫豫在郑州 type
			1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int j(string str){ 5 ... 
- jumpserver运行源码
			本文运行流程介绍来自jumpserver版本号:v2.23.2 入口文件 run_server.py run_server中通过subprocess.call,用python3运行了同级目录下jms, ... 
- WebSocket 基本使用
			1. 引入 WebSocket 包 2. 2.最后测试 WebSocket 谷歌浏览器 F12 ,在 Console 控制台 输入以下测试链接,然后回车测试. ws = new WebSocket() ... 
