44
1 © 2018 The MathWorks, Inc. LSTMによる系列データの予測と分類 MathWorks Japan テクニカルコンサルティング部 シニア テクニカル コンサルタント 太田 英司

MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

1© 2018 The MathWorks, Inc.

LSTMによる系列データの予測と分類

MathWorks Japan

テクニカルコンサルティング部 シニア テクニカル コンサルタント

太田 英司

Page 2: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

2

LSTMLong Short Term Memory

Page 3: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

3

ニューラルネットワークとは?

神経細胞(ニューロン)の数学的なモデル化に起源を持つ学習器

神経細胞(ニューロン)

➢ 軸索によりネットワークを構成➢ 電気的な興奮状態を伝え合う

画像提供: 独立行政法人 理化学研究所様

Page 4: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

4

ニューラルネットワークとは?

𝑦 = 𝑓

𝑘=1

𝑛

𝑤𝑘 ∙ 𝑥𝑘 + 𝑏

0

1

Weight

𝑥1

𝑥2

𝑥𝑛

Σ 𝑓

𝑤1

𝑤2

𝑤𝑛

𝑦

1

𝑏

Transfer Function

Bias

0

1

-1

Logistic Sigmoid Tangent Sigmoid

Rectified Linear Unit

Page 5: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

5

ニューラルネットワークとは?

Σ 𝑓1

Σ 𝑓1

Σ 𝑓1

𝑥1

𝑥2

𝑥3

𝑥4

1

1

1

Σ 𝑓2

Σ 𝑓2

Σ 𝑓2

1

1

1

𝐼𝑊

Layer 1 Layer 2

𝐿𝑊

𝑦1

𝑦2

𝑦3

Page 6: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

6

Recurrent Neural Network とは?

入力 (Input) 出力 (Output)

時刻 t

過去のデータを現時点の予測にどう活かすか?

𝑼 𝑽

気温 風速 風向 日射量 電流 電圧

Page 7: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

7

Recurrent Neural Network とは?

入力 (Input) 出力 (Output)

時刻 t

1ステップ前の隠れ層

1ステップ前の隠れ層の情報現時刻の入力の情報 + 過去情報も含む予測

現在の隠れ層𝑼 𝑽

𝑾

Page 8: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

8

Recurrent Neural Network とは?

1ステップ前の隠れ層の状態をフィードバックさせることで過去の情報を予測に活かせるようにしたネットワーク

エルマン型 RNN

LSTMLong Short Term Memory

■ 進化版RNN(ゲート付きRNN)■ メモリセルにより長期の情報を保持できる■ 時間的に離れた依存関係のモデル化も得意

進化!

長期間の依存関係を

モデル化するのが不得意

Page 9: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

9

Recurrent Neural Network とは?

行列等を使って簡素化して表現すると、右のようになる

𝒙𝒕 𝒚𝒕𝑼 𝑽

エルマン型 RNN

𝒉𝒕 = 𝒕𝒂𝒏𝒉 𝑾 𝒉𝒕−𝟏 + 𝐔 𝒙𝒕

隠れ層の更新式

𝒚𝒕 = 𝑽 ∙ 𝒉𝒕

出力の演算式

入力 出力

𝑾

Page 10: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

10

Recurrent Neural Network とは?

𝑼

𝑾

𝒙𝒕

𝒚𝒕

隠れ状態(時刻 t-1)

隠れ状態(時刻 t)

入力(時刻 t)

出力(時刻 t)

𝒕𝒂𝒏𝒉

𝑽

𝒉𝒕−𝟏 𝒉𝒕

隠れ層の時間推移がわかり易いように表現すると、次のようになる

1

-1

𝒕𝒂𝒏𝒉

Page 11: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

11

LSTM(Long Short Term Memory) とは?

𝒉𝒕−𝟏

𝑼

𝑾

𝒙𝒕

隠れ状態(時刻 t-1)

入力(時刻 t)

𝑪

𝒚𝒕

隠れ状態(時刻 t)

