Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

228 views

Published on

発表日: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

Published in: Internet
  • Be the first to comment

  • Be the first to like this

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]

×