Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ミニバッチサイズと学習率の関係 /small-batch-learning

ミニバッチサイズと学習率の関係 /small-batch-learning

Miyakawa Taku

July 17, 2018
Tweet

More Decks by Miyakawa Taku

Other Decks in Programming

Transcript

  1. ミニバッチサイズと学習率の関係
    2018-07-17
    宮川 拓

    View Slide

  2. 動機
    ⚫ 確率的勾配降下法(SGD)では、訓練セッ
    ト全体ではなく、m個のサンプル=ミニ
    バッチを用いて重みを更新する
    ⚫ mは、メモリが許す限り大きければ大きい
    方がいいのだろう、と勝手に決めつけてい
    たけど、実はそうでもないらしい
    2/15

    View Slide

  3. 元ネタ
    ⚫ Dominic Masters and Carlo Luschi,
    “Revisiting Small Batch Training for Deep
    Neural Networks”
    ◼ 著者はGraphcoreというML用チップ製造
    スタートアップの人たち
    ◼ ミニバッチサイズと、学習率、モデルの
    性能の関係を調べた論文
    3/15

    View Slide

  4. 先に結論
    ⚫ ミニバッチのサイズは小さめの方が良い
    ◼ テストデータに対する性能が良くなる
    ◼ 学習が発散しない学習率の幅が広くなる
    ⚫ ミニバッチのサイズを小さくすると、GPU
    等を使った時に計算の並列度が低くなるが、
    これは計算を複数のコア、マシンに分散す
    ることで相殺できるかも
    4/15

    View Slide

  5. Background
    5/15

    View Slide

  6. この章の概要
    ⚫ 小さいミニバッチのほうが優れていそうだ、
    ということの理論的根拠を示す
    6/15

    View Slide

  7. 一般的なSGDのアルゴリズム
    ⚫ +1
    =
    + η − 1

    σ
    =1



    (2, 3)
    ◼ ただし、η : 学習率
    ◼ ∇
    : 各featureの傾斜


    : サンプルiに対する損失
    ⚫ ここでサンプルごとに
    ◼ 重みの更新値の期待値は、/に比例
    ◼ Cov(重みの更新値)の期待値は、m≪M
    の時、2/に比例
    7/15

    View Slide

  8. 和で重みを更新するアルゴリズム
    ⚫ ここで、(2, 3)に = ෤
    を代入
    ◼ +1
    =
    + ෤
    σ
    =1



    (5)
    ◼ つまり、損失の平均ではなく、損失の和を
    使って重みを更新するように変形した
    ◼ ෤
    を「ベース学習率」と呼んでいる
    ⚫ ここでサンプルごとに
    ◼ 重みの更新値の期待値は ෤
    に比例
    ◼ Cov(重みの更新値)の期待値はm≪Mの時、

    2 ∙ に比例
    8/15

    View Slide

  9. バッチサイズ変更の意味
    ⚫ (5)において、n回の重み更新は次式のよう
    に表される
    ◼ +
    =
    − ෤
    σ
    =0
    −1 σ
    =1

    +
    +
    (7)
    ⚫ ここで、バッチサイズをn倍することは、
    次式による重み更新を行うことを意味する
    ◼ +1
    =
    − ෤
    σ
    =0



    (8)
    ⚫ (8)は、勾配の更新頻度を少なくした、(7)
    の近似計算とみなせる
    9/15

    View Slide

  10. バッチサイズ変更の意味
    ⚫ 重みの更新に損失の平均を使う式(2, 3)の
    観点では、mが大きい方がよく見える。訓
    練データ全体を使う場合(m=M)のより
    正確な近似になるから
    ⚫ しかし、サンプルごとの重み更新値の期待
    値を一定化する観点からは、逆に見える。
    ⚫ また、Cov(重みの更新値)は ෤
    2 ∙ に比例す
    るので、mが小さければより大きなベース
    学習率が許容できる
    10/15

    View Slide

  11. バッチサイズ変更の意味?
    ⚫ 「バッチサイズが小さいと、複数エポック
    回した時に、ミニバッチのバリエーション
    が増えるからいいんじゃないか」みたいな
    議論をどこかで読んだけど、本論文では触
    れられてなかった
    11/15

    View Slide

  12. Batch Normalizationに関する議論
    ⚫ 省略!
    12/15

    View Slide

  13. 実験
    13/15

    View Slide

  14. 実験
    ベ ー ス 学 習 率 が 大 き い 場 合 、
    バ ッ チ サ イ ズ を 小 さ く 保 つ
    必 要 が あ る
    バ ッ チ サ イ ズ が 小 さ け れ ば 、
    大 き な ベ ー ス 学 習 率 が 許 容
    で き る
    データセット、ネットワーク、BN有無、
    Augmentation有無などによらず、傾向は同じ
    14/15

    View Slide

  15. 実験結果
    最良の結果はm=2~32の範囲に集中
    実験ごとに、どの(ベース学習率xバッチサイズ)で
    良い結果が得られたか。縦棒の太いところが良い結果
    15/15

    View Slide