m分别使用ESN网络,ESN+RBF神经网络以及ESN+Volterra网络进行数据预测对比仿真

简介: m分别使用ESN网络,ESN+RBF神经网络以及ESN+Volterra网络进行数据预测对比仿真

1.算法描述

   ESN是Jaeger于2001年提出一种新型递归神经网络,ESN一经提出便成为学术界的热点,并被大量地应用到各种不同的领域中,包括动态模式分类、机器人控制、对象跟踪核运动目标检测、事件监测等,尤其是在时间序列预测问题上,取得了较为突出的贡献。Jaeger本人在提出这种神经网络的第二年便在国际知名期刊上发表了关于将ESN网络用于时间序列预测的文章,为后来其发展做出了巨大的贡献。另外,国内大连理工大学的韩敏等人在ESN的使用方面也做出了突出的贡献。

ESN具有以下特点:

大且稀疏生物连接,RNN被当做一个动态水库
动态水库可以由输入或/和输出的反馈激活
水库的连接权值不会被训练改变?
只有水库的输出单元的权值随训练改变,因此训练是一个线性回归任务
image.png

假设有ESN是一个可调谐的sin波生成器:

黑色箭头是指固定的输入和反馈连接
红色箭头指可训练的输出连接
灰色表示循环内连接的动态水库

    Volterra滤波器的基本结构如下所示:

image.png
image.png

   使用RBF网络,对ESN得到的W权值进行迭代跟新,我这里,使用的方法为是将RBF网络构架整合到ESN中,使得ESN的权值输出为非线性模型,从而提升性能。其基本原理如下所示:

    对于RBF神经网络的学习算法,关键问题是隐层神经元中心参数的合理确定。在已有的常用学习算法中,中心参数要么是从给定的训练集样本中按照某种方法直接选取,要么采用聚类的方法进行确定。实际应用表明,这些学习算法均有不足之处,使之应用范围受到限制。如正交优选法,其缺点是隐层神经元中心的取值是训练集样本中的数据,这在多数情况下难以反映系统的真正映射关系,且在中心点的优选过程中会出现病态现象,导致训练失败。再如Moody和Darken算法,其缺点是无法合理地确定隐层神经元的数目,所得到的中心值也未必是合理的。

   最基本的RBF神经网络的构成包括三层,分别为输入层、隐层(中间层)和输出层。其中输入层由一些源点(感知单元)组成,它们将网络与外部环境连接起来,仅起到数据信息的传递作用,对输入信息不进行任何变换;隐层神经元的核函数(或称作用函数)取为径向基函数,对输入信息到隐层空间之间进行非线性变换,通常具有较高的维数;输出层是线性的,为输入层的激活模式提供响应。

image.png

RBF神经网络的参数在此主要是指网络的中心、宽度、和调节权重。

image.png
image.png

2.仿真效果预览
matlab2022a仿真结果如下:

image.png
image.png

3.MATLAB核心程序

sequenceLength = 2100;
load data.mat
%每个变量需提取的数目
ext            = 2; 
inputSequence  = zeros(2098,2*ext);
outputSequence = zeros(2098,1) ;
for i=ext+1:2100
    outputSequence(i-ext,1)=lorenz_series(i,1);
    for j=1:ext
        inputSequence(i-ext,j)=lorenz_series(i-j,1);
    end
    Ystart=ext+1;
    Yend=2*ext;
    for k=Ystart:Yend
        neednum=k-ext;
        inputSequence(i-ext,k)=lorenz_series(i-neednum,2);
    end
end
 
%ESN
%split the data into train and test
train_fraction = 0.5 ; % use 50% in training and 50% in testing
[trainInputSequence, testInputSequence]  = split_train_test(inputSequence,train_fraction);
[trainOutputSequence,testOutputSequence] = split_train_test(outputSequence,train_fraction);
 
%generate an esn 
nInputUnits    = 4; 
nInternalUnits = 100; 
nOutputUnits   = 1; 
 
esn = generate_esn(nInputUnits,nInternalUnits,nOutputUnits, ...
                   'spectralRadius',0.9,...
                   'inputScaling',[0.1;0.1;0.1;0.1],...
                   'inputShift',[0;0;0;0],...
                   'teacherScaling',0.3,...
                   'teacherShift',-0.2,...
                   'feedbackScaling',0,...
                   'type', 'plain_esn'); 
esn.internalWeights = esn.spectralRadius * esn.internalWeights_UnitSR;
 
%train the ESN
nForgetPoints            = 100 ; % discard the first 100 points
[trainedEsn,stateMatrix] = train_esn(trainInputSequence, trainOutputSequence, esn, nForgetPoints) ; 
 
predictedTrainOutput = test_esn(trainInputSequence, trainedEsn, nForgetPoints);
predictedTestOutput  = test_esn(testInputSequence,  trainedEsn, nForgetPoints) ; 
 
nPlotPoints          = length(predictedTestOutput);  
相关文章
|
8月前
|
机器学习/深度学习 并行计算 算法
粒子群算法优化RBF神经网络的MATLAB实现
粒子群算法优化RBF神经网络的MATLAB实现
585 123
|
9月前
|
机器学习/深度学习 数据采集 传感器
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
604 0
|
8月前
|
机器学习/深度学习 算法 机器人
基于自适应RBF神经网络滑模控制的机械臂轨迹跟踪仿真(Simulink仿真实现)
基于自适应RBF神经网络滑模控制的机械臂轨迹跟踪仿真(Simulink仿真实现)
557 4
|
8月前
|
机器学习/深度学习 传感器 分布式计算
基于模糊RBF神经网络轨迹跟踪研究(Matlab代码实现)
基于模糊RBF神经网络轨迹跟踪研究(Matlab代码实现)
309 1
|
8月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
594 0
|
8月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
530 2
|
8月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
195 8
|
8月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
648 1
|
7月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
1039 0
|
8月前
|
机器学习/深度学习 传感器 算法
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
348 7

热门文章

最新文章