Successfully reported this slideshow.
Your SlideShare is downloading. ×

2018年01月27日 Keras/TesorFlowによるディープラーニング事始め

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 21 Ad

2018年01月27日 Keras/TesorFlowによるディープラーニング事始め

Download to read offline

発表日:2018年01月27日
イベント名: AITCオープンラボ TensorFlow勉強会シリーズ2 成果報告会
イベントURL:http://aitc.jp/events/20180127-OpenLab/info.html
タイトル:Keras/TesorFlowによるディープラーニング事始め
発表者:野田 洋之氏

Kerasは高水準のニューラルネットワークライブラリであり、バックエンドと
してTensorFlowを使用でき、より迅速に、シンプルに、ニューラルネット
ワークを実装できます。
本発表では、ディープラーニング初心者に向け、手書き文字セットMINSTを学
習・予測するKerasのコードを、実演を交えて解説します。

サンプルコード:ipynb
AND http://www.aitc.jp/4b21e766/download.rbx?fileId=37f7e8383ef516fb&dirId=3
EXOR http://www.aitc.jp/4b21e766/download.rbx?fileId=70aef6fee200bde1&dirId=5
MNIST http://www.aitc.jp/4b21e766/download.rbx?fileId=e3632976bfa36a4a&dirId=3

発表日:2018年01月27日
イベント名: AITCオープンラボ TensorFlow勉強会シリーズ2 成果報告会
イベントURL:http://aitc.jp/events/20180127-OpenLab/info.html
タイトル:Keras/TesorFlowによるディープラーニング事始め
発表者:野田 洋之氏

Kerasは高水準のニューラルネットワークライブラリであり、バックエンドと
してTensorFlowを使用でき、より迅速に、シンプルに、ニューラルネット
ワークを実装できます。
本発表では、ディープラーニング初心者に向け、手書き文字セットMINSTを学
習・予測するKerasのコードを、実演を交えて解説します。

サンプルコード:ipynb
AND http://www.aitc.jp/4b21e766/download.rbx?fileId=37f7e8383ef516fb&dirId=3
EXOR http://www.aitc.jp/4b21e766/download.rbx?fileId=70aef6fee200bde1&dirId=5
MNIST http://www.aitc.jp/4b21e766/download.rbx?fileId=e3632976bfa36a4a&dirId=3

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to 2018年01月27日 Keras/TesorFlowによるディープラーニング事始め (20)

Advertisement

More from aitc_jp (20)

Recently uploaded (20)

Advertisement

