动态人工神经网络

倾然丶 夕夏残阳落幕 提交于 2020-02-01 20:35:46

对于非线性系统如果使用传统的线性方法进行建模,会带来很大的误差。使用非线性建模方法,特别是使用动态人工神经网络,可以比较精确的获得对象的输入输出模型。

在秋季学期人工神经网络课程的第三次作业中,为了增加一道实际控制对象建模的作业题,对一个废旧的热吹风枪进行改造,使得它加热电压可以改变,并增加了测量出风温度和风速的传感器。可以同时采集到工作电压与出口温度的数据。

image

热风枪出口温度与工作电压之间呈现非线性关系

由于热风枪的功率与施加的电压呈现二次关系,这也就直接影响到加热电压与出口温度之间呈现非线性关系。

通过对每个施加电压测量对应稳态时出风口温度,绘制出它们之间的工作曲线。如下图所示,显示了输入电压与输出温度之间的非线性关系。

image

热风枪出口温度与加热工作电压之间的关系

热风枪的出口温度与环境温度、风速都有直接的关系。上述曲线是在保持环境温度和风速恒定的情况下获得的。

由于热风枪内的加热元件有一定的热惯性,再加上热扩散到空气中有延迟,所以出口温度与工作电压之间是一个动态关系。

下图显示了在施加55V电压后,出口温度呈现的动态响应曲线。

image

热风枪的在施加单位阶跃电压后的动态过程

如果热风枪的输入电压与出口温度之间是线性关系,则可以通过第一原理建立响应的微分方程,获得系统的动态模型。也可以通过输入输出之间数据对系统进行动态建模。

通过系统输入输出数据建立线性模型,可以通过系统的单位阶跃响应、扫频获得的频率响应曲线、或者输入随机信号、Chirp信号等宽带信号来对系统进行模型辨识。

下面是一组实际测量得到的热风枪在不同施加信号下的输出相应曲线。

image

正弦扫频电压激励下温度输出曲线

image

随机输入信号对应的系统响应曲线

image

Chirp信号对应的系统响应曲线

image

方波开关信号对应系统输出响应

如果希望建立热风枪输入输出之间的线性动态模型,可以借助于MATLAB中系统辨识工具。

将测量Chirp信号数据送入MATLAB,使用系统辨识工具箱建立热风枪的2阶、3阶模型。可以看到3阶的模型精度可以达到70%左右,比2阶对应的44%要高很多。

image

利用Chirp测试数据建立线性动态2阶、3阶模型

由于系统是非线性的,所以使用上述模型应用到方波输入信号,则模型的精度立马下降到50%以下。

image

对输入方波信号进行验证,误差很大

可以通过对输入数据进行一定的预处理,来适当提高建模的精度。比如将数据中的平均值去掉,这样可以获得系统在工作点附近上下波动的数据。由于改变了数据的原点,从而将系统非线性影响减小。

使用方波驱动采样数据,首先将输入,输出信号的均减除,使用三阶系统建模可以获得建模精度为96.93%。

image

使用去掉均值后的数据进行建模

使用上述模型对于Chirp信号激励系统采集实际数据进行验证,此时同样去除数据中的均值,可以看到验证的精度可以达到73%。虽然提高了,但误差依然很大。

image

对Chirp激励信号系统相应进行验证

去除均值虽然可以提高建模精度,但在实际过程中,如果估计输出的均值依然在模型中没办法实现。

下面对比使用动态人工神经网络来对上述队形进行建模。

为了能够反映热风枪的非线性和动态特性,动态人工神经网络在传统的前馈网络的基础上增加了两部分结构。

image

MATLAB中的动态人工神经网络

第一个结构是对输入信号进行采样保持结构,这样可以对输入信号一段时间内的信号变化能够反映到网络输入中去。

第二个结构是对网络输出信号进行采样,并将采用保持的数据反馈到网络的输入层。

由于输出采样的反馈,这使得网络可以模拟对象的动态过程,同时对历史信息能够获得更大时间尺度的应用。

