[Predicción Lstm] Predicción lstm mejorada del algoritmo de optimización de ballenas [Matlab 105] [Modelo de predicción 3]


Red LSTM LSTM

La memoria a largo plazo, lo que llamamos LSTM, está especialmente diseñada para resolver problemas a largo plazo. Todos los RNN tienen una forma de cadena de módulos de red neuronal repetidos. En un RNN estándar, este módulo estructural repetido tiene solo una estructura muy simple, como una capa de tanh.
Inserte la descripción de la imagen aquí
Figura 3. Célula RNN

LSTM tiene la misma estructura, pero los módulos repetidos tienen una estructura diferente. A diferencia de una sola capa de red neuronal, aquí hay cuatro que interactúan de una manera muy especial
Inserte la descripción de la imagen aquí
. Figura 4. Celda LSTM

Idea central de LSTM

La clave de LSTM es el estado de la celda como un todo (la imagen verde representa una celda) y la línea horizontal que pasa a través de la celda.

El estado de la celda es similar al de una cinta transportadora. Ejecutar directamente en toda la cadena, con solo unas pocas interacciones lineales. Será fácil que la información fluya y permanezca sin cambios.
Inserte la descripción de la imagen aquí
Figura 5. Diagrama de estructura interna de la celda LSTM

Si solo hay la línea horizontal arriba, no hay forma de agregar o eliminar información. Se logra mediante una estructura denominada puertas.

La puerta puede dejar pasar información de forma selectiva, principalmente a través de una capa neural sigmoidea y una operación de multiplicación punto por punto.
Inserte la descripción de la imagen aquí
Figura 6. Nodo de información

Cada elemento de la salida de la capa sigmoidea (que es un vector) es un número real entre 0 y 1, que representa el peso (o proporción) que permite que pase la información correspondiente. Por ejemplo, 0 significa "no dejar pasar ninguna información" y 1 significa "dejar pasar toda la información".

LSTM realiza la protección y el control de la información a través de tres de estas estructuras básicas. Estas tres puertas son puerta de entrada, puerta de olvido y puerta de salida respectivamente.

Conocimiento profundo de LSTM

Puerta olvidada

El primer paso en nuestro LSTM es decidir qué información descartaremos del estado de la celda. Esta decisión se toma a través de una capa llamada puerta del olvido. La puerta leerá ht - 1 h_ {t − 1} ht − 1 y xt x_txt, y generará un valor entre 0 y 1 para cada estado de celda C t - 1 C_ {t-1} Ct El número en −1 . 1 significa "completamente reservado" y 0 significa "completamente descartado".
Inserte la descripción de la imagen aquí
Donde ht − 1 representa la salida de la celda anterior y xt representa la entrada de la celda actual. σσ representa la función sigmod.

Puerta de entrada

El siguiente paso es decidir cuánta información nueva agregar al estado de la celda. Esto requiere dos pasos: primero, una capa sigmoidea llamada "capa de puerta de entrada" determina qué información debe actualizarse, una capa tanh genera un vector, que es el contenido alternativo para actualizar, C ^ t. En el siguiente paso, combinamos estas dos partes para actualizar el estado de la celda.
Inserte la descripción de la imagen aquí
Ahora es el momento de actualizar el estado de la celda anterior, Ct − 1 se actualiza a Ct. Los pasos anteriores han determinado lo que se hará y ahora vamos a completarlo.

Multiplicamos el estado anterior por ft y descartamos la información que estamos seguros de que debemos descartar. Luego agréguelo ∗ C ~ t. Este es el nuevo valor candidato, que cambia según el grado en que decidamos actualizar cada estado.

Puerta de salida

En última instancia, necesitamos determinar qué valor producir. Esta salida se basará en el estado de nuestra celda, pero también es una versión filtrada. Primero, ejecutamos una capa sigmoidea para determinar qué parte del estado de la celda se generará. A continuación, procesamos el estado de la celda a través de tanh (para obtener un valor entre -1 y 1) y lo multiplicamos con la salida de la puerta sigmoidea. Al final, solo daremos salida a la parte que determinamos generar.

Inserte la descripción de la imagen aquí

%%
clc
clear all
close all
%加载数据,重构为行向量
num=100;
x=1:num;
db=0.1;
data =abs(0.5.*sin(x)+0.5.*cos(x)+db*rand(1,num));
data1 =data;%把你的负荷数据赋值给data变量就可以了。
%data是行向量。要是还不明白,就留言吧。
 
%%
%序列的前 90% 用于训练,后 10% 用于测试
numTimeStepsTrain = floor(0.9*numel(data));
dataTrain = data(1:numTimeStepsTrain+1);
dataTest = data1(numTimeStepsTrain+1:end);
 
%数据预处理,将训练数据标准化为具有零均值和单位方差。
mu = mean(dataTrain);
sig = std(dataTrain);
dataTrainStandardized = dataTrain;
 
%输入LSTM的时间序列交替一个时间步
XTrain = dataTrainStandardized(1:end-1);
YTrain = dataTrainStandardized(2:end);
%%
%创建LSTM回归网络,指定LSTM层的隐含单元个数96*3
%序列预测,因此,输入一维,输出一维
numFeatures = 1;
numResponses = 1;
numHiddenUnits = 20*3;
 
layers = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits)
    fullyConnectedLayer(numResponses)
    regressionLayer];
%% WOA
lb=0.001;%学习率下限
ub=0.1;%学习率上限
 
% Main loop
 
while t<Max_iter
    t
   
end
 
%将预测值与测试数据进行比较。
figure(1)
subplot(2,1,1)
plot(YTest,'gs-','LineWidth',2)
hold on
plot(YPred_best,'ro-','LineWidth',2)
hold off
legend('观测值','预测值')
xlabel('时间')
ylabel('数据值')
title('Forecast with Updates')
 
subplot(2,1,2)
stem(YPred_best - YTest)
xlabel('时间')
ylabel('均方差值')
title('均方差图 ' )
 
 
figure(2)
plot(dataTrain(1:end-1))
hold on
idx = numTimeStepsTrain:(numTimeStepsTrain+numTimeStepsTest);
plot(idx,[data(numTimeStepsTrain) YPred_best],'.-')
hold off
xlabel('时间')
ylabel('数据值')
title('预测图')
legend('观测值', '预测值')
 
figure(3)
plot(1:Max_iter,Convergence_curve,'bo-');
hold on;
title('鲸鱼优化后Error-Cost曲线图');
xlabel('迭代次数')
ylabel('误差适应度值')

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Nota: código completo o escritura agregue QQ2449341593 revisión anterior
>>>>>>
[predicción lssvm] basada en el algoritmo de optimización de ballenas predicción de datos lssvm código fuente de matlab [período Matlab 104] [modelo de predicción 2]
[predicción SVM] basado en la mejora del algoritmo bat Predicción de SVM [Matlab 106] [Modelo de predicción 4]
[Predicción de SVM] Optimización del algoritmo de lobo gris soporte de svm predicción de máquina vectorial código fuente de matlab [Matlab 107] [Modelo de predicción 5]
Predicción de red neuronal de BP [Matlab 108] [Modelo de predicción 6]
[ modelo de predicción lssvm] Basado en el algoritmo de murciélago, soporte de mínimos cuadrados mejorado, máquina de vectores, predicción lssvm [Matlab 109] [Modelo de predicción 7]

Supongo que te gusta

Origin blog.csdn.net/TIQCmatlab/article/details/112985552
Recomendado
Clasificación