Adamに続いてPReLUの論文読んでみました。
参考資料
- Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification,He+,'15
- 適化から見たディープラーニングの考え方,得居,'15,ORSJ
-
深層学習 (機械学習プロフェッショナルシリーズ
ReLUの利点
PFNの得居さんがOR学会誌に寄稿されている適化から見たディープラーニングの考え方にわかりやすくまっています。
以下、簡単に箇条書きします。
誤差逆伝搬
- 活性化関数にtanhやsigmoidを使用している場合、入力値が大きいときに微分係数が小さくなるため、層数が大きい場合、誤差逆伝播する際に次々に微分係数をかけることで値が指数的に減少する問題がある
- ReLUでは、この減少問題を解決することができ深いモデルの学習を行いやすくなる
正則化と最適化の関係
(本文中にReLUには触れていませんが、個人的にまとめたかったので記載します)
- パラメタの値は小さく保った方が頑健
- パラメタの相互依存関係を少ない方が頑健
- ドロップアウトはパラメタの相互依存を少なくする非常に強力な正規化手法の一つ
- ただし、得られる勾配が不安定になるため、最適化は一般に難しくなる
- モデルの中で複数回パラメタを同じように使う場合、パラメタを共有する回数が多いほど、正則化の効果は強くなる(依存関係を少なくできる?)
- 畳み込みネットでは、この効果が非常に強いため多くの場合では畳み込み層においてはドロップアウトが必要ない
概要
Abstract
- Parametric Recitied Linear Unit(PReLU)という従来のユニット正規化(整流?)を一般化した手法を提案
- PReLUは計算コストの増加をほぼゼロに抑えつつ、モデルのフィッティングと過学習のリスクを改善
- 非線形な正規化を考慮した頑健な初期化手法を示した
- 特定のデータセットに対する識別精度で人間(誤認識5.1%)を上回った
Introduction
- ユニット正規化はdeep networkの成功の鍵を握っている一つの重要な手法である
- ニューラルネットワークを正規化に着目し、2つの側面から調査した
- 1つは、計算コストの増加は無視できるくらいに抑えつつaccuracyの改善が行える手法
- 2つめ、とても深いモデルでも収束するモデル構築を可能とすること。それにより柔軟なネットワーク構築が行える
Approach
Definition
f(y_i)=
\left\{
\begin{array}{l}
y_i,\,if\,y_i > 0.\\
a_i y_i,\,if\,y_i \leq 0
\end{array}
\right.
- ここで、$y_i$はi番目のチャネルの非線形活性化関数のインプット、$a_i$はi番目のチャネルの制御係数
- これは、$f(y_i)=max(0, y_i)+a_i\,min(0,y_i)$と等しい
- 1層で係数を共有させる場合は、$f(y_i)=max(0, y_i)+a\,min(0,y_i)$となる
- LReLUでは主にゼロ除算を防ぐ目的で$a_i=0.01$としていた。LReLUはReLUと比較して大きな改善は見られなかった
- 一方PReLUでは、訓練段階に合わせて活性化関数が適応的に変わる
- 係数$a_i$(または$a$)の最適化もチェーンルールによって書き下す事ができる(数式省略)
- 係数$a_i$の更新にはモーメンタム法を使用
\Delta a_i:= \mu\Delta a_i + \epsilon\frac{\delta\varepsilon}{\delta a_i}
- 係数$a_i$の値域に制限はかけない
- 論文中では$a_i$の初期値は0.25とした
比較実験
- channelごとに係数を学習するモデルでは浅い層の係数が大きく、深い層に行くにつれ係数は小さくなっている(Table1参照)
- これは深い層でより非線形度が上がっている事を示している
- そして浅いそうでは情報量を多く保持しており、深い層では情報の識別がされていると言える
weightの初期化
- ReLUを使ったと言えども、よろしくない初期値はモデルの収束に悪い影響を与える(特に非線形度の高いシステムで)
- DCNNでは標準偏差の値を固定したガウス分布を用いた初期化が行われているが、深いモデルでは上手く収束しないことが確認されている
- プレトレーニングを行う方法も考案されているが、学習に時間がかかるし、ローカルな最適解に陥ることが多いのではないだろうか
- 適切にスケーリングされた一様分布を使って初期化するというXavierという手法も考案されています
- Xavierでは上手く収束しないモデルでも、PReLUでは収束することを確認している
- 初期値の分布は平均0, 標準偏差$\sqrt{2/n_l}$($n_l=k^2c$. kはfilterサイズ, cはchannel数)
\frac{1}{2}n_l Var[w_l]\,=\,1
- しかし入力値が正規化されていない場合、影響を受けるため、活性関数の係数$a$を使って正規化を行う
\frac{1}{2}(1+a)n_l Var[w_l]\,=\,1
参考コード+実験
書こうと思いましたが時間足りませんでした。
chainerには既に実装されていますので、それ使って後ほど実験したいと思います。
お手数ですが間違いありましたらご指摘いただけますと助かります。