LSTMを用いた予測結果に振動が発生する問題について
Show older comments
現在LSTMを用いた時系列データの予測モデルを作成しています.
0から1の範囲で正規化された1行200タイムステップのデータセットAを用いて学習を行い,また予測テストもデータセットAを用いて行ってみたところ,下の図のような結果が得られました.

赤で示した予測結果のとおり,最初の数ステップ分の範囲で大きく振動が発生し,その後真値付近に収束するような結果となりました.
真値はほぼ一定値を取っている範囲なのにここまで大きく振動が発生している原因がわからず,また予測精度としても見栄えとしても良くないので,この振動をなくしたいと考えています.
どなたか似た経験や解決策をお持ちの方等いらっしゃいましたら是非ご教授いただければ幸いです.
よろしくお願い致します.
※参考として下にコードやデータの一部を示します.
% Training dataset A (1*200 double)
[0.668 0.676 0.677 0.668 0.671 0.674 0.671 0.671 0.668 0.677 0.677 0.677 0.677 0.675 0.675 0.672 0.674 0.674 ...
% layers and options
numHiddenUnits = 300;
numFeatures = 1;
numResponses = 1;
layers_5 = [ ...
sequenceInputLayer(numFeatures)
flattenLayer('Name','flatten')
lstmLayer(numHiddenUnits,'OutputMode','sequence')
fullyConnectedLayer(numResponses)
regressionLayer];
options_5 = trainingOptions('adam', ...
'MaxEpochs',200, ...
'GradientThreshold',1, ...
'InitialLearnRate',0.001, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',50, ...
'LearnRateDropFactor',0.3, ...
'Verbose',0, ...
'Plots','training-progress');
% Prediction
Test_data(:,1) = Train_data(:,1);
for i = 1:199
[net,Test_data(:,i+1)] = predictAndUpdateState(net,Test_data(:,i));
end
Answers (0)
Categories
Find more on Deep Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

