渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

"Understanding Dropout" (Baldi, NIPS 2013) メモランダム

ちょっと今週は忙し過ぎて新しいことに取り組んでいる時間が1秒たりとも見つからないので、少し前にやった例の弊社分析チーム論文輪読会のネタをそのまま転載しておきますorz 元ネタはこちら。



ちなみに式を丸写しするのは面倒だったので、あくまでも資料として必要な部分にしかtexは書いてませんw ということで上記リンクから元論文をDLした上で、見比べながらお読みくださいw

1 Introduction


そもそもdropoutはNIPS 2012で提案されたナイスなアイデアで、汎化性能は高めるし良いことずくめ。ランダムフォレストで個々の木ごとにランダムに素性を選択するのと同じように、サンプルごとに形成されるNN同士の相関を下げ、精度向上に貢献する。


けれどもその理論的背景は今のところ不明。なので、0.5という数字にこだわる必要があるのかどうかも分からないし、層ごとに変えた方がいいんじゃないかとかそういうことも分かってない。なので、この研究ではそこのところを理論的に説明するための取り組みを行い、併せてシミュレーションによる検証も行ってみた。


2 Dropout in Linear Networks


とりあえず簡単のために線形ネットワークでどう表現できるかやってみた。基本的にはこの内容のアナロジーで残りもやっていく。


(1)式が線形ネットワークの基本的表現。Dropout ratioはベルヌーイ分布からなる二値データということにして、組み合わせてユニットに適用したのが(2)式。コネクションに適用したのが(3)式。以後簡単のためにユニットにdropoutを適用することだけを想定する。


ここで大事なのは(4)式で、全てのユニットの「活動」の期待値を算出している。この表記法を以下基本とする。

3 Dropout in Neural Networks


ここから本題のNNに移る。

3.1 Dropout in Shallow Neural Networks

まずは1層のみの普通のNNを想定。最初にn個のユニットからなる隠れ層1層を持つNNだと仮定し、ロジスティック・ユニットの式を立てる(使うのはごく普通のシグモイド関数みたいなやつ)。できるだけシンプルにしたいので、個々のユニットの出力O、対応する和S、それらの確率Pを定義しておく。NNなので、これらのアウトプットOはm = 2^n通りのサブネットワークから成ることに注意。