出力(時刻 t)

𝒉𝒕𝒕𝒂𝒏𝒉𝒕𝒂𝒏𝒉

メモリセル

出力ゲート入力ゲート

忘却ゲート

通常の RNN に「メモリセル」を導入し、入力・忘却・出力を3つのゲートで制御するようにしたもの

𝑽

※ 各ゲートでは、0~1の定数倍を行う

Page 12: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

12

LSTM(Long Short Term Memory)とは?

𝒉𝒕−𝟏

𝑼

𝑾

𝒙𝒕

隠れ状態(時刻 t-1)

入力(時刻 t)

𝑪

𝒚𝒕

隠れ状態(時刻 t)

出力(時刻 t)

𝒉𝒕𝒕𝒂𝒏𝒉𝒕𝒂𝒏𝒉

メモリセル

出力ゲート入力ゲート

忘却ゲート

𝒙𝒕 𝒉𝒕−𝟏

𝒙𝒕 𝒉𝒕−𝟏

𝒙𝒕 𝒉𝒕−𝟏

通常の RNN に「メモリセル」を導入し、入力・忘却・出力を3つのゲートで制御するようにしたもの

𝑽

Page 13: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

13

LSTM(Long Short Term Memory) とは?

入力(時刻 t)

𝒉𝒕−𝟏

𝑼

𝑾

𝒙𝒕

隠れ状態(時刻 t-1)

𝑪

𝝈 𝒚𝒕

隠れ状態(時刻 t)

出力(時刻 t)

𝒉𝒕𝒕𝒂𝒏𝒉𝒕𝒂𝒏𝒉

𝝈

𝒂𝒕

𝒇𝒕

𝒊𝒕 𝒐𝒕

𝒄𝒕 = 𝒇𝒕 ⨀ 𝒄𝒕−𝟏+ 𝒊𝒕 ⨀𝒂𝒕

メモリセル

セルの更新式:

𝝈𝑽

𝑾𝒊𝑼𝒊

𝒙𝒕 𝒉𝒕−𝟏 𝒙𝒕 𝒉𝒕−𝟏 𝒙𝒕 𝒉𝒕−𝟏

𝑼𝒇 𝑾𝒇 𝑼𝒐 𝑾𝒐

Page 14: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

14

LSTM(Long Short Term Memory) とは?

入力(時刻 t)

LSTMBlock

(時刻 t)

𝒉𝒕−𝟏

𝒙𝒕

隠れ状態(時刻 t-1)

𝒚𝒕

隠れ状態(時刻 t)

出力(時刻 t)

𝒉𝒕

Page 15: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

15

LSTM(Long Short Term Memory) とは?

入力

LSTMBlock

(時刻 t+2)

𝒙𝒕+𝟐

𝒚𝒕+𝟐 出力

入力

LSTMBlock

(時刻 t+1)

𝒙𝒕+𝟏

𝒚𝒕+𝟏 出力

入力

LSTMBlock

(時刻 t)

𝒙𝒕

𝒚𝒕 出力

入力

LSTMBlock

(時刻 t+3)

𝒙𝒕+𝟑

𝒚𝒕+𝟑 出力

𝒉𝒕−𝟏 𝒉𝒕 𝒉𝒕+𝟏 𝒉𝒕+𝟐 𝒉𝒕+𝟑

Page 16: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

16

系列データの予測

Page 17: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

17

【例題】 水疱瘡の発生件数の予測

学習区間 予測区間

水疱瘡患者の月間報告数(New York city, 1931 - 1972)

http://www-personal.buseco.monash.edu.au/~hyndman/TSDL/Hyndman, R.J. (n.d.) Time Series Data Library. Accessed on July 20, 2009.

Page 18: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

18

系列データの予測させるには?

学習)1ステップ先のデータを予測するようにLSTMを学習をさせる

LSTMBlock

𝒙𝒕+𝟏

LSTMBlock

𝒙𝒕

𝒚𝒕 𝒚𝒕+𝟏

