1.简介
机器学习,正是风口上的猪,各个行业、许多人都想骑上这个风口的猪以期待创造出更多的价值。神经网络是机器学习的一种方法,因其强大的非线性功能在解决非线性问题领域是一个强有力手段。参数反演往往因其输入-输出之间的关系很复杂甚至没有明确的显示表达式,而神经网络进行参数识别可避开繁琐的公式,通过学习数据特征来表征输入-输出关系。
2.问题描述
参数识别本身是很复杂的反问题,需要大量的时间,但为了演示这一过程,本文用一个简单的带有未知参数的表达式来阐述这一过程(微分方程含待求解的未知参数将在另一篇文章中分享)。
其中a,b,c为待求解的未知参数,假设其真实值分别为3,4,0.5。测试数据使用真实值在自变量范围里等距取样10组数据。
3.软件环境
Anaconda3+pycharm+pytorch
为什么选择pycharm:Anaconda3+pytorch组合后,发现深度学习库的代码自动补全功能无法使用,这限制了搭建网络的效率,而pycharm正好可以自动补全深度学习库代码,很方便,就选它了!
4.结果展示
图1 神经网络与真实值对比
图2反演参数
图1为真实值与反演值对比图,可知两者吻合很一致。图2反演参数a,b,c分别为2.98,3.96和0.54,与真实值的最大误差为8%
5.操作步骤
本案例中并没包含微分方程,因此网络搭建就会简单很多,下面将会展示如何来进行参数识别这一过程。本篇的目的不是为了收费,只是记录一下。常规算法如最小二乘法也能解决参数识别问题,用神经网络有点杀鸡焉用牛刀的感觉.