ここでは以下の4つの量を定める。アウトプットの平均E、アウトプットの補集合の平均E'、重み付き幾何平均G、補集合の重み付き幾何平均G'。その上で正規化済み重み付き幾何平均(NWGM)としてG/(G+G')を定める。これで(5)式の通りNWGM(O_1, \cdots, O_m) = \sigma(E(S))と表現できる(証明は(6-7)式)。その後のイタリックで強調されている箇所の通り、NWGMはdropoutの組み合わせの総和のシグモイド変換として表現することが可能であることになる。

3.2 Dropout in Deep Neural Networks

いよいよここからが本番。既にシグモイドで表現するところまではやっているので、まずdropoutなしのネットワークを(8)式の通りに立式する。これにdropoutを付け加えたのが(9)式。それぞれのユニットにおけるNWGMは(10)式のように表現できる。


ここで一旦(11)式のように「NWGMは期待値を良く近似し得る」と仮定する(証明は4章で行う)。3.1節の結果に従えば、NWGM(O^h_i) = \sigma^h_i[E(S^h_i)] と表現される。またE(S^h_i)は(13)式のような線形和で表現できることが示される。この(11, 12, 13)式がdropoutの近似表現として用いられる。


4 The Dropout Approximation


(11)式の証明をここで行う。[0,1]の出力O_1, \cdots, O_mとその確率P_1, \cdots, P_Mを与える。ここでの目標はNWGM(= G/(G+G'))でEをどれだけよく近似できるかを示すことにある。この先いくつか予備的なポイントが示される。


例えば(14)式は0 < O_i \leq 0.5のもとで成り立つ。これはG \leq NWGM \leq Eであることを示し、イェンゼンの不等式(Jensen's inequality)を関数log(x) - log(1-x)x \in (0,0.5]のもとで適用したものである。これだけでも1次の近似としてはそれなりに十分だが、もう少し良い証明を与えたい。


ここから2次の近似を考える。まずO_i = 0.5 + \epsilon_i, 0 \leq |\epsilon_i| \leq 0.5と置く。するとE(O) = 0.5 + E(\epsilon)かつVar(O) = Var(\epsilon)と直せる。ここでテイラー展開すると(15)式が得られる。3次以降の項R_3(\epsilon_i)は(16)式で表される。乗算部を展開すると(17)式になる。すなわちG = E(O) - Var(O) + R_3(\epsilon)。G'は同様にしてG' = 1 - E(O) - Var(O) + R_3(\epsilon)と書ける。


以下R_3(\epsilon)を無視できるとして近似していく。簡単のためE = E(O), V = Var(O)と表記を略すと、(19)式になる。ここからは単純にNWGM = G / (G + G')に従って計算して式変形していけば(20, 21)式に達する。ここで(1-2E) / (1-2V)は常に1かそれ以下であり、0-1のベルヌーイ分布に従う変数であればV \leq E(1-E)が常に成り立つ。すると(22)式になる。これで|E - NWGM|が常に非常に小さくなることが示された、ということになるらしい。。。


5 Dropout Dynamics


Dropoutはgradient descentで動く。学習率を適切に漸次下げていけば、SGD同様に確実に収束する。ということでgradientの性質をここでは確認する。

5.1 Single Linear Unit

2つのerror function、E_{ENS}(全ての可能なsubnetworkから成るアンサンブル)とE_D(dropoutされたもの)を置く。単純なインプットIに対して、それぞれ(23, 24)式のように置ける。(※ここでのtは教師信号?) そのgradientが(25,26)式。Dropoutのgradientはランダム変数なので、その期待値を求めることには意味がある。それを求めたのが(27)式。


ここで、dropoutによるgradientは正則化されたアンサンブル誤差のgradientになる。それが(28)式。この(28)式の第2項が正則化項のように振る舞い、オーバーフィッティングを抑止する。つまりdropoutは正則化項の大きさを与えると解釈できる。Dropout ratio p = 0.5が正則化項を最大にする。

5.2 Single Sigmoidal Unit

これをシグモイド関数に適用すると、O = \sigma(S) = \frac{1}{1 + ce^{-\lambda S}}として相対的エントロピー誤差E = -(tlogO + (1-t)log(1-O))を最小化するような学習をするというプロセスに置き換えられる。この場合(29)式がE_Dのgradientで、NWGM近似に基づくテイラー展開を用いると(30)式のようになる。すると、(28)式同様にdropoutによるgradientがアンサンブル誤差のgradientになると同時に、減衰項decay \lambdaによってチューニング可能になる。ここでの議論はそのままdeep networkに適用可能である。

5.3 Learning Phases and Sparse Coding

Dropoutを用いた学習においては、3段階のステップをたどる。(1)最初はweightは小さくランダムで、個々のユニットへの入力はどれもほぼ0でsubnetwork間のconsistencyも高い。なのでユニットからのアウトプットも概ねsubnetwork間で一定である、(2)学習が進むとconsistencyが下がりsubnetwork間での分散が大きくなる、(3)SGDが収束するとユニット間のconsistencyは一定値に向かって収束する。


最後に、単純のためにdropoutを第hレイヤーにのみ適用し、その手前の第lレイヤーまでには適用しないと仮定すると、その第hレイヤーでのactivity S^h_iの分散は(31)式で表せる。これによりその分散は以下の3つの要因に依存することがわかる。(1)dropoutの正則化効果に伴う小さなweight、(2)小さいactivity(全体としてdropoutはactivityを小さくする側に寄っていくためsparse codingになっていく)、(3)dropout ratioの大小。なのでdropout ratio p = 0.5と定めると正則化の効果は最大になるが収束が遅くなる。


6 Simulation Results


最後に今回示されたdropoutの性質を裏付けるシミュレーション結果を示す。用いたのはMNIST文字認識データで、セットアップは4層の隠れレイヤーを持つ784-1200-1200-1200-1200-10のdeep networkでPylearn2 / Theanoで実装。これをinput dropout 0.2, hidden layer dropout 0.5で走らせた。Fig. 1, 2とも概ね今回示された通りの結果であり、この研究の仮説を支持している。


以上のような感じで、dropout ratio = 0.5の時にL2正則化の効果が最大になる、ということが示されたというわけです。なのでDeep Learningを実装したりライブラリベースで導入した場合には、特に理由がない限りはdropout ratioは0.5で固定してしまって良いみたいです。