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. 1
    Kerasによるモデル構築

    ペパボ研究所 野村孔命

    新卒研修 機械学習入門 補足資料#3

    (2020/07/09 Update)


    View Slide

  2. 2
    2
    Kerasについて
    ● KerasはTensorFlow上で動作する高水準のニューラルネットワークの

    ライブラリ

    ○ TensorFlowもニューラルネットワークのライブラリ

    ● 迅速なモデル構築と実験を可能にすることに重点を置いて開発

    ○ モデルを構築するためのモジュールが用意

    ● TensorFlowよりも簡単にモデルを構築可能

    ○ 処理はブラックボックス化されているので細かい変更や設定ができない


    View Slide

  3. 3
    3
    この資料でやること
    ● Kerasによるモデル構築の説明

    ○ 緯度、経度、人口などの特徴量から住宅価格を予測するモデルを使った演
    習がCrash Courseにありました

    ■ ハイパーパラメータや利用する特徴量を変えることによるモデルの影響を学んだ

    ■ Kerasによるモデル構築については省略されていた

    Linear Regression with a Real Dataset

    View Slide

  4. 4
    入力から出力を推測したい

    線形回帰のおさらい
    4
    切片w0と傾きw1を持
    つ一次関数で表す


    View Slide

  5. 5
    Kerasでのモデルの表現
    5
    , を学習

    数式
 Kerasでのモデル

    バイアス


    View Slide

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


    View Slide

  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モデルの宣言

    View Slide

  8. 8
    8
    Sequentialモデル

    ・・・
    レイヤー1 ユニット
    信号が流れる向き
    ● レイヤーが一直線につながったモデル

    ○ レイヤーはユニット(ニューロン)の集合

    ○ ユニットは入力に対して何らかの計算処理を行い後続のレイヤーに

    結果を伝搬

    model = tf.keras.models.Sequential()
    レイヤー2
    ● Sequentialモデルのインスタンスを作成
    ○ レイヤーやユニット、ユニット同士のつな
    がりは定義されていない

    View Slide

  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
    レイヤーの定義

    View Slide

  10. 10
    10
    レイヤーの定義
    ● Denseレイヤー

    ○ 前のレイヤーのユニットに対して全結合する

    ○ 各ユニットは以下の計算式に従って出力を計算する

    レイヤー Denseレイヤー
    :重み行列
    :入力の行列
    :バイアス
    :活性化関数
    ニューラルネットワーク節で登

    非線形問題への拡張に利用

    View Slide

  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,)))

    View Slide

  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
    モデルのコンパイル

    View Slide

  13. 13
    13
    モデルのコンパイル
    ● モデルの学習の過程を定義

    ○ 最適化手法(optimizer)を指定

    ■ 最適化手法一覧

    ○ 損失関数(loss)を指定

    ■ 損失関数一覧

    ○ 学習やテストの際にモデルの良さを評価する評価関数(metrics)を指定

    ■ 複数の評価関数を指定可能

    ■ 評価関数一覧

    ■ 学習中の重みパラメータの更新には影響はない

    View Slide

  14. 14
    :データ数
    :ラベル
    :特徴量
    14
    モデルのコンパイル
    model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate),
    loss="mean_squared_error",
    metrics=[tf.keras.metrics.RootMeanSquaredError()])
    ● 最適化手法には、RMSpropを指定して学習率を設定

    ● 損失関数には、平均二乗誤差を指定

    ● モデルの評価関数には、平均二乗誤差を指定

    : からラベルを予測する関数
    :データの集合

    View Slide

  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 バイアス:

    損失関数、評価関数: 


    View Slide

  16. 16
    16
    まとめ
    ● Kerasを使ったモデル構築について学んだ

    ○ Kerasを使ったモデルは、レイヤー(ユニットの集合)のつながりで

    表現される

    ○ Denseレイヤーは全レイヤーのユニットを全結合して、特定の計算式に従って
    出力を計算する

    ○ モデルのコンパイルでは、学習の過程で利用する最適化手法や

    損失関数、及びモデルの評価関数の設定を行う


    View Slide

  17. 17
    17
    参考
    ● Kerasについて

    ○ Module: tf.keras

    ● 最適化手法について

    ○ Goによる勾配降下法 - 理論と実践 -

    ○ Module: tf.keras.optimizers


    View Slide