Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kerasによるモデル構築 / Model-building-with-Keras

Kerasによるモデル構築 / Model-building-with-Keras

GMOペパボ新卒研修2020 機械学習入門 補足資料#3

Komei Nomura

July 20, 2020
Tweet

More Decks by Komei Nomura

Other Decks in Technology

Transcript

  1. 2 2 Kerasについて • KerasはTensorFlow上で動作する高水準のニューラルネットワークの
 ライブラリ
 ◦ TensorFlowもニューラルネットワークのライブラリ
 • 迅速なモデル構築と実験を可能にすることに重点を置いて開発


    ◦ モデルを構築するためのモジュールが用意
 • TensorFlowよりも簡単にモデルを構築可能
 ◦ 処理はブラックボックス化されているので細かい変更や設定ができない

  2. 3 3 この資料でやること • Kerasによるモデル構築の説明
 ◦ 緯度、経度、人口などの特徴量から住宅価格を予測するモデルを使った演 習がCrash Courseにありました
 ▪

    ハイパーパラメータや利用する特徴量を変えることによるモデルの影響を学んだ 
 ▪ Kerasによるモデル構築については省略されていた 
 Linear Regression with a Real Dataset
  3. 6 6 Kerasを使った線形回帰のコードとモデル def build_model(my_learning_rate): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()]) return model 1つの特徴量 からラベルを予測するモデル(例:人口から住宅価格の予測など) 
 Linear Regression with a Real Datasetより抜粋 バイアス:

  4. 7 7 Kerasを使った線形回帰のコード def build_model(my_learning_rate): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()]) return model Sequentialモデルの宣言
  5. 8 8 Sequentialモデル
 ・・・ レイヤー1 ユニット 信号が流れる向き • レイヤーが一直線につながったモデル
 ◦

    レイヤーはユニット(ニューロン)の集合
 ◦ ユニットは入力に対して何らかの計算処理を行い後続のレイヤーに
 結果を伝搬
 model = tf.keras.models.Sequential() レイヤー2 • Sequentialモデルのインスタンスを作成 ◦ レイヤーやユニット、ユニット同士のつな がりは定義されていない
  6. 9 9 Kerasを使った線形回帰のコード def build_model(my_learning_rate): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()]) return model レイヤーの定義
  7. 10 10 レイヤーの定義 • Denseレイヤー
 ◦ 前のレイヤーのユニットに対して全結合する
 ◦ 各ユニットは以下の計算式に従って出力を計算する
 レイヤー

    Denseレイヤー :重み行列 :入力の行列 :バイアス :活性化関数 ニューラルネットワーク節で登 場 非線形問題への拡張に利用
  8. 12 12 Kerasを使った線形回帰のコード def build_model(my_learning_rate): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()]) return model モデルのコンパイル
  9. 13 13 モデルのコンパイル • モデルの学習の過程を定義
 ◦ 最適化手法(optimizer)を指定
 ▪ 最適化手法一覧
 ◦

    損失関数(loss)を指定
 ▪ 損失関数一覧
 ◦ 学習やテストの際にモデルの良さを評価する評価関数(metrics)を指定
 ▪ 複数の評価関数を指定可能
 ▪ 評価関数一覧
 ▪ 学習中の重みパラメータの更新には影響はない 

  10. 14 :データ数 :ラベル :特徴量 14 モデルのコンパイル model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()]) •

    最適化手法には、RMSpropを指定して学習率を設定
 • 損失関数には、平均二乗誤差を指定
 • モデルの評価関数には、平均二乗誤差を指定
 : からラベルを予測する関数 :データの集合
  11. 15 15 完成したモデル def build_model(my_learning_rate): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()]) return model バイアス:
 損失関数、評価関数: 

  12. 17 17 参考 • Kerasについて
 ◦ Module: tf.keras
 • 最適化手法について


    ◦ Goによる勾配降下法 - 理論と実践 -
 ◦ Module: tf.keras.optimizers