論文読み Adam Induces Implicit Weight Sparsity in Rectifier Neural Networks
活性化関数にReLU、optimizerにAdamを使い、lossにL2正則化項を加えてDNNを学習させた場合に重みのスパース化(多くの重みがほぼ0になる)が起こりやすいという現象についての論文です。これを利用して、重みが0になったノードを削除してモデルのサイズを小さくするmodel reductionを提案しています。 著者は東芝と理研の方で日経新聞の記事でも紹介されています。
Adam Induces Implicit Weight Sparsity in Rectifier Neural Networks
Abstract
DNNでSOTAな性能を出すには大きなモデルを使う必要があるが、エッジデバイスのような環境では容量が足りないためmodel reductionの必要がある。 本論文では、ReLU、L2正則化、Adamを用いてDNNを学習させた場合に重みのスパース化が起こりやすいという現象を発見した。この現象を理論と実験両方から解析するとともに、 重みが0になったノードを削除するというシンプルなmodel reduction手法を提案する。
Proposed Method
第層の重みを表す行列をとする。はそれぞれ第層のカーネルの幅と高さ、はそれぞれ第層と第層のチャネル数。
の列ベクトルについて、2ノルムがしきい値未満である場合に削除する。
Theoretical Analysis
ReLUを用いた場合、全体の50~90%のノードの出力が0になるという研究結果がある。 ほとんどの学習サンプルについてノードの出力が0以下である(not activated)とき、勾配は、重みの更新式は と近似できる(は学習率)。これは0<<1の場合、は0に減衰していくことを示している。このようにnot activatedな条件下では重みの勾配計算において正則化項は支配的になり、重みの0への収束を促していると言える。
not activatedな条件下でAdamによる学習を行ったところ、重みはある程度まで減衰したのちに0付近で振動を始めることがわかった。このような振る舞いはmomentum SGDでは見られなかった。
Convergence Analysis
理論的な証明。 [要約] no activatedな条件下での重みの0への収束速度は、Adamを使った場合がSGDやmomentum SGDと比較してめちゃくちゃ速い。
Experiments
Demonstration of Sparsity
MNISTとCIFAR-10を用いた実験の結果。
optimizerについてはAdamとRMSpropが高いスパース性を示している。RMSpropはAdamのハイパーパラメータを0にしたものと見做せるので、似たような収束の仕方をしたと言える。活性化関数についてはReLUとELUのスパース性が高い。ReLU系の活性化関数を用いた場合、勾配は原点付近を除いて負の領域ではほとんど消失するため。その他のハイパーパラメータについては、L2正則化なしの場合は全くスパース化しないため必要。
Comparisons on Model Reduction
従来手法との比較。MNISTについては従来手法とほぼおなじスパース性で、精度は提案手法の方がわずかに高くなった。CIFAR-10についての結果は以下のようになった。
スパース性と精度はトレードオフであり、ハイパーパラメータを変えることで調整できる(提案手法の場合はL2正則化項の係数)。上図はハイパーパラメータを変えた際のスパース性と精度を表示したものである。提案手法は全体的に従来手法よりも高い精度を示している。また、従来手法はときどき精度が急激に下がるパラメータがあるが提案手法は安定しているため、モデルのサイズ調整をやりやすいと言える。
コメント
スパース化といえばL1正則化というイメージだったので、L2正則化の代わりにL1正則化を使った場合にどういう結果になるのか気になる。AdamはSGDと並んでよく使われるoptimizerであり、ReLUについては最もよく使われる活性化関数(ReLUじゃない場合でも大体がReLU系のもの)。それにL2正則化を加えるというのはそこそこよく使われるハイパーパラメータだと思うのだが、今までしっかりと考察されてなかったのが意外だった。この論文の理論的な解析はとても分かりやすく書かれていて読みやすく勉強になった。