Python Colaboratory

大域最適解みつからず

ここまでで、活性化関数について考えてきました。
引き続き、大域最適解について考察していきます。
勾配降下法で本当に大域最適解(真の値)を見つけることができるのでしょうか?
②③局所最適解と①大域最適解との関係がもし下図のようになっているとすれば w をどこから探索を始めるかにかかってきて、的確に探し当てるのはいずれにせよ 無理ということになります。


大域最適解

活性化関数の選択

ここまで、活性化関数の例として tanh について説明してきました。
それではどんな活性化関数が使用できるのでしょうか?
代表的なものに
① 0 ~ +1 に活性化するもの
 シグモイド関数(sigmoid function)
 ReLU (Rectified Linear Unit)
 LeakyReLU
② -1 ~ +1 に活性化するもの
 tanh 関数
③ 活性化なし
 linear
があります。
他にもいろいろあります。
入力値を正規化(min-max normalization)した場合には
 ①のReLU
入力値を標準化(z-score normalization)した場合には
 tanh
あたりが良いと思います。

全結合モデル概要

RNN で最も単純で計算量の少ないモデルを作成します。
軽量なモデルとは言うものの非常に強力な能力があります。
今回のモデルを図示すると下図のようになります。


  • 全結合モデル

  • 全結合モデル作成

    それではモデルを作成していきます。

    1. モジュ-ル

      必要なモジュ-ルは3つです。
      from tensorflow import keras
      from keras import layers
      from keras import initializers

    2. Input 宣言

      inputs = keras.Input(shape=(sequence_length,))
      input デ-タの配列がどんな型式になっているか宣言します。
      今回は、sequence_length=20 個の配列が入力されると宣言しています。
      この inputs オブジェクトには、このモデルが処理するデ-タの形状とデ-タ型に関する情報が 含まれています。
      このようなオブジェクトをシンボリックテンソルと呼びます。
      シンボリックテンソルとは、実際のデ-タは含んでいないテンソルのことであり、 モデルを使うときにモデルに渡される実際のテンソルの仕様を定義しています。

    3. batch_size 問題

      あの適当に決めた batch_size 値がここで問題になってきます。
      Input される train_dataset は batch_size=32 ごとに配列のなかで分割されています。
      20×32 + 20×32 + 20×16
      となっているのでこれを
      20×80
      の形に変更しないと FunctionalAPI を使うことができません。
      x = layers.Flatten()(inputs)
      としてデ-タを平坦化します。


    全結合モデル作成の前半が完成しました。
    引き続き、後半部分を作成します。


  • 全結合モデル後半作成 に進む
  • Keras モデルの構築 に戻る
  • keras-test-51 動作確認 に戻る
  • 各デ-タセットの内容表示 に戻る
  • 3種の timeseries_dataset デ-タを作成 に戻る
  • CSV timeseries_dataset まとめ に戻る
  • CSV デ-タ timeseries_dataset 作成 に戻る
  • 標準化した dummy_dataset を作成 に戻る
  • dummy_dataset の内容表示 に戻る
  • RNN の理解-Ⅱ に戻る
  • 時系列のためのディ-プラ-ニング に戻る
  • ロ-ソク足表示ファイルまとめ に戻る
  • ロ-ソク足本体の表示 に戻る
  • Colab で mplfinance を使用 に戻る
  • CSV ファイルの読込 に戻る
  • Colab を始める に戻る
  • 70VPS に戻る