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.

160924 Deep Learning Tuningathon

6,902 views

Published on

Deep Learning Tuningathonの講義資料

Published in: Technology
  • Be the first to comment

160924 Deep Learning Tuningathon

  1. 1. Deep Learning 勉強会 パラメーターチューニングの極意 Takanori OGATA ABEJA Inc.
  2. 2. © ABEJA, Inc. Deep Learningのパラメータを理解し、チューニングを実践することで Deep Learningに関する理解を深める ■学べること ・どのパラメータを変えると実行速度や学習速度がどう変わるのか? ・ネットワークの構築方法を変えるとどう精度にインパクトするのか? ■対象 Deep Learningはある程度使ったことあるが、ネットワークの細かな チューニングはどうすればいいかわからない 目的
  3. 3. © ABEJA, Inc. Deep Learningに対する初学者以上の知識 Deep Learningで自分でネットワークを書いたことがある Python(numpy, tensorflow)に関する知識 Linux, SSH, AWSに関する知識 今回の勉強会の対象者
  4. 4. Deep Learningをマスターするためには?
  5. 5. ネットワークの気持ちを理解することが重要
  6. 6. ネットワークの気持ちを理解するためには?
  7. 7. © ABEJA, Inc. • 実践あるのみ • 問題設定や、ネットワークの構造でチューニングの仕方は異なるので、 量をこなすことが重要 • 色々なデータセットでTrainingしてみる • パラメータを変えて結果がどう変わるか計測してみる • 様々な論文を読んで、ある問題に対してどのようなアーキテクチャやパ ラメータを使っているか読み解く ネットワークの気持ちを理解するためには?
  8. 8. © ABEJA, Inc. ・Ubuntu 16.04 on AWS ・Tensorflow + Keras(https://keras.io/) 今回使う環境 Kerasを使ったCNNのSample
  9. 9. © ABEJA, Inc. 全結合層 畳み込み層 プーリング層 ネットワークの深さ 活性化関数 出力の正規化 Dropout 重みの正則化 Deep Learningのパラメーター ❶モデル系 ❷最適化系 ❸その他 学習率 (最適化のアルゴリズム) Batch Size Epoch数 Data Augmentation Weight Initialization データの事前処理 *今回は主要なところのみ紹介
  10. 10. © ABEJA, Inc. 全結合層 畳み込み層 プーリング層 ネットワークの深さ 活性化関数 出力の正規化 Dropout 重みの正則化 Deep Learningのパラメーター 学習率 (最適化のアルゴリズム) Batch Size Epoch数 Data Augmentation Weight Initialization データの事前処理 ❶モデル系 ❷最適化系 ❸その他 *今回は主要なところのみ紹介
  11. 11. © ABEJA, Inc. 全結合層(Fully Connected Layer) ■主要パラメータ ・隠れ層の数 ■学習パラメータの総数 パラメータの総数は Input * hidden + bias 入力が4096次元、hiddenが512だと 4096*512+512 = 2,097,664 *少ないほうが速度、イテレーション数ともに速く学習できる事が多い
  12. 12. © ABEJA, Inc. 全結合層(Fully Connected Layer) 大 Hidden layerの数 小 Pros 表現力が高い 省パラメータ 学習が早い Cons 過学習しやすい 学習が遅い 少なすぎると精度が落ちる 学習できないことがある
  13. 13. © ABEJA, Inc. 畳み込み層(Convolutional Layer) ■主要パラメータ ・カーネルサイズ ・フィルタの数 ■学習パラメータの総数 Weightsの総数(≒パラメータの総数, Biasは除く)は Channel * Height * Width * Filters 入力が(ch, h, w) = (32, 32, 32), カーネルサイズが(h, w) = (3, 3), フィルタ数 f = 64とすると 32 * 3 * 3 * 64 = 18,432 *全結層と比べると意外と少なくなる、CNNがうまくいく理由の1つ
  14. 14. © ABEJA, Inc. 畳み込み層(Convolutional Layer) 大 カーネルサイズ 小 Pros より広い範囲の領域から 影響を受けることができる 省パラメータ 実行速度は早い Cons パラメータ大 実行速度が遅くなる 局所的な影響しか受けない * 最初の層は大きめのカーネル(ex, 7x7)、最後の方は3x3, 1x1のカーネルを使うのが主流 大 フィルタの数 小 * 全結合層の隠れ層と同じような雰囲気 Pros 表現力が高い 省パラメータ 学習が早い Cons 過学習しやすい 学習が遅い 少なすぎると精度が落ちる 学習できないことがある
  15. 15. © ABEJA, Inc. ネットワークの深さ ■主要パラメータ 何段、全結合や畳込みを積むか? ■学習パラメータの総数 積んだ分だけ増える
  16. 16. © ABEJA, Inc. ネットワークの深さ 大 ネットワークの深さ 小 Pros 表現力が高い 省パラメータ 学習が早い Cons 過学習しやすい 勾配消失問題が発生する 学習が遅い 少なすぎると精度が落ちる 学習できないことがある *勾配が消えないような工夫をして、 3x3, 1x1の畳み込みを多段に重ねるのが主流 *どのくらい深いほうがいいのかは、研究でも注目されている、奥が深い
  17. 17. © ABEJA, Inc. 活性化関数(Activation Function) ■主要パラメータ ・活性化関数の種類(relu, pleru, elu, sigmoid, tanh, etc…) とりあえず始めは、畳み込みにはReLU使って置けば良い。 Outputの層だけ、タスクに応じて変更する必要あり (クラス分類ならSoftmax, RegressionならSigmoid, tanh等)
  18. 18. © ABEJA, Inc. 出力の正規化(Normalization) ■主要パラメータ Local Response Normalization (LRN), Batch Normalization, etc… ■コメント かなり重要だが、最初は気にしなくて良いので サーバーが学習してくれてる間に、みなさんはBatch Normalization[1]を学習しましょう。
  19. 19. © ABEJA, Inc. Dropout ■主要パラメータ Dropoutの確率 p (0.0 – 1.0) Dropoutをどの層の間に挟むか(入れる or not) Pros 過学習しにくくなる 省パラメータ 学習が早い Cons 学習が遅い (たくさんIterationを 回さないといけない) 過学習しやすくなる 大 生起確率 小
  20. 20. © ABEJA, Inc. 重みの正則化(Weight Decay) Overfittingを避けるためにLossに重みの正則化項を加える つまり、トータルのコスト = タスクに設定したロス + 重みλ *Ω(θ) ■主要パラメータ ・L1 or L2の正則化の選択(or ブレンド) ・重みλ Pros 過学習しにくくなる 省パラメータ 学習が早い Cons 学習が遅い (たくさんIterationを 回さないといけない) 過学習しやすくなる 大 重み 小 Overfittingの例[3] where [2]
  21. 21. © ABEJA, Inc. 全結合層 畳み込み層 プーリング層 ネットワークの深さ 活性化関数 出力の正規化 Dropout 重みの正則化 Deep Learningのパラメーター 学習率 (最適化のアルゴリズム) Batch Size Epoch数 Data Augmentation Weight Initialization データの事前処理 ❶モデル系 ❷最適化系 ❸その他 *今回は主要なところのみ紹介
  22. 22. © ABEJA, Inc. 学習率(Learning Rate) ■主要パラメータ *SGDの場合 学習率(Learning Late) モーメンタム(Momentum, Nestrov option) 減衰率(Decay)
  23. 23. © ABEJA, Inc. 学習率(Learning Rate) 学習率λ(Learning Late) θ = θ - λ∇θ 一回のバッチ更新でどのぐらいパラメータをアップデートするか *学習時にLossの推移を見るのは非常に重要 ■決め方 データ、ロス関数に大きく依存 *学習中にLearning Late, Momentum, 減衰率について調べて みましょう [5] ■自動的に決めてくれないの。。。? Adagrad, Adadelta, Adam等様々なアルゴリズムが考案されている が今回は使わない 学習率の初期値によるLossの推移 [4]
  24. 24. © ABEJA, Inc. Batch Size & Epoch *省略 口頭で説明します
  25. 25. © ABEJA, Inc. 全結合層 畳み込み層 プーリング層 ネットワークの深さ 活性化関数 出力の正規化 Dropout 重みの正則化 Deep Learningのパラメーター 学習率 (最適化のアルゴリズム) Batch Size Epoch数 Data Augmentation Weight Initialization データの事前処理 ❶モデル系 ❷最適化系 ❸その他 *今回は主要なところのみ紹介
  26. 26. © ABEJA, Inc. Data Augmentation ■主要パラメータ 増やし方(回転、反転、スケーリング、ノイズの追加 etc…) 増やす枚数 *基本的には増やしたほうがベター http://www.slideshare.net/KenChatfield/chatfield14-devil Pros 過学習しにくくなる 精度向上 *じっくりチューニングする場合 はこちら 学習が早い *Try and Errorの際はこちら Cons 学習が遅くなる 過学習しやすくなる 大 データ枚数 小
  27. 27. © ABEJA, Inc. Weight Initialization *省略 口頭で説明します
  28. 28. © ABEJA, Inc. データの前処理 Inputデータを学習しやすくするために加工する *データに依存するが基本的にやったほうが良い ■主要パラメータ 前処理の方法 ・データ範囲を全て[0.0, 1.0]に変換 ・データを中心化 ・PCA Whitening ・ZCA Whitening Etc…
  29. 29. © ABEJA, Inc. チューニングのコツ ・一度の学習でパラメータの変更は1つまで ・毎回の学習方法と結果を記録しておく ・Train-Validation Lossを見て過学習していないかチェック ・TrainingデータとTestingデータはきちんと分けておく、毎回同じものを 使う
  30. 30. © ABEJA, Inc. BackendでTensorflowを使っているので、Tensorboardを利用すると効果的に学習結果を 表示できます *Train-Validation Lossを可視化するのはかなり重要! その他 https://www.tensorflow.org/versions/r0.10/how_tos/summaries_and_tensorboard/index.html
  31. 31. ルール説明
  32. 32. © ABEJA, Inc. みんなでパラメーター調整によりCifar10の精度を競います ■評価 ・精度 ・改良したコードのオシャレ度 ■縛り ・複雑なネットワーク(GoogleNet, ResNet, etc..)は使わない (難しいことしたい場合は要相談) ・今回はネットワークの気持ちを理解するために、最適化はSGDのみを利用 ・エポック数はMax200まで ルール説明
  33. 33. © ABEJA, Inc. みなさんがチューニングに注力できるようベースのコードを用意しています 下記コマンドを実行してテンプレをGet! ソースコード(テンプレ) git clone git@github.com:abeja-inc/deep_learning_tuningathon.git
  34. 34. © ABEJA, Inc. 空き時間を利用して、 ・資料内の分からないキーワードを調査&学習 ・実行内容と結果をまとめていく ・最終発表の準備 機械が学習している間に。。。
  35. 35. Enjoy Deep Learning!
  36. 36. © ABEJA, Inc. [1] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deepnetwork training by reducing internal covariate shift. In ICML, 2015. [2] http://deeplearning.net/tutorial/gettingstarted.html [3] Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Deep learning. Book in preparation for MIT Press, 2016 [4] http://cs231n.github.io/neural-networks-3/ [5] http://sebastianruder.com/optimizing-gradient-descent/ 引用文献

×