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

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

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

Ec3fcf78fa2ad21dcc48478df80e0dc4?s=128

Komei Nomura

July 20, 2020
Tweet

Transcript

  1. 1 Kerasによるモデル構築
 ペパボ研究所 野村孔命
 新卒研修 機械学習入門 補足資料#3
 (2020/07/09 Update)


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


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

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

    ハイパーパラメータや利用する特徴量を変えることによるモデルの影響を学んだ 
 ▪ Kerasによるモデル構築については省略されていた 
 Linear Regression with a Real Dataset
  4. 4 入力から出力を推測したい
 線形回帰のおさらい 4 切片w0と傾きw1を持 つ一次関数で表す


  5. 5 Kerasでのモデルの表現 5 , を学習
 数式
 Kerasでのモデル
 バイアス


  6. 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より抜粋 バイアス:

  7. 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モデルの宣言
  8. 8 8 Sequentialモデル
 ・・・ レイヤー1 ユニット 信号が流れる向き • レイヤーが一直線につながったモデル
 ◦

    レイヤーはユニット(ニューロン)の集合
 ◦ ユニットは入力に対して何らかの計算処理を行い後続のレイヤーに
 結果を伝搬
 model = tf.keras.models.Sequential() レイヤー2 • Sequentialモデルのインスタンスを作成 ◦ レイヤーやユニット、ユニット同士のつな がりは定義されていない
  9. 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 レイヤーの定義
  10. 10 10 レイヤーの定義 • Denseレイヤー
 ◦ 前のレイヤーのユニットに対して全結合する
 ◦ 各ユニットは以下の計算式に従って出力を計算する
 レイヤー

    Denseレイヤー :重み行列 :入力の行列 :バイアス :活性化関数 ニューラルネットワーク節で登 場 非線形問題への拡張に利用
  11. 11 11 レイヤーの定義 • ユニット数1(units=1)、1次元のデータ(input_shape=(1,))を
 入力とするDenseレイヤーを定義
 • バイアスを入れるかはuse_biasで指定
 ◦ デフォルト:use_bias=True


    • 活性化関数はactivationで指定可能
 ◦ デフォルト:activation=None
 model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))
  12. 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 モデルのコンパイル
  13. 13 13 モデルのコンパイル • モデルの学習の過程を定義
 ◦ 最適化手法(optimizer)を指定
 ▪ 最適化手法一覧
 ◦

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

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

    最適化手法には、RMSpropを指定して学習率を設定
 • 損失関数には、平均二乗誤差を指定
 • モデルの評価関数には、平均二乗誤差を指定
 : からラベルを予測する関数 :データの集合
  15. 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 バイアス:
 損失関数、評価関数: 

  16. 16 16 まとめ • Kerasを使ったモデル構築について学んだ
 ◦ Kerasを使ったモデルは、レイヤー(ユニットの集合)のつながりで
 表現される
 ◦ Denseレイヤーは全レイヤーのユニットを全結合して、特定の計算式に従って

    出力を計算する
 ◦ モデルのコンパイルでは、学習の過程で利用する最適化手法や
 損失関数、及びモデルの評価関数の設定を行う

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


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