ホリケン's diary

趣味はでぃーぷらーにんぐ

The Lottery Tickets Hypothesis (宝くじ仮説) 解説&コード

概要

The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks ICLR2019 Best Paper Awards
「ランダムに初期化されたDNNモデルには、テスト精度でオリジナルモデルに匹敵するような小さいサブネットワーク(winning tickets)を内包している」という説。大きい(パラメータの多い)モデルほど一般的に汎化性能が高くなるのは、収束性能・汎化性能が高い構造(+初期値)を得る確率が高いからということで説明ができると唱えた。論文中では"A randomly-initialized, dense neural network contains a subnetwork that is initialized such that—when trained in isolation—it can match the test accuracy of the original network after training for at most the same number of iterations."と言葉を定義されている。図1ではwinning ticketsとランダムなsparse modelとの比較をしたものだが、ランダム なものに比べてwinning ticketsは収束速度も早く精度も高い水準を保っているのがわかる。

f:id:knto-h:20190524005214p:plain
図1: (左)early stoppingした学習iteration。(右)early stoppingした時のテスト精度。実線はwinning tickets、点線はランダムにサンプリンしたスパースモデル。

Winning Ticketsの見つけ方

  1. DNNモデルを初期化する。 f(x; \theta_0)
  2. DNNモデルを学習し、パラメータ \theta_jを獲得する。
  3.  \theta_jのうちp%のパラメータをpruningして、マスクmをえる。
  4. モデルのパラメータを \theta_0に初期化し、マスクを適用する。 f(x; m\odot\theta_0)

上のステップでwinning ticketsを得ている。one-shotに比べてiterative pruningの方が性能の良い(収束性・精度が高い)ticketsを見つけられるということでここでのpruningはiterativeを考える。

実験

  • data: MNIST
  • model structure: LeNet300-100
  • optimizer: Adam, lr=1.2e-3, weight_decay=1e-4
  • criterion: nll_loss
  • batch_size: 60
  • training iteration: 20000
  • prune rate: p=20%(prune 20% of weights at each 20000iterations) for 25 times

上記の実験設定でコードを回したところ以下の結果が得られた(実験コードについてはこの記事の一番下に貼った)。

f:id:knto-h:20190524014953p:plain
図2: (青線)iterative pruningによって見つけたwinning tickets。(赤線)ランダムにサンプリングしたsub-network。
f:id:knto-h:20190524015134p:plain
図3: それぞれのmodel sparsityにおけるテスト精度の比較。
図2の結果からwinning ticketsの方がどのsparsityにおいても比較的精度高く精度の落ち込みが遅いため、より正確なsub-networkを見つけられていることが分かる。図3の結果から収束速度もmodel sparsityが~1.8%までは収束速度が通常のモデルよりも早い事が分かる。これらによりモデル中のwinning ticketsの存在を確かめることができた。

実験コード:
github.com