2018年01月27日 Keras/TesorFlowによるディープラーニング事始め

  1. 1. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Keras/TesorFlowによる ディープラーニング事始め 2018年1月27日 TensorFlow勉強会シリーズ2 成果報告会 野田 洋之 (個人会員)
  2. 2. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Kerasとは • 高水準のニューラルネットワークライブラリ – 迅速に、シンプルに、ニューラルネットが実装できる • バックエンドとして TensorFlow をサポート • 日本語のドキュメントが整備されている 2 Keras Documentation (https://keras.io/ja/)
  3. 3. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 今回やったこと Keras により手書き文字データセット MINIST の学習、および 予測を実行。モデルはシンプルな全結合3層のネットワーク。 • ベースは Keras examples directory のサンプル mnist_mlp.py • ベースに対し次の点を変更 ➢訓練データとテスト用データの構成を変更 ➢TensorBoard用のコールバックを追加 ➢学習済みモデルにより予測をするコードを追加 3
  4. 4. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. MNISTとは 28x28ピクセル、グレースケールの手書き数字のデータセット。 訓練データ6万枚、テストデータ1万枚。 機械学習の実験用データとして使われることが多い。 個々のデータは入力データ(画像データ)と教師データ (正解データ)のペアで与えられている。 4 入力データ (画像データ) 教師データ 正解データ 6 2 4 3 4 1 0 6
  5. 5. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 訓練データの分割 今回、学習済みモデルでの予測をするため、学習には MNISTの訓練データを8:2に分割して使用。 5 訓練データ (60,000枚) テストデータ (10,000枚) テストデータ (test data) (10,000枚) 訓練データ (training data) (48,000枚) 検証データ (validation data) (12,000枚) 学習に使用 学習済みモデルによる 予測に使用
  6. 6. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 環境&インストール  環境 OS : Ubuntu 16.04 LTS (X64) Python : 3.5.4 (pyenv-virtualenv) TensorFlow : 1.4.1 Keras : 2.1.3  インストール pyenv-virtualenv 環境から pip でインストール。 • Keras/TensorFlow 関連のパッケージ 6 > pip install keras tensorflow jupyter • その他のパッケージ。 > pip install jupyter pandas matplotlib sklearn pydot
  7. 7. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. モデル 7  モデル ディープラーニングでは、ニューラルネットワークのこと。 ➢ ハイパーパラメータ 学習で決定できないパラメータ。 • モデルの層の数、活性化関数などモデルの構造に関わる パラメータ • ドロップアウトの割合、学習率など、学習の際のパラメータ ➢ パラメータ 学習で決定するパラメータ。バイアス、重みなど。
  8. 8. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 学習と予測 8  学習 訓練データと教師データのペアを入力として、最適化アルゴ リズムにより、損失が最小となるモデルのパラメータを決定 する。損失は、訓練データをモデルに入力し得られた出力と 教師データとの差で、損失関数で計算する。  予測 回帰や分類において、学習済みモデルにデータを入力し、 予測値を得ること。
  9. 9. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. エポックとバッチサイズ  エポック 全訓練データを1回学習に用いると1エポック。 学習のエポック数が6の場合、全訓練データを用いた学習を 6回繰り返す。  バッチサイズ 学習の際、訓練データからバッチサイズ数のデータを無作為 に抜き出し、最適化アルゴリズムによりパラメータを更新する (ミニバッチ学習)。訓練データが48,000個、バッチサイズが 100の場合、1エポックで480回ミニバッチ学習を実行する。 9
  10. 10. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. AND回路, OR回路 10 𝑥1 𝑥2 𝑦 0 0 0 1 0 0 0 1 0 1 1 1 𝑥1 𝑥2 𝑦 𝑥1 𝑥2 𝑦 𝑥1 𝑥2 𝑦 0 0 0 1 0 0 0 1 0 1 1 1
  11. 11. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. AND回路、OR回路のモデル AND回路、OR回路は1層のモデルで学習できる。 11 model = Sequential() model.add(Dense(units=1, activation='sigmoid', input_shape=(2,))) 𝑦 = ℎ 𝑏 + 𝑤1 𝑥1 + 𝑤2 𝑥2 𝑤 : 重み 𝑏 : バイアス ℎ() : 活性化関数 𝑥1 1 𝑥2 𝑦1 𝑤1 𝑤2 𝑏 入力の形状 出力の形状 活性化関数 通常の全結合ニューラル ネットワークレイヤー 入力層 出力層 ○ はノード,ニューロン
  12. 12. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ExOR回路 ExOR回路はAND回路とOR回路で実現できる。 12 𝑥1 𝑥2 𝑦 𝑥1 𝑥2 𝑦 0 0 0 1 0 1 0 1 1 1 1 0
  13. 13. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ExOR回路のモデル ExOR回路は2層のモデルで学習できる。 13 model = Sequential() model.add(Dense(units=2, activation='relu’, input_shape=(2,))) model.add(Dense(units=1, activation='sigmoid’)) 𝑥21 1 𝑥22 𝑦1 𝑤12 (1) 𝑥11 1 𝑥12 𝑤11 (1) 𝑤22 (1) 𝑤21 (1) 𝑏1 (1) 𝑏2 (1) 𝑏1 (2) 𝑤11 (2) 𝑤12 (2) 入力層 出力層中間層 (隠れ層)
  14. 14. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. MNISTサンプルプログラムのモデル KerasのMNISTサンプルプログラム (mnist_mlp.py) のモデル。 シンプルな全結合3層のネットワーク。 14 model = Sequential() model.add(Dense(512, activation='relu', input_shape=(28*28,))) model.add(Dropout(0.2)) model.add(Dense(512, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(num_classes, activation='softmax'))
  15. 15. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ドロップアウト ドロップアウトは、学習の際、一定割合で使用しないノードを 設定することで、予測に寄与しないノードが発生するのを 抑止する。ミニバッチごとに設定される。 15
  16. 16. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 活性化関数 ノードの入力の総和を変換する関数。 • 非線形関数であること • 微分可能であること 16 適用 種類 関数名 説明 中間層 ReLU関数 relu ℎ(𝑥) = max 0, 𝑥 = ቊ 0 (𝑥 < 0) 𝑥 (𝑥 ≥ 0) 出力層 回帰 恒等関数 linear ℎ(𝑥) = 𝑥 線形分類器。 分類 (2値変数) シグモイド 関数 sigmoid 出力は0から1.0の間の実数。 確率変数の出力に利用。 分類 (多値変数) ソフトマックス 関数 softmax 出力は0から1.0の間の実数。 出力の総和は1。 ソフトマックス関数の出力は確率と解 釈できる。 上記以外にも様々な活性化関数が用意されている。 活性化関数 - Keras Documentation
  17. 17. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 損失関数 モデルの出力と教師データ(正解データ)との差を計算する 関数。モデルをコンパイルする際に指定する。 17 適用 種類 関数名 説明 回帰 2乗和誤差 mean_squared_error 分類 (2値変数) 交差エントロピー 誤差 binary_crossentropy 分類 (多値変数) 交差エントロピー 誤差 categorical_crossentropy 上記以外にも様々な損失関数が用意されている。 損失関数 - Keras Documentation
  18. 18. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 最適化アルゴリズム ミニバッチ学習の際、最適なパラメータを計算するための アルゴリズム。モデルをコンパイルする際に指定する。 Keras で利用可能な最適化アルゴリズムは 最適化 - Keras Documentation を参照。 学習率など、いくつかのハイパーパラメータは、最適化アルゴリズムから 設定できる。  学習率 学習の際、どれくらいパラメータを更新するか、調整するハイパー パラメータ。大きすぎると発散し、小さすぎると学習が進まない。 18
  19. 19. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 分類(多値変数)のお約束 分類(多値変数)の予測モデルを構築する際(損失関数として categorical_crossentropy を使用する際)、お約束がある。  モデルの出力 モデルの出力は教師データのカテゴリ数とする。 MNISTの場合、0~9の10カテゴリなので、10次元とする。  教師データ 教師データを、次元がカテゴリ数のone-hot表現に変換する。one-hot表現 は、カテゴリに対応する次元が1、それ以外が0のベクトル。Kerasでは keras.utils.to_categorical 関数で、カテゴリカル変数をone-hot表現に変換で きる。 19 損失関数 - Keras Documentation より抜粋
  20. 20. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. TensorBoardログ出力 コールバックにより、TensorBoardのログの出力ができる。 コールバックに登録した関数は学習の際に実行される。 20 tb_cb = keras.callbacks.TensorBoard(log_dir=tb_log_dir, histogram_freq=1) cbks = [tb_cb] keras.callbacks.TensorBoard メソッドのインスタンスを取得。 log_dir : ログの出力先 histogram_freq : モデルの層の活性化ヒストグラムを計算する(エポック中の)頻度 history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, callbacks=cbks, verbose=1, validation_data=(x_target, y_target)) 学習を実行する際、オプションにコールバックのインスタンスを指定。
  21. 21. Copyright © 2018 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. TensorBoardログ出力 学習完了後、 tensorboard コマンドを実行。ブラウザで TensorBoard サーバー(デフォルトはポート6006)にアクセス。 21 > tensorboard --logdir [tensorboard_log_dir]

×