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