ねほり.com

何もないから何かみつかる

KerasのFunctional API Modelの構造を理解する(ディープラーニング)

      2018/05/14

Kerasには2通りのModelの書き方があります。

download (1)

Sequencial Model と Functional API Model です。

【Sequential Model】

Sequential モデルは単純に、今の層のそれぞれのノードに、前の層の全ノードから矢印を引っ張ってくるイメージです。

Functional API Model

こちらの方法では、2 つのニューラルネットワークの出力を入れてみたり、レイヤーを共有してみたりと、複雑なことができるようになります。

 
 

前回、よく分からなかったコードは、Functional API Modelで書かれていました。

なるほど・・そもそも論が分かってなかったです。

Sequential Modelでは自由度が低いそうなので、Functional API Modelに最初から慣れた方がよいそうです。

また、慣れてくるとFunctional API Modelの方が直感的に思えてくるそうです。

まだ何も理解してないので、それならFunctional API Modelから始めることにします。

ディープラーニングを学習するには、この本がオススメです。

Functional API Model

書き方は次のようになります。

  • Input関数で入力として受け付けるデータの次元を指定
  • 加えたいレイヤー関数の入力それ以前のレイヤー情報を指定して、変数に入れていく
  • Model関数で入力と出力を指定

理解したいコードは次の部分です。

うむ・・、分からないので、モデルを図示化してみましょう・・・。

Kerasのgraphvizモジュールで学習モデルを可視化

kerasのモジュールを使って、モデルの可視化ができるそうです。

ネットワークの構造を目で確認できるというのはかなり大きいと思います。

graphvizとpydotをインストールします(例:Windowsの場合)。

使い方は、plot_modelモデルを関数に入れるだけです。

【出力結果】

model

入力層

まず、Input関数で入力として受け付けるデータの次元を指定します。

shape は入力の次元を表しています。
(10, 1) という表記は、10 という要素だけもつ Tuple(配列みたいなもの)という意味です。

隠れ層(中間層:intermediate layer)

リカレントニューラルネットワークの一種であるLSTM (Long short-term memory) を中間層に利用しています。

ノード数が300で、入力が inputs であるような層です。

Activation(活性化関数)は「relu」を利用しています。

出力層

ノード数が1で、入力が x であるような層です。

予測株価を活性化関数「linear」、株価の増減を活性化関数「sigmoid」を利用しています。

dense は「密な」という意味で、前の層のすべてのノードから、この層のすべてのノードに対して矢印が引っ張られるから、こういう名前・・らしいです。

モデルを定義して入力と出力を接続

1つの入力と2つの出力を持ったモデルを定義します.

これは、図示化したモデルと同じです。

モデルをコンパイル

compileメソッドは3つの引数を取ります

最適化アルゴリズム(optimizer)は「adam」を利用しています。

損失関数(loss)は予測株価に「mape」、株価の増減に「binary_crossentropy」を利用しています。

評価関数のリスト(metrics)は分類問題の精度としてmetrics=[‘accuracy’]を指定しています。

ようするに?

なんとなく、よく見る学習モデルを構築している事はわかりました。

ただし利用するアルゴリズムが色々ありすぎて、なぜそれを使うのか?が分かりません。

また、シグモイド関数(sigmoid)とか、人工知能の本を読むとキーワードは出てくるので、聞いた&習ったことはあるけれど分かってないです。

とりあえず、詳細は次回にしよう・・・。

 - 2018年, システムトレード, テクノロジー, 投資

  関連記事

動画配信のビジネスモデル(ライブ配信SHOWROOM、YY編)

前回はYoutubeのビジネスモデルをまとめました。 今回は、新しいビジネスモデ …

「ギンポ」と「ダイナンギンポ」は「科」が違う

特に寒くなってくると、海水は冷たすぎる・・・ 10月のタイドプール(潮溜り)は夏 …

3点チャージ投資法(MACP、VR、RSI)の有効性検証(protraシストレ)

この手法は大学時代に後輩から教えてもらいました。 そこから、株のシミュレーション …

Kerasを使ったMatplotlibのグラフ整形と日本語表示(ディープラーニング)

PytorchはLSTMが難しいらしいし、TensorFlowも難しいので未挑戦 …

段ボールハウスを作って遊ぶ

5才ぐらいの頃から段ボールでハウスを作るのが好きだった。 慣れると簡単だけど、当 …

BNF氏の逆張りスイングトレードの有効性検証(protraシストレ)

BNF(小手川隆)氏の「乖離率」逆張り投資手法のバックテストを以前紹介しましたが …

「大企業のほうが成長できるとか完全にウソ」は多分ウソ

とあるサイト「大企業に就職することの本当のメリット5つ、デメリット5つ」によると …

鳥居万友美氏の手法(RCIの3本使い)の有効性検証(protraシストレ)

前回「RCI」を3本使ってグラフを表示してみました。 次は、これを使ったトレード …

斉藤正章氏の手法の有効性検証(protraシストレ)

Protraに慣れてないので、まだまだ巷のサンプルソースコードを入手したい。 ・ …

グランビルもどきの法則の有効性検証(protraシストレ)

チャート分析の中でも最も基本的でシンプル手法でありながら、絶大な効果のある「グラ …