More Related Content
Similar to 160924 Deep Learning Tuningathon (20)
More from Takanori Ogata (15)
160924 Deep Learning Tuningathon
- 2. © ABEJA, Inc.
Deep Learningのパラメータを理解し、チューニングを実践することで
Deep Learningに関する理解を深める
■学べること
・どのパラメータを変えると実行速度や学習速度がどう変わるのか?
・ネットワークの構築方法を変えるとどう精度にインパクトするのか?
■対象
Deep Learningはある程度使ったことあるが、ネットワークの細かな
チューニングはどうすればいいかわからない
目的
- 3. © ABEJA, Inc.
Deep Learningに対する初学者以上の知識
Deep Learningで自分でネットワークを書いたことがある
Python(numpy, tensorflow)に関する知識
Linux, SSH, AWSに関する知識
今回の勉強会の対象者
- 7. © ABEJA, Inc.
• 実践あるのみ
• 問題設定や、ネットワークの構造でチューニングの仕方は異なるので、
量をこなすことが重要
• 色々なデータセットでTrainingしてみる
• パラメータを変えて結果がどう変わるか計測してみる
• 様々な論文を読んで、ある問題に対してどのようなアーキテクチャやパ
ラメータを使っているか読み解く
ネットワークの気持ちを理解するためには?
- 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
過学習しやすい
学習が遅い
少なすぎると精度が落ちる
学習できないことがある
- 17. © ABEJA, Inc.
活性化関数(Activation Function)
■主要パラメータ
・活性化関数の種類(relu, pleru, elu, sigmoid, tanh, etc…)
とりあえず始めは、畳み込みにはReLU使って置けば良い。
Outputの層だけ、タスクに応じて変更する必要あり
(クラス分類ならSoftmax, RegressionならSigmoid, tanh等)
- 20. © ABEJA, Inc.
重みの正則化(Weight Decay)
Overfittingを避けるためにLossに重みの正則化項を加える
つまり、トータルのコスト = タスクに設定したロス + 重みλ *Ω(θ)
■主要パラメータ
・L1 or L2の正則化の選択(or ブレンド)
・重みλ
Pros 過学習しにくくなる
省パラメータ
学習が早い
Cons
学習が遅い
(たくさんIterationを
回さないといけない)
過学習しやすくなる
大
重み
小
Overfittingの例[3]
where [2]
- 23. © ABEJA, Inc.
学習率(Learning Rate)
学習率λ(Learning Late)
θ = θ - λ∇θ
一回のバッチ更新でどのぐらいパラメータをアップデートするか
*学習時にLossの推移を見るのは非常に重要
■決め方
データ、ロス関数に大きく依存
*学習中にLearning Late, Momentum, 減衰率について調べて
みましょう [5]
■自動的に決めてくれないの。。。?
Adagrad, Adadelta, Adam等様々なアルゴリズムが考案されている
が今回は使わない
学習率の初期値によるLossの推移 [4]
- 26. © ABEJA, Inc.
Data Augmentation
■主要パラメータ
増やし方(回転、反転、スケーリング、ノイズの追加 etc…)
増やす枚数
*基本的には増やしたほうがベター
http://www.slideshare.net/KenChatfield/chatfield14-devil
Pros
過学習しにくくなる
精度向上
*じっくりチューニングする場合
はこちら
学習が早い
*Try and Errorの際はこちら
Cons 学習が遅くなる 過学習しやすくなる
大
データ枚数
小
- 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/
引用文献