LSTMによる信号の​分類において,それぞ​れ長さの違う複数特徴​量を学習させる方法に​ついて

12 views (last 30 days)
ryoma ono
ryoma ono on 11 Sep 2020
Commented: Kenta on 15 Sep 2020
LSTMによる信号分類における学習方法についての質問です.
実験環境を簡易的に設定します.
まず,Wi-Fi電波を,条件A, B(例:A...無人, B...有人)でそれぞれ観測します.
ここで,観測した信号は{1×10000 double}であるとして,条件A, Bにおいて3つずつ(合計6つ)を用意します.
Signals
ans = 6 × 1 cell array
{1×10000 double}
{1×10000 double}
{1×10000 double}
{1×10000 double}
{1×10000 double}
{1×10000 double}
Labels
ans = 6 × 1 categorical array
A
A
A
B
B
B
次に,特徴量を抽出します.そこで,例として平均値とエントロピーを用います.
平均値は,Window Sizeを100としてWindow毎に求めます.
x = Signals{1} % 最初に,一つ目の信号の平均値を求めます
w = 100; % Window size
nw = size(x,2)/w % the number of windows
for i = 1 : nw
mu1 = mean(x(1,(i-1)*w+1:i*w)); % Window毎の平均値
end
mu1 = {1 × 100 double}
エントロピーは,時系列全体について求めます.ここで,Wi-Fiを観測するサンプリング周波数としては不適切ですが,本題とは関係ないので適当に100Hzと設定します.
fs = 100; % サンプリング周波数
se1 = pentropy(x,fs).';
se1 = {1 × 261 double}
以上のことを,他の5つの信号でも同様に求めて,LSTMによって学習させたいです.
そのためには,2つの特徴量の配列mu1,se1を垂直方向に結合する必要があります.
c1 = [mu1; se1];
c2 = [mu2; se2];
...
c6 = [mu6; se6];
しかし,このままでは,結合する配列の次元が一致しないためエラーがでます.
理想としては,これらのトレーニングデータをcell配列としてまとめ,学習させるのが理想です.
このように,LSTMによる信号分類において複数の特徴量を用いる場合,それぞれの特徴寮の長さが異なるときはどのように学習・検証させればよろしいのでしょうか.
お答え頂ければ幸いです.

Accepted Answer

Kenta
Kenta on 13 Sep 2020
こんにちは、長さは最も長い特徴量のものにあわせ、短いほうの特徴量のほうは、はじめの値を0で埋めて、合計の長さがあうようにすればどうでしょうか?
分野やデータによってこの前処理の適切さはかわるのでなんともいえませんが、例えば、LSTMによるテキストの分類だと、このように最初を0でうめて、文字の長さを統一しています。
データの性質によっては最後を0で埋めても良いかもしれません。
  2 Comments
ryoma ono
ryoma ono on 14 Sep 2020
回答ありがとうございます.
例に目を通させて頂きました.
文字を数値へ変換する際に,0 paddingが行われているということだと理解しました.
  1. 0 paddingが信号処理における機械学習でも適切であるかどうか,
  2. また,適切であった場合,前後どちらが良好か,
  3. 0 paddingに関連する他の方法もないか
以上のことを自分で調査してから実践してみようと思います.
わかりやすい例と共に回答して頂いたことで,新しい知見を得られるとともに,
解決への道筋を見つけることができ,大変助かりました.
また,機会があればよろしくお願いいたします.
Kenta
Kenta on 15 Sep 2020
はい、参考になってようでよかったです。データの性質で、どのようなゼロパディングが有効なのかなど検討するのはおもしろそうですね、またもしよろしければ教えてください。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!