[Lstm予測]クジラ最適化アルゴリズムの改良されたlstm予測[Matlab105] [予測モデル3]

LSTLSTM
ネットワーク

LSTMと呼ばれる長期短期記憶は、長期的な問題を解決するために特別に設計されています。すべてのRNNには、ニューラルネットワークモジュールを繰り返すチェーン形式があります。標準のRNNでは、この繰り返し構造モジュールは、tanh層などの非常に単純な構造しかありません。
ここに写真の説明を挿入
図3.RNNcell

LSTMの構造は同じですが、繰り返されるモジュールの構造は異なります。単一のニューラルネットワーク層とは異なり、ここには4つあり、非常に特殊な方法で相互作用し
ここに写真の説明を挿入
ます。図4. LSTMcell

LSTMコアアイデア

LSTMの鍵は、セル全体の状態(緑色の画像はセルを表します)と、セルを通過する水平線です。

セルの状態はコンベヤーベルトに似ています。わずかな線形相互作用で、チェーン全体で直接実行します。情報が流れやすく、変更されないままになります。
ここに写真の説明を挿入
図5.LSTMcellの内部構造図

上記の横線しかない場合は、情報を追加または削除する方法はありません。それはゲートと呼ばれる構造を通して達成されます。

ゲートは、主にS状結腸神経層とポイントごとの乗算演算を介して情報を選択的に通過させることができます。
ここに写真の説明を挿入
図6.情報ノード

シグモイド層(ベクトル)の出力の各要素は、0から1までの実数であり、対応する情報を渡すことができる重み(または比率)を表します。たとえば、0は「情報を通過させない」ことを意味し、1は「すべての情報を通過させる」ことを意味します。

LSTMは、このような3つの基本構造を通じて情報の保護と制御を実現します。これらの3つのゲートは、それぞれ入力ゲート、忘却ゲート、出力ゲートです。

LSTMの深い理解

忘れられた門

LSTMの最初のステップは、セルの状態から破棄する情報を決定することです。この決定は、忘却ドアと呼ばれるレイヤーを介して行われます。ゲートはht− 1 h_ {t−1} ht−1とxtx_txtを読み取り、セルの状態ごとに0〜1の値を出力しますC t − 1 C_ {t-1} Ct −1の数値。1は「完全に予約済み」を意味し、0は「完全に破棄された」ことを意味します。
ここに写真の説明を挿入
ここで、ht-1は前のセルの出力を表し、xtは現在のセルの入力を表します。σσはsigmod関数を表します。

入力ゲート

次のステップは、セルの状態に追加する新しい情報の量を決定することです。これには2つのステップが必要です。最初に、「入力ゲート層」と呼ばれるシグモイド層が更新する必要のある情報を決定します。tanh層は、更新の代替コンテンツであるベクトルC ^ tを生成します。次のステップでは、これら2つの部分を組み合わせて、セルの状態を更新します。
ここに写真の説明を挿入
今が古いセルの状態を更新する時です。Ct-1はCtに更新されます。前のステップで何が行われるかが決まりました。これで実際に完了します。

古い状態にftを掛けて、破棄する必要があると確信している情報を破棄します。次にそれを追加します∗ C〜t。これは新しい候補値であり、各状態を更新することを決定した度合いに応じて変化します。

出力ゲート

最終的には、出力する値を決定する必要があります。この出力はセルの状態に基づいていますが、フィルター処理されたバージョンでもあります。まず、シグモイド層を実行して、セル状態のどの部分が出力されるかを決定します。次に、セルの状態をtanhで処理し(-1から1の間の値を取得するため)、それをシグモイドゲートの出力で乗算します。最後に、出力することを決定した部分のみを出力します。

ここに写真の説明を挿入

%%
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('误差适应度值')

ここに写真の説明を挿入
ここに写真の説明を挿入
注:完全なコードまたは記述追加QQ2449341593過去のレビュー
>>>>>>
[lssvm予測]クジラ最適化アルゴリズムに基づくlssvmデータ予測matlabソースコード[Matlab104期間] [予測モデル2]
[SVM予測]コウモリアルゴリズムの改善に基づくSVM予測[
Matlab106 ] [予測モデル4] [SVM予測]グレイウルフアルゴリズム最適化svmサポートベクターマシン予測matlabソースコード[Matlab107] [予測モデル5]
BPニューラルネットワーク予測[Matlab108] [予測モデル6]
[ lssvm予測モデル]バットアルゴリズムに基づいて改善された最小二乗サポートベクターマシンlssvm予測[Matlab109] [予測モデル7]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/112985552