基于Matlab平台的BP神经网络进行数据拟合

上次讨论了基于Hopfield神经网络的数字识别,BP(Back Propagation)神经网络也可以进行相关的数字识别如手写数字识别等,由于BP神经网络的特性,该网络需要一定的样本进行对网络进行训练、测试以及校验。本次不再赘述数字识别,而是将目光集中于基于BP神经网络的数据拟合。

本次所采用的神经网络为BP神经网络,是一个误差反向传播训练(Error Back Propagation Training)的多层前馈网络,主要包含输入层、隐含层和输出层。数据由输入层输入,经过标准化处理后,传到第二层即隐含层,隐含层进行输入数据的权值计算、转换,然后传输到输出层,输出层将给出神经网络的预测值。 由于人工神经网络不需要事先给定输入量与输出量之间的映射关系,BP网络需要通过范例进行学习。因此,给定一个包含了输入量样本以及已知的正确输出量样本是必须的。利用给定的示例,BP神经网络可以得知什么是所期望达到的行为并且BP算法也能支持网络进行调整来达到预期。

BP网络包含正向计算和反向计算两个过程,其学习过程是通过循环步骤来实现的。当接收到范例时,该网络会先进行正向计算过程,随机输出一些数据。这个输出的结果将会与已知的正确样本进行比较,然后一个含有其均方误差的信号将会通过建立的神经网络进行反向传递。隐含层接收到信号后,会“分摊”给各个神经单元,每个单元的权值因此将根据接收到的误差进行相应的调整。这个过程将会不断循环,直到误差达到规定的阈值或完成了规定的学习次数而停止。此时该神经网络被认为已经学习成功,完成了训练过程。BP神经网络仿真虽然无法达到最理想的功能,但是其结果已经接近了完美。

在BP算法中采用的激活函数是S型(Sigmoid)函数,该函数应用于隐含层的输出中。S函数有效地将非线性变化引入到了神经网络中,使得每一层权值变化呈现非线性趋势而不是直接承接上一层的线性变化输出结果。此外,S型函数具有将小信号放大、大信号缩小的特征,可以保证输出结果在(0,1)之间,如下图所示。然而在输出层中,需要直接保障输出端能接收到输出层输出的任何值,故采用线性函数。该特征也将在MATLAB生成网络结构视图中体现。

图1. Sigmoid函数曲线示意图

