170614 iclr reading-public

22
ICLR読み会資料: “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima” 読んだ人:石黒 勝彦(みらい翻訳/NTTドコモ)

Transcript of 170614 iclr reading-public

Page 1: 170614 iclr reading-public

ICLR読み会資料: “On Large-Batch Training for Deep Learning: Generalization Gap and

Sharp Minima”

読んだ人:石黒 勝彦(みらい翻訳/NTTドコモ)

Page 2: 170614 iclr reading-public
Page 3: 170614 iclr reading-public

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点とかほしい人生だった・・・

Page 4: 170614 iclr reading-public

目次

•着眼点:SGDのミニバッチは小さいほうが汎化するという経験

•論文の問: “大きいバッチSGD”, “小さいバッチSGD”の汎化性能の差はどこにあるのか?

•論文の主張:バッチが小さいとflatなminimizer, 大きいとsharpなminimizerに収束する

•数値実験結果で主張をサポート

•まとめ・所感など

Page 5: 170614 iclr reading-public

Stochastic Gradient Descent (SGD)

• 乱択した少数のサンプル群(ミニバッチ)だけで 勾配を近似してロスを最小化する • 計算が軽くなる(現実的に更新回数を稼げる)

• 性能もよく出る(近似の勾配だけど、よい解を得られる)

ミニバッチ: k回目の更新時に用いるサンプル点の部分集合

Gradient Descent: 一回の更新にO(M)かかる DLの世界だと厳しさがある

SGD: 一回の更新にO(|Bk| << M) しかかからない 現実的に更新できる

データ点i ∈ range(M)に対するロスfi(x)の勾配(の平均)を使ってパラメータxを更新していく

Page 6: 170614 iclr reading-public

興味:ミニバッチは「小さいほうが汎化性能が高い」という経験談 • ミニバッチは全サンプルの近似なので、本当はバッチサイズが大きいほうが良いはず • 正しい勾配に近い勾配が得られる

• バッチサイズが大きいほうがGPUでの並列計算度も稼げる

• 現実的には、小さいミニバッチで解いたほうが汎化性能が高い解が得られることが多い [cf. LeCun, 2012]

• なんで??

LeCun+, “Efficient backprop”, Neural networks: Tricks of the trade, pp. 9–48. Springer, 2012

Page 7: 170614 iclr reading-public

本論文の問い: “大きいバッチ(Large Batch, LB)”と “小さいバッチ(Small Batch, SB)”で、 SGDの汎化性能の差が生まれる理由は?

本論文の主張: “大きいバッチ”SGDはsharpなminimizer, “小さいバッチ”SGDはflatなminimizer に収束することが原因

Page 8: 170614 iclr reading-public

SBはこっち LBはこっち

パラメータ x

ロス

Flat vs. Sharp Minimizer

Page 9: 170614 iclr reading-public

手法:数値実験(識別問題)で直に検証

https://www.cs.toronto.edu/~kriz/cifar.html

Page 10: 170614 iclr reading-public

ネットワークの種類

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.

Page 11: 170614 iclr reading-public

まずは認識率でSBの優位性を確認

Training dataには どちらもほぼ完ぺきに適応

SB: 256 samples, LB: 10% (!!) of the all samples

Test dataで明確に差がつく

Page 12: 170614 iclr reading-public

疑問1: LB, overfitしているだけでは?

• 回答: NO!!

• したがって、earlystoppingは救いにならない

Page 13: 170614 iclr reading-public

疑問2: 本当にsharp/flat minimizer?

LBの解付近はとんがってる SBの解付近はflat

LBの解 SBの解

• 回答:可視化結果を見るとそうなっている・・・

• SB解とLB解を結ぶ直線上でCrossEntropy(目的関数)とAccuracy(識別率)を計算

Page 14: 170614 iclr reading-public

LBの解 SBの解 LBの解 SBの解

LBの解 LBの解 SBの解 SBの解 LBの解 SBの解

Page 15: 170614 iclr reading-public

疑問3:なぜSBはflat minimizerに到達するの?

• バッチサイズが小さいと勾配の分散が大きくなる 更新ごとに解が飛び回る

• それだけ飛び回っても「飛び出さない」だけ広い範囲のflatな局所解に落ち着く • Sharpな局所解にいたら飛び出して、上記のようなflatな局所解を探す

• バッチサイズが大きいと似たような解の周辺を「深く掘る」ように動く • 勾配の分散が小さいから

力強さがないですが、 正直、論文の中で一番くらい弱いところです

Page 16: 170614 iclr reading-public

疑問4:SBとLBは最適化として定性的に別物なの?

• 回答:Yes

• SBはsharpnessが低い解を、LBはsharpnessが高い解を追求している。つまり動き方が全然違う

Page 17: 170614 iclr reading-public

SBの探索力の強さ(⇔LBの探索力の弱さ)

• まずSBで100エポック学習そのあとでLBで学習

• LB数エポックでほぼ収束

Page 18: 170614 iclr reading-public

まとめ

• “大きいバッチSGD”はsharpなminimizer, “小さいバッチSGD”はflatなminimizerに収束する

• Flatなminimizerは汎化性能が高い

• バッチサイズによって明らかに最適化の振る舞いが異なる

• 以上を数値実験と可視化で確認した

• 計算時間的には大きいバッチのほうが有利だが、汎化性能の差を埋めるだけの方策はみつかっていない

Page 19: 170614 iclr reading-public

所感

• 大きいバッチサイズ、「N数の10%」なので大きすぎる。 • 実際こんなのは回せない

• N数の10%もとるなら勾配の分散が小さくなるのも妥当

• バッチサイズが256や512で”small batch”だということなので、実用的には問題なし(vanilla SGD使おう!)

• 面白い、そして大事な観点を明らかにしたgood paper.

Page 20: 170614 iclr reading-public

と思ったんですが、岡野原さんがフォロー論文(反論?)発掘してくださいました

NIPS17にsubmitぽいですね・・・

Page 21: 170614 iclr reading-public

論文読んだポイントとしては、 ・flatなminimaに行くには「更新回数」を稼がないといけない(というモデルがはまると著者は仮定している)

・同一エポック数での実験ではSBのほうが更新回数を稼げる ・更新回数の損を埋めるために、LBでは学習率を上げればいい(単純にはsqrt( |Bk| )倍する)

大きいミニバッチでも小さいミニバッチと同じくらい汎化できるやで・・・ 大きいミニバッチは汎化性能の低いSharp minimaに行ってまう・・・ でもこの論文でそうじゃないこと示したんだよなぁ・・・ 適切な修正すればでかいミニバッチでも汎化性能よくなるってな!

Page 22: 170614 iclr reading-public

以上です