𝒙𝒕+𝟏 𝒙𝒕+𝟐 Target

LSTMBlock

𝒙𝒕+𝟐

𝒚𝒕+𝟐

𝒙𝒕+𝟑

LSTMBlock

𝒙𝒕+𝟑

𝒚𝒕+𝟑

𝒙𝒕+𝟒

Page 19: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

19

系列データの予測させるには?

予測)1ステップ先の予測を次のステップの入力にすれば、次々に先のステップの予測が可能になる

LSTMBlock

LSTMBlock

𝒙𝒕

LSTMBlock

LSTMBlock

Page 20: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

20

【例題】 水疱瘡の発生件数の予測

Page 21: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

21

LSTM(Long Short Term Memory)

layers = [ ...

sequenceInputLayer(1)

lstmLayer(200, ‘OutputMode’, ‘sequence’)

fullyConnectedLayer(1)

regressionLayer];

opts = trainingOptions(‘adam', 'MaxEpochs’, 150);

net = trainNetwork(XTrain, YTrain, layers, opts);

入力層・LSTM層・全結合層などの

層を積み上げて定義

学習率や最大反復数などを定義して

学習の関数を呼び出す

時系列のデータで回帰を行う際のネットワーク構築の例

Page 22: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

22

系列データの予測させるには?

各ステップで予測値の代わりに観測値を入力することで、精度を向上させることもできる

LSTMBlock

𝒙𝒕+𝟏

LSTMBlock

𝒙𝒕

LSTMBlock

𝒙𝒕+𝟐

LSTMBlock

𝒙𝒕+𝟑 観測情報

Page 23: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

23

【例題】 水疱瘡の発生件数の予測

Page 24: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

24

LSTM のさまざまなタイプ

観測情報の入力が各ステップで行われる場合と行われない場合がある

LSTMBlock

LSTMBlock

LSTMBlock

LSTMBlock

LSTMBlock

LSTMBlock

One to Many Many to Many

最初のステップにのみ観測情報の入力がある場合 各ステップで観測情報の入力がある場合

Page 25: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

25

系列データの分類

Page 26: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

26

【例題】 人の活動状態の識別歩行

階段-上り

階段-下り

着席

直立

寝る

Dataset courtesy of:Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra and Jorge L. Reyes-Ortiz. Human Activity Recognition on Smartphones using a Multiclass Hardware-Friendly Support Vector Machine. International Workshop of Ambient Assisted Living (IWAAL 2012). Vitoria-Gasteiz, Spain. Dec 2012http://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones

Classification

Page 27: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

27

【例題】 人の活動状態の識別

歩行? 直立?階段?

3軸の加速度センサーの情報を使って、人の活動状態を識別したい

Page 28: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

28

【例題】 人の活動状態の識別

Page 29: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

29

【例題】 人の活動状態の識別

Page 30: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

30

【例題】 人の活動状態の識別

x

y

z

部分時系列(128 * 3 次元)

128 sample

Page 31: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

31

系列データを分類するには?

学習)系列データの最後の出力が Target に一致するように学習させる

LSTMBlock

𝒙𝟐

LSTMBlock

𝒙𝟏

𝒚𝟏 𝒚𝟐

LSTMBlock

𝒙𝒕+𝑵

𝒚𝒕+𝑵

Output

歩行

階段-上り

階段-下り

着席

直立

寝る

1 0 0 0 0 0

0 1 0 0 0 0

0 0 1 0 0 0

0 0 0 1 0 0

0 0 0 0 1 0

0 0 0 0 0 1

最後の出力に対してだけ Target が存在

Page 32: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

32

系列データを分類するには?

予測)系列データの最後の出力が系列データの分類結果とする

LSTMBlock

𝒙𝒕+𝑵

𝒚𝒕+𝑵

歩行

階段-上り

階段-下り

着席

直立

寝る

最後の出力が分類結果となる

LSTMBlock

𝒙𝟐

LSTMBlock

𝒙𝟏

𝒚𝟏 𝒚𝟐

