LoginSignup
5
4

More than 5 years have passed since last update.

論文まとめ:Shake-Shake regularization

Last updated at Posted at 2019-01-26

はじめに

ICLR2017から正則化関連の以下の論文
[1] X. Gastaldi, "Shake-Shake regularization"
のまとめ。

arXiv:
https://arxiv.org/abs/1705.07485

著者のGithubコード:
https://github.com/xgastaldi/shake-shake
torchを使ってる。

概要

  • 正則化の1つ
  • ResNetのredisual block における 2 つの経路に対して順伝播時はランダムな掛け率 $\alpha$と$1 - \alpha$ で足し合わせる。
  • 逆伝播時は $\alpha$ とは異なる $\beta$ を用いて計算する

しくみ

以下の[1]Figure 1 で説明する。

shake_shake_01.png

図のような residualなstreamが2つある場合を考える。単純なresidual blockだと

x_{i + 1} = x_i + \mathcal{F}(x_i, \mathcal{W}_i^{(1)}) + \mathcal{F}(x_i, \mathcal{W}_i^{(2)})

と3つを足す。

shake-shakeでは乱数 $\alpha_i \in [0,1]$ を発生させて

x_{i + 1} = x_i + \alpha_i \mathcal{F}(x_i, \mathcal{W}_i^{(1)}) + (1-\alpha_i)\mathcal{F}(x_i, \mathcal{W}_i^{(2)})

とする。(Figure 1 の左)

通常の勾配降下法で誤差逆伝播させると勾配はそれぞれ $\alpha$ 、 $1-\alpha$ で伝わるが、ここは別の乱数 $\beta \in [0,1]$ を発生させて、それぞれ $\beta_i$ 、 $1 - \beta_i$ とする。(Figure 1 の中央)

推論時はそれぞれ $0.5$ の掛け率で足し合わせる。(Figure 1 の右)

実験と結果 

書きかけ

shake, even, keep の比較

  • shake:shake-shakeをする
  • keep:forwardでshakeした掛け率をbackwardでも使う
  • even:0.5、0.5の掛け率を使用

としてそれをmini-batchレベルとimageレベルで行い、性能を比較した。使用したモデルはresnet系。用いたデータはCifar-10

shake_shake_10.png

imageレベルでforwardもbackwardもshake-shakeしたものが一番性能がいい。

他の有名モデルとの比較

Cifar-10で他の有名モデルとtest errorを比較したものが以下。

shake_shake_13.png

DenseNetやResNeXtに勝ってる。

backwardの掛け率を変化させた時の性能の変化

shake_shake_16.png

shake_shake_17.png

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4