ESN如下所示:
本部分误差如下:
0.0435
ESN我不会介绍更多的部分。你应该知道的。让我们来看看。ESN和BP修改和解释改进和极限学习改进,并进行模拟。
首先,在原始ESN在中间,通过计算权值pseudoinverse.m这个函数进行计算的,其主要内容就是:
即:
我们的主要方法是:
将计算的权值视为bp神经网络迭代的初始值,然后以这个初始值作为迭代过程的第一值,不断训练迭代,最终获得ESN-BP然后测试输出的权值。
因此,其基本思路是通过B-1T获得初始权值,然后通过bp迭代网络,获得最终优化的值。
计算后的误差为0.0427
从以上对比可以看出,采用BP在神经网络进行权值系数的非线性更新后,其误差可以进一步降低。但提高性能有限。
这部分的原理和上面一样。不同的是,我们需要使用极限学习方法ESN更新网络中的权值。
误差为:0.1050
以下是整个算法的流程框图:
clc; clear; close all; warning off; RandStream.setDefaultStream(RandStream('mt19937ar','seed',1)); addpath 'func\data_process\' addpath 'func\Initial_ESN\' addpath 'func\train_esn\' addpath 'func\test_esn\' load data.mat %数据分割 train_fraction = 0.5; [trainInputSequence, testInputSequence] = split_train_test(inputSequence,train_fraction); [trainOutputSequence,testOutputSequence] = split_train_test(outputSequence,train_fraction); %generate an esn nInputUnits = 2; nInternalUnits = 32; nOutputUnits = 1; esn = generate_esn(nInputUnits,nInternalUnits,nOutputUnits,'spectralRadius',0.5,'inputScaling',[0.1;0.1],'inputShiftteacherScaling',[0.3],'teacherShift',[-0.2],'feedbackScaling',0,'type','plain_esn'); esn.internalWeights = esn.spectralRadius * esn.internalWeights_UnitSR; %train the ESN %discard the first 100 points nForgetPoints = 100; %这里,固定设置默认学习方法,其他注释 [trainedEsn,stateMatrix] = train_esn(trainInputSequence,trainOutputSequence,esn,nForgetPoints) ; %test the ESN nForgetPoints = 100 ; predictedTrainOutput = test_esn(trainInputSequence, trainedEsn, nForgetPoints); predictedTestOutput = test_esn(testInputSequence, trainedEsn, nForgetPoints) ; figure; plot(testOutputSequence(nForgetPoints 4:end),'b'); hold on plot(predictedTestOutput,'r'); legend(原数据,预测数据; title('ESN-ELM:测试数据预测'); 测试数据的预测结果为%: estimatedOutput = predictedTestOutput(1:end-3); correctOutput = testOutputSequence(nForgetPoints 4:end); nEstimatePoints = length(estimatedOutput) ; nForgetPoints = length(correctOutput) - nEstimatePoints ; correctVariance = 1; meanerror = sum((estimatedOutput - correctOutput).^2)/nEstimatePoints ; err =(sqrt(meanerror./correctVariance)); err
A05-22