学習用のデータが準備でき、モデルの作り方が分かったところで「どのように学習させていくか?」という部分のパーツとなります。
真面目にやろうとすると数学の知識が必要になりますが、本職ではないので概念を理解して自分のセンスに任せていきます。
Coreレイヤー
Dense/Activation
ドキュメント上は分かれていますが、セットで使うものと理解したほうが分かりやすいかと思います。
Denseがベースとなり、入力データ、出力データ、Activationを指定していくことになります。
Activationは任意のオプションですが、純粋にDenseだけ使う場面はあるのだろうか・・・
サンプルにもありますが、基本的には出力の次元指定、入力データの次元指定、Activationの指定を行っていく形になります。
この例だと、出力の次元として32、入力の次元として16を指定しています。
model = Sequential() model.add(Dense(32, input_shape=(16,)))
Activationは活性化関数を指定します。
突き詰めると数学の知識が必要になってしまうのでここでは割愛。
0/1の分類を行う指標くらいにとらえています。
Dense/Activationが基本となり、「入力次元、出力次元をどうするか」「どの活性化関数を使用するか」という2つの観点でレイヤーを作っていくことが基本となる模様です。
Dropout
過学習を防ぐために、特定の割合で入力データを無効化させる。
間引き過ぎても駄目なような気がする。
Convolutionalレイヤー
データの畳み込みを行います。
画像分析ではよくでてきますよね。
今回は時系列データを対象にしていますが、あまり有効性が無いように見えるので今回はスキップします。
Recurrentレイヤー
RNN/LSTMといった時系列データを扱う処理になります。
基本的にはLSTMを使うことになると思いますが、畳み込みに対応しているConvLSTM2Dも気になるところ。
LSTMの活性化関数としては「tanh」、再起計算時の活性化関数としては「hard_sigmoid」がデフォルトで指定されています。
Noiseレイヤー
過学習を防ぐためのレイヤーになります。
考え方としてはDropoutと同じですね。
モデルの考え方
画像データを扱う場合はデータの畳み込みは必要になると思いますが、時系列であれば上記くらいが基本になるかと思います。
コメント