[mathjax]ニューラルネットワークモデルの訓練(training)では、過学習(over-fitting)が起きたり、局所的な極小点に陥り、性能が高くならないという問題が発生することがあります。
過学習
過学習は訓練データの数に対してパラメータの数が多い場合や、訓練データに偏りがある場合に起き易い現象です。図1はデータ数が少ない場合の入出力のグラフ(横軸入力、縦軸出力)ですが、このようにデータ数が少ない場合、各データにほぼ一致する曲線を見出す(パラメータを決定する)ことは難しくありません。
そして、もし図1の数少ないデータが、対象とするデータ全体の分布を代表していいるのであれば、図1の曲線は小さい誤差関数E(前の記事の式(5))を持つ、大域的な最小点に近い、正しい曲線を表していることになります。
しかし、もし図1のデータが、対象とするデータ全体の分布を代表しておらず、データ数を増やすと図2のような分布を示すのであれば、図1の曲線は過学習を表していることになり、正しい曲線は図2のようになります(図1のデータは全て図2に含まれています)。


また、パラメータの数が少ない場合には、仮にデータ数が少なくとも、図1に示すような複雑な曲線を出すことは出来ず、単純な曲線になるために、過学習が起きにくいという特徴があります。アナロジーで言えば、図1のデータに対して、パラメータが3つの放物線であれば図2のような曲線が得られますが、パラメータが7個の6次方程式であれば図1のような曲線が得られます。
このように過学習が起きやすいかどうかは、訓練データの数や偏り、パラメータの数に依存します。
局所的な極小点
過学習と同様に、ニューラルネットワークの性能が上がらない原因として、局所的な極小点に陥いることが上げられます。
図3は横軸がパラメータの値を、縦軸がニューラルネットワークの出力を示していますが、図の青●に示す局所的極小点につかまってしまい、学習を継続させてもそこから抜け出すことができず、大域的最小点赤●に到達できないことがよくあります。
このような過学習や局所的極小点トラップを防ぐ方法として、次の手段がよく使われます。
- 正則化(regularization)
- バッチ処理
- DropoutやDropconnect
<正則化>
正則化は誤差関数E(前の記事の式(5))に罰則項(penalty)を加えたもので、2次のL2ノルムの場合は下記のように表されます。
ここで、
式(1)右辺の罰則項
これに対し1次のL1ノルムでは、罰則項として
L2ノルムとの違いは、
これは
この
赤い円と緑の正方形は同じ
切片
(1)中心pが図4の白い背景の上にあり正方形の角に接している場合
(2)中心pが図4の薄青色の背景の上にあり正方形の辺に接している場合(p’)
ここで、薄青色の背景は正方形の辺の延長線が囲む領域です。中心pが白い背景の上にある場合には、円が正方形の角に接する場合にエネルギーが最小となりますが、これは
一方、中心pが薄青色の背景の上にある場合(p’)には、パラメータは両方とも0にはならず、
<バッチ処理、Dropout>
過学習や局所的極小点トラップを防ぐため、言い換えると、ニューラルネットワークの性能を向上させるために、バッチ処理やDropoutも利用されます。
バッチ処理は、逆伝播法による結合荷重の更新を個々のデータに対して行うのではなく、複数のデータに対して一回行う手法です。これは複数のデータに対する平均的な結合荷重で更新するとも言えます。私のこれまでの実験結果から、バッチ処理はニューラルネットワークの性能向上に効くことが多いと言えます。やはり、個々のデータに対して逐一、逆伝播法で結合荷重を更新すると、その変動が大きくなるため、局所的な最小点に捕まり易くなり、大域的な最小点(最適解)に辿り着きにくくなるように思います。
これに対し、バッチ処理では、複数個のデータに対する平均的な結合荷重で更新するために、結合荷重の変動が比較的小さく、滑らかに収束する傾向があり、局所的な極小点に捕まりにくいために、性能低下が抑制されると考えられます。
ただし、データの種類によっては(例えば、ノイズの小さいデータなど)、バッチ処理ではなく、各データで結合荷重を更新した方が更新速度が速く、短時間で収束することもあるので、バッチ処理が常によいとは言えません。そのあたりは、少し注意が必要です。
また、Dropoutはニューラルネットワークのユニットをランダムに排除しながら、結合荷重を更新することで、局所的な極小点のトラップを抑制したり、層数が多くても逆伝播法による結合荷重の更新が入力層付近であっても適切に行われることを狙ったものです。
私もDropoutの性能を調べるために、DeepLearningによるMNISTデータの手書き数字認識に適用してみました。Dropoutなしの認識正解率が98.9%でしたが、Dropoutを導入しても、ほとんど性能は向上せず、むしろ0.1~0.3%ほど性能が下がりました。すでに十分性能が高かったが故に効果がなかったのかもしれません。そうであれば、Dropoutなどは性能が低いニューラルネットワークに対し、効果があるのかもしれない。このあたりはケースバイケースで、ニューラルネットワークの構成を考えていく必要があるようです。
ーーーーーーーー
良書の紹介:機械学習の理解を深めるには良い本です