No bad local minima: Data independent training error guarantees for multilayer neural networks
今まで「3行で」コーナーやってたけど、「概要でよくね?」という気がしてきたし、なんとなく馬鹿らしくなってきたのでやめる。
"No local bad minima"というタイトル見た瞬間面白そうだと思ったので読もうと思った。
概要
ニューラルネットの学習誤差をネットワークの構造によって解析的に評価しようという内容。
凸最適化ならば勾配法で最適化できることが保証されるが、非凸最適化の場合は極小値にトラップしてしまい、最適な学習ができない可能性がある。
しかし、非凸な誤差関数でも学習誤差を抑えることができることを示している。
前提として誤差関数を勾配法で最小化する学習を想定しているので、誤差関数の微分可能な極小値(DLM; Differentiable Local Minimum)における解析を行う。
隠れ層1層の場合は意外とシンプルな解析で評価できるので、そのアナロジーで隠れ層の層数が一般の場合に拡張し、極小値における安定性を議論している。
隠れ層数が1の場合
まず、教師データを、第層の活性化要素を、出力を、全体の推定誤差を、ニューラルネットの総層数をとして以下のように定式化する。
活性化関数は非線形の関数(シグモイド関数等)が用いられることもあるが、ここでは線形の関数およびその組合せで書ける関数(ReLU, max-pooling等)に限定する。このように制限すると、活性化の定式化を上記のように行列演算を用いて行うことができ、解析の都合上楽になる。
最近の結果では、特にCNN等複雑な構造になればなるほど、下手に非線形関数を活性化関数に用いるよりも、ReLUを用いた方が高精度な識別器が得られることが多い。
例えばReLUの場合、
- (の場合)
- (otherwise)
を実現するには
- (の場合)
- (otherwise)
で十分。
次に、誤差関数(MSEを用いる)の定式化は
となる。ただし、は訓練データ数である。
隠れ層数1としてMSEの式をもう少し整理すると
となる。活性化行列が対角成分しか持たないので、もその対角成分しか寄与しない。
ニューラルネットのパラメータ行列をまとめてと書くと、
となる。シンプルな形になった。
さて、極小点ではパラメータ行列に関する微分係数が0、すなわち
である。もう少し具体的に書き下すと、
である。紛らわしいのだが、やに関する上付き添字は個々の訓練データのインデックスである。
これをクロネッカー積*1を用いて次のような行列を定義する。
(余談だが、クロネッカー積という単語を見たときはじめはクロネッカーのデルタと関係があるのかと思ったが、想像以上に関係無かった。テンソル積の行列だった。詳細はWikipediaを参照されたい)
すると、極値条件はシンプルに記述できる。
ややこしく見えるが、先程の極値条件を成分ごとに分解し、「各成分=0」という条件式を並べたのが最後のになる。
さて、この条件はと言い換えられる。核空間の次元はだが、もし仮に行列がフルランクだったとすると核空間の次元は0になるので、、すなわちMSEが0になる。
ところで、先程のクロネッカー積による表示は、一般にはKhatari-Rao積といい、Khatari-Rao積に関するいくかの事実を適用すると、のときにMSEが0になることがいえる。
この結果自体は、パラメータ数が訓練標本数よりも多いことが条件として課されているので、MSEが0になるのはある意味で当然であるように感じられるが、グローバルな最小解だけでなくローカルな極小解にトラップしてもMSEが0に収束することが保証されているという意味で価値があるのだろう。
隠れ層数が一般の場合
式を追うのに疲れたので割愛するが 基本的には1層の場合と同様の解析手法を適用することができる。
ただし隠れ層間の依存関係があるので、最後の2層以外はパラメータを固定し、最後の2層に同じ議論を適用するといった工夫が必要だ。