情報学部大学生のダラダラ日記

β日記

機械学習や日記っぽいものを書きます

SGDを使うにあたってのハイパーパラメータの設定(論文紹介③ Control Batch Size and Learning Rate to Generalize Well: Theoretical and Empirical Evidence)

スポンサーリンク

概要

深層学習において、確率的勾配降下法(SGD)はOptimizerとして良い結果を出しており、SGDをより良く動かすためにハイパーパラメータの調整が必要。複数あるハイパーパラメータのうち、特にバッチサイズ(Batch Size)と学習率(Learning Rate)に着目し、どのように設定すべきかを解析的に考えた論文。数値解析の結果、バッチサイズの大きさSと学習率ηの比S/ηが小さいほどより良い結果となる。

 

papers.nips.cc

 

予測損失と経験損失

本来最小化したい損失は予測損失である。

f:id:Parco1021:20200930015555p:plain

しかし、データの分布Dがわからないため予測損失と近似することのできる経験損失を用意する。

f:id:Parco1021:20200930015658p:plain

できるだけ経験損失が予測損失と近くなるようにアルゴリズムを設定したい。以後、経験損失を最小化することを目的とする。

 

解析的証明(略)

※具体的な証明は別で記事にする…かもしれません※

経験損失と予測損失の差(≒アルゴリズムの良さ)の変数部分をIと置く。また、バッチサイズと学習率の比をk(=|S|/η)と置き、Iをkで微分すると以下になる。

f:id:Parco1021:20200930014428p:plain

パラメータ数dが十分に大きい、具体的に以下の条件を満たすと仮定すると∂I/∂kは常に正となる。

f:id:Parco1021:20200930015120p:plain

この時、変数kはS,η>0より予測損失と経験損失の差はk>0で単調増加である。よってバッチサイズと学習率の比が予測損失と経験損失の差と正の相関がある。つまりaccuracyとは負の相関があるということでありkが小さいほどより良い結果が得られると期待できる。この時、むやみにkを小さくすれば良いというわけではなく、あくまで上記のdの範囲内であることに注意。

 

実験

  • モデル…ResNet-110,VGG-19
  • データセット…CIFAR-10,CIFAR-100
  • バッチサイズ…16,32,48,64,80,96,112,128,144,160,176,192,208
  • 学習率…0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19,0.20
  • エポック数…200

以上の実験設定でテスト誤差(accuracy)を比較。スピアマンの順位相関係数(SCC)を求める。

 

実験結果

Ⅰバッチサイズとaccuracy

表左部の学習率で固定し、バッチサイズとaccuracyでSCCを取る。SCCが全てのケースで-1.0付近なのでバッチサイズとaccuracyは負の相関がある。

f:id:Parco1021:20200930010858p:plain

 

Ⅱ 学習率とaccuracy

表左部のバッチサイズで固定し、学習率とaccuracyでSCCを取る。SCCが全てのケースで1.0付近なのでバッチサイズとaccuracyは正の相関がある。

f:id:Parco1021:20200930011151p:plain

 

Ⅲ バッチサイズと学習率の比とaccuracy

横軸にBSとLRの比(=k)、縦軸にaccuracyをとると負の相関があることがわかる。

f:id:Parco1021:20200930011353p:plain

f:id:Parco1021:20200930011406p:plain

 

まとめ

数値解析と実験結果から、バッチサイズと学習率の比が予測損失と経験損失の差と正の相関(=accuracyと負の相関)があることがわかった。よってSGDで学習率を行う時はバッチサイズを小さく、学習率を大きくすると結果が良くなると期待できる。しかし、パラメータの制約等があるためむやみに大きくor小さくすれば良いというわけではない。

スポンサーリンク