Output

Page 33: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

33

LSTM(Long Short Term Memory)

layers = [ ...

sequenceInputLayer(3)

lstmLayer(50)

lstmLayer(50, 'OutputMode', 'last')

fullyConnectedLayer(6)

softmaxLayer

classificationLayer];

opts = trainingOptions('sgdm', 'MaxEpochs’, 150);

net = trainNetwork(XTrain, TTrain, layers, opts);

入力層・LSTM層・全結合層などの

層を積み上げて定義

学習率や最大反復数などを定義して

学習の関数を呼び出す

3軸の加速度センサーのデータで信号分類する際のネットワーク構築の例

Page 34: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

34

系列データを分類するには?

LSTM Block を複数段重ねて使うこともある

LSTMBlock

𝒙𝒕+𝑵

𝒚𝒕+𝑵

Output

LSTMBlock

LSTMBlock

𝒙𝟐

𝒚𝟐

LSTMBlock

LSTMBlock

𝒙𝟏

𝒚𝟏

LSTMBlock

LSTMBlock

𝒙𝟑

𝒚𝟑

LSTMBlock

LSTMBlock

𝒙𝟒

𝒚𝟒

LSTMBlock

Page 35: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

35

【例題】 人の活動状態の識別

ax ay az s t

部分時系列(X軸)

部分時系列(Y軸)

部分時系列(Z軸)

被験者番号 動作番号

128 sample 128 sample 128 sample

加速度センサーの情報は一定の窓幅で部分時系列としてテーブルに格納されている

Page 36: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

36

【例題】 人の活動状態の識別

Page 37: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

37

LSTM のさまざまなタイプ

系列全体に対して Target がひとつだけ設定される場合と各ステップに設定される場合がある

LSTMBlock

LSTMBlock

LSTMBlock

Many to One Many to Many

系列全体に対して Target がひとつだけ設定される場合 各ステップの出力に対して Target が設定される場合

LSTMBlock

LSTMBlock

LSTMBlock

Page 38: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

38

研究事例:動画分類(神奈川工科大学)

Page 39: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

39

【事例】 手話動画の分類(神奈川工科大学 田中研究室様)

頭痛 鼻水? ?

手話指導&撮影協力:株式会社 ケイ・シー・シー(https://www.kcc.co.jp/)

Page 40: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

40

【事例】 手話動画の分類(神奈川工科大学 田中研究室様)

CNN

LSTM

頭痛? 鼻水?

CNN特徴量(4096 次元)

動画のフレーム(227 x 227 ピクセル)

手話動画

AlexNet の pool5 層の活性を取得する

Page 41: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

41

【事例】 手話動画の分類(神奈川工科大学 田中研究室様)

色抽出後の動画

現在は、元の動画から色抽出を行った動画に対して、分類を実行している

Kazuki Sakamoto, Eiji Ota, Tatsunori Ozawa, Hiromitsu Nishimura, and Hiroshi Tanaka : Feasibility Study on Deep Learning Scheme for Sign Language Motion Recognition, Proceedings of the 12th International Conference on Complex, Intelligent, and Software Intensive Systems (CISIS-2018)

Page 42: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

42

ディープラーニングのための構成

Page 43: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

43

深層学習に必要な Toolbox と Hardware

MATLAB ®

Image Processing Toolbox™

Computer Vision SystemToolbox™

Statistics andMachine Learning Toolbox™

Parallel Computing Toolbox™

Neural Network Toolbox™

R2018a以降のMATLABを推奨

GPUを使う場合

一部の例題等で使う可能性

R-CNN, Fast R-CNN, Faster R-CNNSemantic Segmentation 等で必須

必須

NVIDIA® のチップを搭載したGPU(Compute Capability 3.0以降)

Page 44: MathWorks Japan · 系列データを分類するには? LSTM Block を複数段重ねて使うこともある LSTM Block 𝒕+𝑵 𝒕+𝑵 Output LSTM Block LSTM Block LSTM Block

44

© 2018 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders.