对于一个时间序列怎么编写bp神经网络matlab程序实现预测

对于一个时间序列怎么编写bp神经网络matlab程序实现预测,第1张

BP网络训练图:

P = [1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009];%输入向量

T = [1154 2121 2597 2518 352 4634 509 558 614 700 696 712];%期望输出

Z=[2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020]

%创建两层的BP网络:

net = newff([1998 2009],[100 1],{'tansig' 'purelin'});

nettrainparamshow=50;

%每次循环50次

nettrainParamepochs = 500;

%最大循环500次

net = train(net,P,T);

%对网络进行反复训练

只给出了一部分程序,其余的QQ传给你,留你的QQ。

结果:

Y =

Columns 1 through 7

1154067 2120911 2597029 2517979 3520027 4634023 5089910

Columns 8 through 12

5580155 6139892 6999980 6960063 7119970

预测值a =

Columns 1 through 7

7119970 7117126 7494216 7492672 7467096 7467096 7510786

Columns 8 through 11

7602729 7573316 6965151 6965151

分别是2010-2020年的预测数据。

时间序列模型,回归模型,贝叶斯网络模型,人工神经网络模型,时间序列回归模型。

1、时间序列模型:基于历史数据的趋势分析和季节性变化,通过建立时间序列模型预测未来的木材供需情况。

2、回归模型:通过分析木材供需的各种影响因素,如经济增长、建筑业需求、国际贸易等,结合历史数据建立回归模型来预测未来的供需情况。

3、贝叶斯网络模型:该模型可以考虑多个因素交互影响的情况,通过对各种变量之间的关系进行建模,预测未来的供需情况。

4、人工神经网络模型:该模型通过对大量的历史数据进行训练,构建能够模拟人类神经系统的模型,从而预测未来的木材供需情况。

5、时间序列回归模型:该模型是时间序列模型和回归模型的结合,考虑到时间序列的趋势性和季节性,同时还能考虑到各种外部因素的影响,从而更准确地预测未来的供需情况。

长短时神经网络是一种特殊的递归神经网络,所谓递归神经网络就是网络能够解决时间序列问题的预测。所谓递归神经网络就是网络中具有循环结构。递归神经网路从某种程度来说和传统的神经网络并非完全不同。可以将递归神经网络想象成有多层相同网络结构的神经网络,每一层将信息传递给下一层(以下借鉴一些十分易懂的):

上述是为了便于理解网络送展示的示意图,实际上网络结构只是上图左边的一小块。

普通的RNN没有办法解决需要长时记忆的功能。比如试图预测“I grew up in France… I speak fluent French”中最后一个词。最近信息显示下一个词可能是一门语言的名字,但是如果我们想要缩小选择范围,我们需要包含“法国”的那段上下文,从前面的信息推断后面的单词。相关信息与预测位置的间隔很大是完全有可能的。然而RNNs并没有办法解决这种问题。

LSTM作为效果比较好的递归神经网络,拥有者对长时时间序列问题很好的解决能力。

LSTM也有这样的链式结构,但其重复模块内部的机构不同。具体如下:

之下说明一下内部四个网络的具体意义。

主要分为: 单元状态 + 门限

单元状态:让信息以不变的方式向下流动,相当于一个传送带,但传送带上的东西会随着他通过每一个重复模块基于当时的输入有所增减。

门限:有能力向单元状态增加或者剔除信息的管理机构,相当于传送带上放东西或者拿走东西的那个人。在LSTM中由sigmoid函数和乘法加法来控制这个过程。

上图通过当前时间的输入和前一个时间的输出来通过sigmoid函数来使得单元状态乘以这个sigmoid函数的输出。若sigmoid函数输出0则该部分信息需要被遗忘,反之该部分信息继续在单元状态中继续传下去。

该门限功能是更新旧的单元状态。之前的遗忘门限层决定了遗忘或者添加哪些信息,由该门限层来执行实现。

最后,我们需要决定需要输出什么。这个输出将会建立在单元状态的基础上,但是个过滤版本。首先,我们运行一个sigmoid层来决定单元状态中哪些部分需要输出。然后我们将单元状态输入到tanh函数(将值转换成-1到1之间)中,然后乘以输出的sigmoid门限值,所以我们只输出了我们想要输出的那部分。

上面提到的是非常常规的LSTM网络,LSTM有许多不同的变种,下面来介绍几种。

就是使用耦合遗忘和输入门限。我们不单独决定遗忘哪些、添加哪些新信息,而是一起做出决定。在输入的时候才进行遗忘。在遗忘某些旧信息时才将新值添加到状态中。

它将遗忘和输入门限结合输入到单个“更新门限”中。同样还将单元状态和隐藏状态合并,并做出一些其他变化。所得模型比标准LSTM模型要简单,这种做法越来越流行。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12179302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存