1. LSTM とは

2. KerasによるLSTMの構築


演習 5-1 (個人): Keras を使って3層LSTMを作ってみましょう。

Jupyter Notebook で「DL_5_1」というノートブックを作ります
テンプレートスクリプトをノートブックにコピーして下さい。内容はテキストのソース 1とほぼ同じです。
実行して下さい。
指定場所に「ソース」と「実行結果」を貼り付けて下さい。


3. KerasによるLSTMの学習


演習 5-2 (個人): 3層LSTMを用いてサイン波の予測をしてみましょう。
LSTMとディープラーニングの仕様は以下の通りです。

仕様:

(1) 入力層のパーセプトロン数は N = 1

(2) 隠れ層のLSTMブロック数は K = 12

(3) 出力層のパーセプトロン数は M = 1

(4) 信号長は S = 25

(5) 学習率は r = 0.001、エポック数は E = 50、バッチサイズは B = 32

(6) 入力信号はサイン波に一様乱数を加えたものとする

(7) ラベルは1時刻後の入力信号の値とする(詳しくはテンプレート内のコメントを参照)

(8) 出力層の活性化関数は「linear」、損失関数は「tf.keras.losses.MeanSquaredError()」、評価関数は無しとする

Jupyter Notebook で「DL_5_2」というノートブックを作ります
テンプレートスクリプトをノートブックにコピーして下さい。
DL_5_1 とテキストを参考にしながらスクリプトファイル内の ? の部分を穴埋めして下さい。
実行して下さい。青いグラフがLSTMへの入力信号、赤いグラフがLSTMの出力です。
指定場所に「ソース」と「学習前のグラフ」、「学習後のグラフ」を貼り付けて下さい。


演習 5-3 (個人): 3層LSTMを用いて音声認識をしてみましょう。
LSTMとディープラーニングの仕様は以下の通りです。

仕様:

(1) 自分の「あ」「い」「う」「え」「お」という声を録音したwaveファイルを入力として与えて音声認識をおこなう
ファイル名はそれぞれ「a.wav」「i.wav」「u.wav」「e.wav」「o.wav」とする
フォーマットはモノラルチャンネル、量子化ビット数 16bit、サンプリング周波数 44100Hz(以上)、録音時間2秒以上とする

(2) 各 wave ファイルの 500 msec 時点から 5 msec おきに 10 msec だけ信号を 100 個取り出して学習データとする
つまり学習データセットサイズは L = 100 * 5 = 500

(3) 各 wave ファイルの 502.5 msec 時点から 5 msec おきに 10 msec だけ信号を20個取り出してテストデータとする
つまりテストデータセットサイズは 20 * 5 = 100

(4) 入力層のパーセプトロン数は N = 1

(5) 隠れ層のLSTMブロック数は K = 150

(6) 出力層のパーセプトロン数は M = 5 ※ 5クラス(あ・い・う・え・お)分類のための one-hot ベクトル形式

(7) 信号長 S はサンプリング周波数によって変わるので自動で計算する

(8) 学習率は r = 0.001、エポック数は E = 200、バッチサイズは B = 16 とする

(9) 出力層の活性化関数は「softmax」、損失関数は「tf.keras.losses.CategoricalCrossentropy()」、評価関数は「tf.keras.metrics.CategoricalAccuracy()」とする

Jupyter Notebook で「DL_5_3」というノートブックを作ります
テンプレートスクリプトをノートブックにコピーして下さい。
DL_5_2 とテキストを参考にしながらスクリプトファイル内の ? の部分を穴埋めして下さい。
実行して下さい。
正解率が低い場合はドロップアウト層を加えたり、LSTMユニット数の数を変えたり、エポック数やバッチサイズを変更したり等の工夫をして下さい。
指定場所に「ソース」と「学習前の状態」、「学習後の状態」を貼り付けて下さい。