主要内容

设计时序列时间延迟神经网络

从最直接的动态网络开始,它由输入端带有抽头延迟线的前馈网络组成。这被称为聚焦时延神经网络(FTDNN)。这是一般动态网络的一部分,称为聚焦网络,其中的动态只出现在静态多层前馈网络的输入层。下图展示了一个两层的FTDNN。

该网络非常适合于时序预测。以下示例使用FTDNN预测经典时间序列。

下图是由远红外激光在混沌状态下记录的归一化强度数据。这是用于圣达菲时间序列竞赛的几组数据之一[WeGe94]。在竞争中,目标是使用时间序列的前1000点来预测接下来的100分。因为我们的目标只是简单地说明如何使用FTDNN进行预测,因此在此培训网络以执行一步预测。(您可以通过将预测送回网络的输入并继续迭代来使用所产生的网络来用于多脂预测的预测。)

第一步是加载数据,归一化它,并将其转换为时间序列(由单元格数组表示):

y = laser_dataset;Y = Y(1:600);

现在使用FTDNN网络,使用timedelaynet命令。该命令类似于feedforwardnet命令,加上抽动的延迟线矢量的附加输入(第一个输入)。对于这个例子,使用从1到8的抽头延迟线,并在隐藏层中使用10个神经元:

ftdnn_net = timedelaynet([1:8],10);ftdnn_net.trainparam.echs = 1000;ftdnn_net.dividefcn ='';

安排网络投入和培训目标。因为网络有一条抽头的延迟线,最大延迟为8,所以从预测时间序列的第9个值开始。您还需要用时间序列的8个初始值(包含在变量中)加载抽头延迟线π):

p = y(9:结束);t = y(9:结束);pi = y(1:8);ftdnn_net =火车(ftdnn_net,p,t,pi);

请注意,网络的输入与目标相同。因为网络具有一次最小延迟,所以这意味着您正在执行一步预测。

在培训期间,出现以下培训窗口。

培训停止,因为达到了最大的时期。在此窗口中,您可以通过单击显示网络的响应时间序列响应.出现下图。

现在模拟网络并确定预测误差。

yp = ftdnn_net (p,π);e = gsubtract (yp t);Rmse = sqrt(mse(e)) Rmse = 0.9740

(注意,gsubtract是一个通用的减法函数,可以对单元格数组进行操作。)这个结果比使用线性预测器得到的结果要好得多。您可以使用以下命令验证这一点,这些命令设计一个线性滤波器,具有与前面的FTDNN相同的抽头延迟线输入。

lin_net = linearlayer ([1:8]);lin_net.trainFcn =“trainlm”;[lin_net, tr] =火车(lin_net p t,π);lin_yp = lin_net (p,π);lin_e = gsubtract (lin_yp t);Lin_rmse = sqrt(mse(lin_e)

rms.对于线性预测器,错误是21.1386,但为非线性FTDNN预测器为0.9740。

FTDNN的一个很好的特性是它不需要动态反向传播来计算网络梯度。这是因为抽头延迟线只出现在网络的输入端,不包含反馈环路或可调参数。由于这个原因,你会发现这个网络比其他动态网络训练得更快。

如果你有一个动态网络的应用程序,请先尝试线性网络(linearlayer)然后ftdnn(timedelaynet).如果两个网络都不令人满意,请尝试在本主题的其余部分中讨论的更复杂的动态网络之一。

每次训练神经网络时,都会导致不同的解决方案,因为不同的初始权重和偏置值以及数据的不同分区训练,验证和测试集。结果,在同一问题上训练的不同神经网络可以为相同的输入提供不同的输出。为了确保已经发现了良好准确性的神经网络,重新恢复了几次。

如果需要更高的精度,还有其他一些技术可以改进初始解。金宝搏官方网站有关更多信息,请参见提高浅层神经网络泛化,避免过度装备

准备输入和层延迟状态

在最后一节中,您将注意到,对于动态网络,在训练或模拟网络之前需要进行大量的数据准备。这是因为网络中抽头的延迟线需要用初始条件来填充,这就要求对部分原始数据集进行移除和移动。有一个工具箱功能,便于为动态(时间序列)网络准备数据-preparets.例如,下面几行:

p = y(9:结束);t = y(9:结束);π= y (1:8);

可以替换

[p,π,人工智能,t] = preparets (ftdnn_net y, y);

preparets函数使用网络对象来确定如何用初始条件填充被选中的延迟线,以及如何移动数据以创建用于训练或模拟网络的正确输入和目标。调用的一般形式preparets

[X,X,XI,AI,T,EW,SHIFT] =预备线(网络,输入,目标,反馈,EW)

的输入参数preparets是网络对象(),向网络输入的外部(非反馈)(输入),非反馈目标(目标),反馈目标(回馈)和错误权重(电子战) (看用误差权值训练神经网络).外部信号和反馈信号之间的区别将变得更加清楚,当NARX网络描述在设计时间序列NARX反馈神经网络.对于FTDNN网络,没有反馈信号。

的返回参数preparets是网络输入和输出之间的时位(转变),用于训练和模拟的网络输入(X),初始输入(xi.),用于加载输入权值的抽头延迟线,初始层输出(人工智能)为了加载层重量的触发延迟线,培训目标(T)和错误权重(电子战).

使用预备线无需手动移位输入和目标并加载延迟线。这对于更复杂的网络特别有用。