LSTMによる複数の​入力データを用いた学​習方法について

9 views (last 30 days)
Yuuki
Yuuki on 24 Mar 2020
Commented: Kenta on 25 Mar 2020
LSTMによる学習のうち,入力データと学習のさせ方に関する質問です.
現在こちらのページを参考に,以下のようなシンプルなコードで学習の練習を行っています.
% 学習用データの読み込み
% 処理
% 入力用の時系列データをTrainとして定義
XTrain = Train(:,1:end-1);
YTrain = Train(:,2:end);
numFeatures = 5;
numResponses = 5;
numHiddenUnits = 100;
layers = [ ...
sequenceInputLayer(numFeatures)
flattenLayer('Name','flatten')
lstmLayer(numHiddenUnits,'OutputMode','sequence')
fullyConnectedLayer(numResponses)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs',200, ...
'GradientThreshold',1, ...
'InitialLearnRate',0.005, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',100, ...
'LearnRateDropFactor',0.3, ...
'Verbose',0, ...
'Plots','training-progress');
net = trainNetwork(XTrain,YTrain,layers,options);
実際には,実験パラメータとして条件Aというものが存在しているとすると,
・条件A = 1のときの訓練データTrain1
・条件A = 2のときの訓練データTrain2
...
・条件A = 6のときの訓練データTrain6
という6つの時系列データのデータセットを所持しています.
各訓練データは1つのタイムステップに1行5列のデータをもち,300タイムステップ分の行列データとなっています.
条件Aが異なることによる取得される数値の変化は時系列予測を行うのに十分な特徴を有するものとし,それ以外のデータの形状などは同じとします.
ここで,この6つの訓練データすべてを学習させた学習モデルを作成したいと考えています.
この場合,参考ページにあるような resetState() や predictAndUpdateState() を用いれば可能なのでしょうか?
基礎的な間違いなど未熟な部分も多々あるかと存じますが,是非ご教示のほどよろしくお願いいたします.

Accepted Answer

Kenta
Kenta on 24 Mar 2020
こんにちは、はい、上のようなコードで学習をさせて、resetStateで、メモリなどの蓄積した情報をリセットし、predictAndUpdateStateで、繰り返し予測をしていけば良いと思います。ご提示いただいた例は、1つの値を回帰していますが、今回は、5つの値とその以前の情報からt+1での5つの値を回帰するイメージですね。
>> 条件Aが異なることによる取得される数値の変化は時系列予測を行うのに十分な特徴を有するものとし,それ以外のデータの形状などは同じとします
確かにこの場合だと、6つの条件を混ぜて学習させても良い結果がでるかもしれませんね。
  2 Comments
Yuuki
Yuuki on 25 Mar 2020
Kenta 様,
まさにそのようなイメージで予測精度を向上させたく,このような質問をさせていただきました.
アドバイス頂いた通り,resetState と predictAndUpdataState で学習を進めてみようと思います.
ご回答ありがとうございました.
Kenta
Kenta on 25 Mar 2020
こんにちは、ご返信ありがとうございます。はい、そのようでよかったです。
とはいえ、メッセージで説明することはできても実際にコードで走らそうとすると特にLSTMでは予期せぬエラーが時もあると思いますので、何かございましたらいつでもご質問ください。

Sign in to comment.

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!