ディープラーニングの予測段階で予測値がありえない値に、
Show older comments
ディープラーニングを用いて為替市場のデータについて学習させた後に、予測をするのですが予測をした値をプロットすると予測値が実際のものと明らかに違う方向に飛んで行ってしまいます。過学習ではないかと思い、学習の際のオプションを変えたりしたのですが予測すると必ず同じようなことになってしまいます。一番下の写真は実際に予測させた時の実際の価とのズレです。どのようにしたら予測した価が飛んでいかずにいい感じに予測出来るでしょうか
data(1:10)
ans =
122.5690
122.6030
122.6090
122.6090
122.6170
122.5980
122.5780
122.5840
122.5840
122.5860
%% 学習データとテストデータの分割
numTimeStepsTrain = floor(0.9 * numel(data));
XTrain = data(1:numTimeStepsTrain);
YTrain = data(2:numTimeStepsTrain+1);
XTest = data(numTimeStepsTrain+1:end-1);
YTest = data(numTimeStepsTrain+2:end);
numTimeStepsTest = numel(XTest);
idxTrain = 1:numTimeStepsTrain;
idxTest = (numTimeStepsTrain+1):(numTimeStepsTrain + numTimeStepsTest);
%% データの標準化
mu = mean(XTrain);
sig = std(XTrain);
XTrain = (XTrain - mu) / sig;
YTrain = (YTrain - mu) / sig;
XTest = (XTest - mu) / sig;
%% LSTM Network の構築
inputSize = 1;
numResponses = 1;
numHiddenUnits = 200;
layers = [ ...
sequenceInputLayer(inputSize)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numResponses)
regressionLayer];
%% 学習オプションの設定
opts = trainingOptions('adam', ...
'MaxEpochs', 250, ...
'GradientThreshold', 1, ...
'InitialLearnRate', 0.005, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropPeriod', 125, ...
'LearnRateDropFactor', 0.2, ...
'Verbose', 0, ...
'Plots', 'training-progress');
XTrain=num2cell(XTrain);
YTrain=num2cell(YTrain);
XTest=num2cell(XTest);
%% LSTM Network の学習
net = trainNetwork(XTrain, YTrain, layers, opts);
%% 未来の時間領域での予測
% 過去データを入力して状態を更新
net = predictAndUpdateState(net, XTrain,MiniBatchSize=1);
% 1ステップ目の予測
[net, YPred(1)] = predictAndUpdateState(net, XTest(1));
% 2ステップ目以降の予測
for i = 2:numTimeStepsTest
[net, YPred(i)] = predictAndUpdateState(net, YPred(i - 1));
end

4 Comments
Kojiro Saito
on 7 Nov 2022
学習終了時のRMSEや損失は小さい値になっていますか?
水疱瘡の例ではRMSEも損失のグラフも徐々に小さくなっていましたが、このグラフが収束していないと学習済みモデル自体の精度が良くない可能性が高いです。

健太郎 藤本
on 7 Nov 2022
Kojiro Saito
on 7 Nov 2022
なるほど。すぐに収束してしまっているので、過学習の可能性はありますね。学習に使用しているデータ(data)の個数はどれぐらいでしょうか?
健太郎 藤本
on 9 Nov 2022
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!