在下面实验中,分别设置动态神经网络的采集数据长度为50,对应2秒钟时间数据,大约等于热风机过渡时间的五分之一。神经网络中间隐层采用10个神经单元。

直接使用随机激励电压信号热风枪的数据进行训练。下图显示了训练的结果,精度非常高。

image

使用随机激励电压信号完成网络训练

使用另外一组采集的随机电压激励信号的数据进行验证,精度可以达到99%以上。

image

使用另外一组随机电压驱动下热风枪数据进行验证

下面是使用Chirp形状的激励电压信号所采集到的热风枪数据进行验证,会发现除了在开始部分有较大的误差之外,其余部分,误差都小。

image

使用Chirp激励电压信号数据进行验证

上面验证结果中,误差大的部分出现在温度过高和过低的情况下。这可能是由于在前面人工神经网络训练的数据中,由随机激励电压信号所产生的温度变化没有使得输出温度过高或者过低,因此当实际系统的温度超过训练数据所所对应的范围之外,误差明显增多了。

这一点可以从正弦激励电压所产生的数据可以验证,每当电压很大,很小的时候,误差呈现周期的增加。

image

使用正弦激励点电压数据进行验证

如果正弦激励电压频率比较高,热风枪的出口温度范围小,那么网络输出结构与实际温度误差就小。如下图所示:

image

在频率高的正弦电压激励下的数据验证结果

在前面测量数据中,有一组系统单位阶跃相应数据,热风枪在持续的电压作用下,出口温度上升超过了80度。

使用前面的人工神经网络模型进行仿真,可以看到当温度超过65度之后,网络输出就饱和了。从而造成与网络误差增加。

image

系统单位阶跃相应验证曲线

为了解决上述问题,则需要在训练网络的时候,所使用的训练数据对应的系统温度变化范围越大越好,最好能够覆盖系统实际可能输出温度的范围。

下面使用采集数据中的方波电压激励的系统响应数据,方波的改变周期是15秒,热风枪的温度输出变化最大,几乎涵盖了输出温度的全部范围。

image

使用方波电压激励数据进行网络训练

上面的训练结果反映,网络对系统的输出跟踪精度很高。

使用该网络对前面的单位阶跃响应数据进行验证,可以看到网络与系统实际输出数据吻合的精度很高。虽然训练数据中没有超过80°的数据,但网络输出依然超过了80°的数值。

image

使用前面的Chirp激励电压数据进行验证,可以看到在输出温度变化大的部分的误差消失了。

image

使用Chirp激励电压数据进行验证

下面是对随机激励电压系统响应数据进行验证,相比于前面使用随机激励电压数据训练结果,此时输出的数据中出现了较大的毛刺。也就是反应了网络在信号的高频部分精度下降很多。

image

对随机激励电压系统数据进行仿真

这个结果说明,使用方波激励电压数据训练,虽然数据中温度变化范围增加了,但由于方波信号中高频信号成分少于随机信号(即白色频谱),所以对系统在高频信号作用下的响应精度降低了。

为了结果上面的问题,可以将随机信号和方波信号激励的数据同时训练网络。这样可以两方面获得均衡了。

image

当然,上面所建立的模型还是在环境温度和输出风口速度恒定的情况下的模型,当环境温度改变,或者热风枪出口风速改变,则直接会影响模型的精度。因此,下面需要采集到热风在不同的环境温度、不同的出口风速下的温度变化数据,进而完成更加准确的网络模型建立。

但这就直接带来了新的问题,由于增加了两个维度(温度、风速)的数据,这就比起单一的电压输入所对应的数据空间大多了。因此完整的获得这些数据不仅给采集带来了麻烦,同时也对训练更加复杂的模型增加了困难。

image

^插图 | 图片来自朋友圈^

解决这个问题最终还需要借助于系统的第一原理。首先将人类的知识转化成可以描述的模型规律,将输入条件之间的耦合关系尽可能解耦,独立建模,然后在利用已知模型组合起来。这样就可以减少多个条件组合所带来的样本空间组合爆炸的问题了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!