这篇文章介绍一种用来拟合多精度数据的神经网络。 在科学计算中,低精度的数据往往是廉价的、大量的;高精度数据则不同,他们是昂贵的、少量的,所以如何充分利用不同精度的数据来得到更加 precise 的结果便是一个需要解决的问题。这里我们利用神经网络给出了一个回答。
基本思想
想法很简单。假定 是我们有的低精度数据,其中 是输入变量, 是预测变量; 是高精度数据。 一般情况下, , 在一些paper 中,它的取值可能是3 倍,5倍或者更多。
利用神经网络与监督学习的想法,主要有以下几个步骤:
- 给定低精度数据, 我们可以训练一个低精度的神经网络, 记作 ;
- 同样,给定高精度的数据 , 我们同样得到了一个神经网络,记作 。
- 问题在于由于我们的高精度数据比较少,所以我们得到的 是不准确的。一个简单的想法便是利用低精度的数据。
给定 , 我们令 , 即 是预测得到的低精度数据。 我们将 作为输入变量, 作为标签值可以训练一个新的神经网络 , 用来将低精度的数据转化为高精度数据
将 应用在 , 我们便得到了所有输入点上的高精度值。
数值实验
我们考虑一个函数逼近的问题:
上图中 代表低频数据, 代表高频数据, 其中
数值结果如下:
第二个例子仍是函数逼近,
其结果为
第三个例子函数逼近:
结果为:
最后我们举一个解ODE的例子:
精确解为:
我们已知的数据为:
最后的结果为:
数值实验的GitHub代码链接为:
https://github.com/xdfeng7370/Multi-fidelity-neural-network-
参考文献
【1】 Xuhui Meng and George Em Karniadakis. A composite neural network that learns from multi-fidelity data: Application to function approximation and inverse pde problems. Journal of Computational Physics, 2019.
【2】 Mohammad Motamed. A multi-fidelity neural network surrogate sampling method for uncertainty quantification. 2019.