どうもー、ちょげです。
ディープラーニングでは、しばしば過学習という問題が起こります。
過学習は、結構重要な問題となります。
では、過学習とはどのようなものなのでしょうか。
過剰な適応
過学習とは、学習に使う訓練データに適応しすぎてしまうことにより起こる問題です。
訓練データに適応しすぎると、訓練データにないようなデータが問題となった時に精度が悪くなってしまいます。
例えば、AIに男性・女性の画像を学習させ、性別を識別させようと思ったとします。
この時訓練データの男性画像がマッチョばかりだったとします。
AIが学習し終えた後に、実際に適当な画像を識別させます。
そうすると、マッチョばかり見せられたAIは「男性=マッチョ」と認識し、もやしみたいな男性も女性とする間違った認識をしてしまいました。
これは作り話ですが過学習とは、簡単に言ってしまえば「認識に偏りが出来ている状態」です。
原因
過学習が起きる原因は3つあります。
- 重みパラメータの不適切な初期値
- 訓練データが不足している
- ニューラルネットワークの規模が大きい
1つ目は、「重みパラメータの不適切な初期値」です。
重みパラメータの不適切な初期値によって、ニューロンの出力が偏ります。
偏った出力によって、偏った学習が行われるのです。
重みパラメータの初期値は、「Xavierの初期値」や「Heの初期値」を使えば、過学習を防げます。
その他にも、詳しくは触れませんが「バッチノーマライゼーション」という方法もあります。
2つ目は、「訓練データが少ない」ことです。
訓練データが少なければ、おかしな認識が生まれやすくなります。
例えば、10個のデータに普段あまり見られないようなデータが3つ入っていたとします。
そしたら、レアデータがよくあるデータに見えてしまうといったことが起きます。
逆に少ないことでレアデータが入らない事により、本番でレアデータが出たときに対応できないということも考えられます。
3つ目は、ニューラルネットワークの規模です。
ニューラルネットワークの規模が大きくなると、それだけニューロンが増え、重みパラメータが増えて表現力が高くなります。
しかし、表現力が高くなる程、過学習が起こりやすくなるようです。
対策法
過学習の対策法には、2つの方法があります。
- Weight decay(荷重減衰)
- Dropout(ドロップアウト)
一つ目は、Weight decayという方法です。
重みパラメータが大きくなることによって、過学習が起こることが多いようです。
そこで「重みパラメータが大きくなりすぎないようにすればいいじゃん!」って言うのがこの方法です。
具体的には、重みパラメータを損失関数に工夫して足すことによって、大きくなるのを防いでいるようです。
2つ目は、Dropoutという方法です。
Dropoutとは「脱落」という意味です。
この方法は、ニューラルネットワーク内のニューロンをランダムに脱落させる方法です。
具体的には、ランダムにニューロンを消去し、消去した割合を出力に掛け算します。
まとめ
過学習とは、訓練データに適応しすぎて他のデータに応用が利かなくなる状態です。
読んでいただきありがとうございました。
少しでも参考になれば嬉しいです。
コメント