170614 iclr reading-public
-
Upload
katsuhiko-ishiguro -
Category
Technology
-
view
20.086 -
download
0
Transcript of 170614 iclr reading-public
ICLR読み会資料: “On Large-Batch Training for Deep Learning: Generalization Gap and
Sharp Minima”
読んだ人:石黒 勝彦(みらい翻訳/NTTドコモ)
OpenReviewの結果
Rating: 6: Marginally above acceptance threshold
Rating: 10: Top 5% of accepted papers, seminal paper Review: …… the work is of great value in shedding light into some interesting questions around generalization of deep networks. …….. such results may have impact on both theory and practice, respectively by suggesting what assumptions are legitimate for real scenarios for building new theories, or be used heuristically to develop new algorithms ….
Rating: 8: Top 50% of accepted papers, clear accept Review: Interesting paper, definitely provides value to the community by discussing why large batch gradient descent does not work too well
Final Decision Comment: All reviews (including the public one) were extremely positive, and this sheds light on a universal engineering issue that arises in fitting non-convex models. I think the community will benefit a lot from the insights here. Decision: Accept (Oral)
10点とかほしい人生だった・・・
目次
•着眼点:SGDのミニバッチは小さいほうが汎化するという経験
•論文の問: “大きいバッチSGD”, “小さいバッチSGD”の汎化性能の差はどこにあるのか?
•論文の主張:バッチが小さいとflatなminimizer, 大きいとsharpなminimizerに収束する
•数値実験結果で主張をサポート
•まとめ・所感など
Stochastic Gradient Descent (SGD)
• 乱択した少数のサンプル群(ミニバッチ)だけで 勾配を近似してロスを最小化する • 計算が軽くなる(現実的に更新回数を稼げる)
• 性能もよく出る(近似の勾配だけど、よい解を得られる)
ミニバッチ: k回目の更新時に用いるサンプル点の部分集合
Gradient Descent: 一回の更新にO(M)かかる DLの世界だと厳しさがある
SGD: 一回の更新にO(|Bk| << M) しかかからない 現実的に更新できる
データ点i ∈ range(M)に対するロスfi(x)の勾配(の平均)を使ってパラメータxを更新していく
興味:ミニバッチは「小さいほうが汎化性能が高い」という経験談 • ミニバッチは全サンプルの近似なので、本当はバッチサイズが大きいほうが良いはず • 正しい勾配に近い勾配が得られる
• バッチサイズが大きいほうがGPUでの並列計算度も稼げる
• 現実的には、小さいミニバッチで解いたほうが汎化性能が高い解が得られることが多い [cf. LeCun, 2012]
• なんで??
LeCun+, “Efficient backprop”, Neural networks: Tricks of the trade, pp. 9–48. Springer, 2012
本論文の問い: “大きいバッチ(Large Batch, LB)”と “小さいバッチ(Small Batch, SB)”で、 SGDの汎化性能の差が生まれる理由は?
本論文の主張: “大きいバッチ”SGDはsharpなminimizer, “小さいバッチ”SGDはflatなminimizer に収束することが原因
SBはこっち LBはこっち
パラメータ x
ロス
Flat vs. Sharp Minimizer
手法:数値実験(識別問題)で直に検証
https://www.cs.toronto.edu/~kriz/cifar.html
ネットワークの種類
C1, C2: AlexNet Krizhevsky+, “Imagenet classification with deep convolutional neural networks”, NIPS 2012. C3, C4: VGG Simonyan and Zissermanl, “Very deep convolutional networks for large-scale image Recognition”, arXiv preprint arXiv:1409.1556, 2014.
まずは認識率でSBの優位性を確認
Training dataには どちらもほぼ完ぺきに適応
SB: 256 samples, LB: 10% (!!) of the all samples
Test dataで明確に差がつく
疑問1: LB, overfitしているだけでは?
• 回答: NO!!
• したがって、earlystoppingは救いにならない
疑問2: 本当にsharp/flat minimizer?
LBの解付近はとんがってる SBの解付近はflat
LBの解 SBの解
• 回答:可視化結果を見るとそうなっている・・・
• SB解とLB解を結ぶ直線上でCrossEntropy(目的関数)とAccuracy(識別率)を計算
LBの解 SBの解 LBの解 SBの解
LBの解 LBの解 SBの解 SBの解 LBの解 SBの解
疑問3:なぜSBはflat minimizerに到達するの?
• バッチサイズが小さいと勾配の分散が大きくなる 更新ごとに解が飛び回る
• それだけ飛び回っても「飛び出さない」だけ広い範囲のflatな局所解に落ち着く • Sharpな局所解にいたら飛び出して、上記のようなflatな局所解を探す
• バッチサイズが大きいと似たような解の周辺を「深く掘る」ように動く • 勾配の分散が小さいから
力強さがないですが、 正直、論文の中で一番くらい弱いところです
疑問4:SBとLBは最適化として定性的に別物なの?
• 回答:Yes
• SBはsharpnessが低い解を、LBはsharpnessが高い解を追求している。つまり動き方が全然違う
SBの探索力の強さ(⇔LBの探索力の弱さ)
• まずSBで100エポック学習そのあとでLBで学習
• LB数エポックでほぼ収束
まとめ
• “大きいバッチSGD”はsharpなminimizer, “小さいバッチSGD”はflatなminimizerに収束する
• Flatなminimizerは汎化性能が高い
• バッチサイズによって明らかに最適化の振る舞いが異なる
• 以上を数値実験と可視化で確認した
• 計算時間的には大きいバッチのほうが有利だが、汎化性能の差を埋めるだけの方策はみつかっていない
所感
• 大きいバッチサイズ、「N数の10%」なので大きすぎる。 • 実際こんなのは回せない
• N数の10%もとるなら勾配の分散が小さくなるのも妥当
• バッチサイズが256や512で”small batch”だということなので、実用的には問題なし(vanilla SGD使おう!)
• 面白い、そして大事な観点を明らかにしたgood paper.
と思ったんですが、岡野原さんがフォロー論文(反論?)発掘してくださいました
NIPS17にsubmitぽいですね・・・
論文読んだポイントとしては、 ・flatなminimaに行くには「更新回数」を稼がないといけない(というモデルがはまると著者は仮定している)
・同一エポック数での実験ではSBのほうが更新回数を稼げる ・更新回数の損を埋めるために、LBでは学習率を上げればいい(単純にはsqrt( |Bk| )倍する)
大きいミニバッチでも小さいミニバッチと同じくらい汎化できるやで・・・ 大きいミニバッチは汎化性能の低いSharp minimaに行ってまう・・・ でもこの論文でそうじゃないこと示したんだよなぁ・・・ 適切な修正すればでかいミニバッチでも汎化性能よくなるってな!
以上です