现在开始使用MATLAB中的函数feedforwardnet创建BP神经网络结构。如图2所示,绿色图标代表的输入端(Input)和输出端(Output)各为1个,蓝色图标代表着隐含层和输出层。其中20代表着隐含层神经元数为20,1指代输出层只有一个神经元。代表隐含层的方框中其中一个含有S曲线的图标指激活函数为S函数,输出层中的直线代表着输出层使用的线性函数。此外,w指权值(weight,b为偏(bias)。

图2. 创建BP网络视图

本次神经网络的训练方法采用默认的Levenberg-Marquardt方法,误差指标为均方差(MSE),设置的训练次数为1000次,期望达到的误差目标为10-10。训练结果完成的示意图如图3所示。在进展(Progress)项中,Epoch为训练次数,绿色指标显示1000 iterations意为已经完成了设置的1000次循环。性能指(Performance)为均方差中的最大值,蓝色精度条显示为当前均方差,当该值小于设定的指标时,则停止训练。和性能指一样,当梯度值(Gradient)小于目标值时,也会停止训练。泛化能力检查(Validation Checks)在训练中始终为0,这个是指在训练过程中没有出现过误差不降反升的情况,如果超过6次误差不降反升,为防止出现过度拟合的情况,训练将会强行停止。

训练过程中生成的训练结果可以绘出如回归线图、性能指图等来体现该次训练的特征,以及为输出的拟合结果提供判断可靠性的有力佐证。当回归率R越接近于1时,则证明数据拟合效果越好。

图3. 训练结果信息图

本次数据拟合的结果如图4所示,采用的样本数据为MATLAB自带的数据库(simplefit_dataset),可以看出拟合曲线与样本值的趋势完美重合。不同于Hopfield神经网络输出结果的不稳定性,BP神经网络每次训练的迭代过程中产生的误差以及权值等会变化但是输出结果总是可靠的。除了使用MATLAB自带的数据库进行数据拟合测试外,也可以自己创建样本矢量,进行对多项式、正余弦函数以及其他函数映射等的数据拟合分析。

图4. 数据拟合结果

最后,有机器学习相关需求,欢迎通过微信公众号联系我们。

微信公众号:320科技工作室。

线性拟合的原理、matlab使用和声发射b值求解

在声发射中可能有这么几个应用场景。

1、在做加载试验的时候,获得一组声发射事件数随载荷的变化,后期当我们只测得声发射信号事件数的时候,能否评估当前的载荷是多少,或者推断当前试验所处的状态?

2、对一个材料做疲劳试验的时候,随着疲劳的加深,声发射事件率也逐渐增加,当我们采集完数据之后能否通过声发射事件率判断材料当前所处的疲劳状态?

3、一个材料可能有多个模态的信号源,每个信号源产生的信号可能有明显的区别,如下图,其中一类数据点随着信号幅度的增加能量快速的增加,另一类信号幅度增加的同时能量增加得就没那么快了。能否通过信号的幅度和能量推测信号产生的模式呢?

以上分析,就可以使用本节介绍的数据拟合功能了。

数据拟合又称曲线拟合,俗称拉曲线,是一种把现有数据透过数学方法来代入一条数式的表示方式。科学和工程问题可以通过诸如采样、实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密集的离散方程与已知数据相吻合,这过程就叫做拟合(fitting)。

其实数据拟合就是通过一系列的离散点找出一条曲线比如Y=a*X+c;后期当我们测到一个X值的时候,就可以推测对应的Y值。(曲线可能有不同类型,数据也可以是三维的甚至更多维度的,本处主要以二维为例)。

二、数据拟合的基本算法:最小二乘法

2.1、引言

我们以前做实验,为了提高数据的准确性,经常用的一个方法叫做多次测量取平均值。比如要测量一个东西的长度的时候,我们可能会测量7次,然后在7次的结果里去掉最大和最小值,剩下的数据取平均值。

假设测得的数据如下|:

我们先会将序号2和7的数据排除,然后将其他的数据求平均值。

xr=(10.2+9.8+10+9.8+9.9)/5=9.94

利用matlab将其绘制出来,得到如下图形

2.2、最小二乘法

我们假设我们要测量的东西的实际长度是X,我们将其画在上图中。

我们可以得到每个测量点和实际长度之间的距离,也可以理解为测量值和真实值之间的误差。因为取绝对值计算起来麻烦,所以用平方来代替误差,5次测量的总的误差可以表示为:

我们假设虽然我们每次测量都会有误差,但是离真实值越近我们得到的可能会越大,比如我们可能会测量出结果是9.9,9.8,9.7,但是我们正常情况下是不会测量出结果是1的情况的。换言之,当Y值是真实值的时候,以上公式计算的结果是最小的。

以上公式是一个一元二次方程,且开口向上,根据微积分的原理我们可以知道当其导数是0的时候,公式取得最小的值。

对其求导:

进而得出

可见对于这个案例,最小二乘法的结果就是算术平均值。

2.3、一次方程

以上是最简单的方程,但是已经说明了最小二乘法的原理。

我们假设声发射断铅实验中信号的幅度和断铅距离传感器的距离做一个案例,假设数据如下:

绘制其曲线如下:

可以看出线性关系变成了f(x)=a*x+b;(上一个案例中是f(x)=a*x)

这个时候每个点和实际点的误差是f(xi)-yi,最小误差和可以表示为:

函数有两个参数a,b,分别对ab求导,两个导数都为0的时候对应的是误差最小的f(x0);

以上是二元一次方程组,解方程即可得到两个参数ab,根据ab即可以画出拟合曲线。

2.4、二次方程

当我们的拟合曲线是二次方程的时候,f(x)=a*x^2+b*x+c。

每个点距离真实点的距离是f(xi)-yi。

所有的的误差和为

根据微积分原理,分别对abc求导,可以得到3元一次方程组,方程组都为0时候得到的值是最小值,以下是a=1,b=0.3,c=2时候的数据和拟合曲线。

2.5、指数等其他方程

除了以上方程还可以用其他方程取拟合数据,比如指数方程f(x)=a*e^b,计算的方式也是如上,分别对未知参数ab求导,导数为0时候误差和最小。然后根据导数方程组求二元方程。

也可以根据实际写一个自定义的方程,比如f(x)=a*exp(b*x)+c*x^2+d*sin(e*x);这个就是包含了指数、次方、三角波的拟合函数。

三、matlab图表中自带的拟合功能介绍

3.1、使用代码生成数据,绘图结果如下所示

3.2、图形界面选择“工具”->“基本拟合”,弹出设置对话框。

3.3、设置模块分为几个模块。分别是选择数据、选择拟合曲线样式、显示方程、绘制残差图和更多。

以下分别介绍

1、选择数据:我们的数据是两个数据,分别是y1和y2。这个数据可以由聚类分析等方法区分开。

2、选择拟合曲线样式:

  • 如果选择样条插值或者保形插值,会将每个点连接。
  • 如果选择直线,matlab会用一条直线拟合数据。
  • 如果选择二次或者多次方程,会用二次方程式进行拟合

3、勾选显示方程,界面上会出现拟合曲线的方程式

4、勾选绘制残差,会在图形上显示每点和拟合曲线的差

5、点击更多按钮,右侧将出现具体的数值结果

如果只需要简单的分析或者大概寻找规律,基本就以上功能可以满足。

四、matlab中cftool工具箱的使用

在声发射数据中,声发射数据也可能不是标准的次方规律,可能是指数增长,可能是周期变化,也可能是多种变化的组合,那么,下面将介绍这种情况下的拟合。

本节继续介绍matlab中非常实用的数据拟合工具箱cftool。简单实用而强大的函数拟合工具箱,提供丰富的拟合算法,能实现多种线性、非线性的函数拟合。

相较于图表自带的拟合功能,cftool提供了更多的拟合函数选择、甚至可以自己编辑拟合的函数,可以应对更复杂的声发射信号分析。

4.1、生成几个测试用的数据

4.2、打开cftool工具箱

在命令行输入“cftool”,或者在菜单中点击“curve fitting”菜单,弹出工具箱操作界面。

4.3、选择数据源

首先给拟合一个命名“fity1”,Xdata选择x,Ydata选择y1;我们主要操作二维的,所以Zdata选择空,如果要做三维拟合可以选择一个Z数据,weights也选择空,暂时每个点的权重都是一样的,我们后面再介绍不同权重的点的拟合。

4.4、拟合数据

工具箱默认的是线性拟合,所以此时图中出现了数据点和拟合的曲线,如果没有自动出现拟合结果,可以手动点击界面上的‘FIT’按钮进行数据拟合。

在拟合曲线的左侧是拟合的结果,分别是拟合模型:线性y=p1*x+p2;拟合曲线的参数:p1p2的值;后面的拟合曲线对数据的解释能力,也就是拟合的准确性评估:

其中R-square越接近1表示拟合越完美。

4.5、选择其他拟合函数

点击拟合函数下拉框,会出现如下拟合函数,可以选择一个,之后会出现拟合的函数的示例方程,如果选择了自动拟合,就会即时出现拟合曲线和拟合结果。

4.6、拟合比较

我们选择y2作为数据,y2是2次方数据加随机数形成,选择线性拟合结果如下1,选择二次函数拟合结果如下2;可以通过拟合结果确定选择拟合函数的适用性。

4.7、其他拟合曲线

同理y3的最佳拟合函数是函数或者,其求出的值也和我们生成数据的值比较接近。

y4的最佳拟合函数是指数函数,其求出的值也和我们生成数据的值比较接近

4.8、自定义函数拟合

y5的数据有有一个线性和正弦信号叠加,所以我们用自定义函数。通过观察数据,可以写出拟合函数是y5=a*sin(b*x)+c*x+d,写入输入框中。采用默认的参数,数据拟合可能不准确,再次观察数据,可以获得正弦周期性变化的周期大概范围,点击fitopetion,给参数b一个范围,获得拟合的结果如下所示。

通过以上的数据就可获得数据的一个变化近似函数,将声发射的过程进行量化。

五、拟合的优化:分段拟合与局部加权拟合

上面介绍的主要都是基于基本的最小二乘法的拟合操作,本节是响应的优化。

5.1分段拟合

在有些实验中,实验的过程是可以按照时间段区分的。比如在负荷加载中,有加压——恒压——加压——恒压——卸压的过程,在数据分析中,可以分析一次加恒压过程中声发射的规律。如下,随着加压,声发射事件快速增加。恒压阶段增速减慢后基本保持稳定。

在数据拟合的时候,可能没有非常合适的函数能够表述上面的这条曲线,那么就可以使用分段拟合的方法

分段拟合就是将数据分成多个连续的区间段,对每个区间段进行拟合。比如下面这个图,虽然也可以拟合成一条曲线,但是拟合的损失值会比分段拟合大。另外在实验室条件下的实验很多都是加有外部作用力的,拐点会比较明显,所以根据实验的过程进行分段拟合是个不错的选择。

最后可以拟合出如下的方程组

f(x)=x,when(x<10)

f(x)=3*x+5,when(x>10)

5.2局部加权拟合

局部加权回归使一种非参数方法(Non-parametric)。在每次预测新样本时会重新训练临近的数据得到新参数值

局部加权回归优点:可以有效避免欠拟合,减小了较远数据的干扰,仅与较近的数据有关。缺点是计算量比较大。

如上图,我们要预测x点对应的y值,根据经验可以知道,距离x比较近的点对x的预测影响比较大,而较远的点影响比较小,如上虚线内的影响较大而虚线外的影响比较小。所以在对x进行预测的时候,就根据x的范围重新拟合一曲线,如上斜线,将x带入斜线方程求得对应的y值。

5.3在cftool工具中加权回归的功能

也有加权回归的功能,通常加权值和自变量取同样的数据。

我们在上节的y1数据上,将y1y10y20y30都改成偏离很大的值,如下图中图上的4个黑点。

我们将权重也选为x的时候,拟合相似度明显提升。

六、数据拟合在声发射数据分析中的实际使用

6.1《输气管道阀门内漏声发射多参数检测实验研究》

针对输气管道阀门内漏喷流噪声声场特征复杂特点,应用声发射检测系统进行阀门内漏过程 的检测实验研究,提取阀门不同内漏率下声发射信号波形频谱特征和时域、频率参数特征应用最小二乘法拟合函数曲线,获得声发射信号特征参数与内漏率对应关系。实验结果表明,声发射信号特征参数(均方根、标准差、均值、频域峰值)与内漏率之间都存在明显对应关系。

声发射信号特征参数值(时域均方根RMS、标准差、均值和频域峰值)随阀门内漏率的增大呈现上升趋势,并且如上图中显示给出了相关的函数,因此声发射信号多参数分析可以有效进行阀门内漏率的量化评价,以提高内漏识别的可靠性和准确度。

6.2《基于声发射能量判定指标岩石破坏时刻预测研究》

利用岩石声发射技术对岩石试件进行单轴全过程加载实验,岩石声发射时间一能量参数按 照时间序列分别划分为五段,统计每个时段内不同能量等级事件的个数,每个时段进行拟合如下,不同时期的斜率不同。

上图也可以画成如下所示:

获得模型后通过计算斜率预测岩石当前状态。

6.3《基于声发射技术的碳/环氧复合材料拉伸损伤模型》

为了建立一种更适合复合材料的损伤模型,本文基于声发射技术对复合材料的损伤模型进行了探讨。结果表明:利用声发射事件累计数拟合出的数学模型效果非常好,与实验数据比较吻合,可以用于复合材料的损伤过程分析,对复合材料的损伤规律研究具有一定的参考作用。

测试选择拟合函数的原型

通过以上图形看出,当拟合曲线的斜率再次接近0的时候接近完全破坏。

七、声发射B值的理解

声发射b值是声发射实验中非常重要的一个参数,其物理意义为岩石破裂过程中声发射小事件数与大事件数的比值,可以反映岩石的破裂过程。b值的变化是岩石破裂的重要前兆之一。

声发射B值就是采用数据拟合的方法对声发射特征参数的分析,具体求解过程可以联系获取。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。