深層学習における過剰適合問題に対するいくつかの解決策

今日は、人々が毎日の深層学習で過剰適合の問題をどのように解決するかについて話しましょう。

高いバイアスは過適合に対応し、高い分散は過剰適合に対応することを誰もが知っておく必要があります。

次に、過剰適合の問題を解決します

1.正則化(正則化)

まず、ロジスティック回帰で導入されたL2正則化を確認しましょう。その式は次のとおりです。

ここに画像の説明を挿入
L1正則化方法もあります。式は次のとおりです
ここに画像の説明を挿入
。L2正則化と比較して、L1正則化によって得られるwはよりスパースです。つまり、多くのwはゼロです。wのほとんどが0であるため、その利点はストレージスペースを節約できることです。ただし、実際には、L1正則化は、高分散を解く上でL2正則化よりも有利ではありません。さらに、L1は分化の点でより複雑です。したがって、一般的にL2正則化がより一般的に使用されます。

深層学習モデルでは、
ここに画像の説明を挿入
L2正則化の式は次のとおりです。L2正則化は重み減衰とも呼ばれます。これは、正規項の追加により、dw [l]に増分があるためです。w[l]を更新すると、この増分が減算され、正規項がない場合の値よりもw [l]が小さくなります。反復と更新を続け、削減を続けます。
ここに画像の説明を挿入

2.ドロップアウトの正則化

L2正則化に加えて、過剰適合を防ぐ別の効果的な方法があります。ドロップアウト正則化(損失正則化)です。

ドロップアウトとは、深層学習ネットワークのトレーニングプロセス中に、各層のニューロンが特定の確率に従ってネットワークから一時的にドロップされることを意味します。言い換えると、各トレーニング中に、各層の一部のニューロンが機能しないため、複雑なネットワークモデルが単純化され、過剰適合を回避できます。
ここに画像の説明を挿入

m個のサンプルの場合、トレーニングの1回の反復で、隠れ層の特定の数のニューロンがランダムに削除されます。次に、重みwと定数項bが、削除後に残りのニューロンで前後に更新されます。次に、In 1回の反復で、以前に削除されたニューロンが復元され、特定の数のニューロンが再びランダムに削除され、wとbが順方向と逆方向に更新されます。反復トレーニングが完了するまで、上記のプロセスを繰り返します。

ドロップアウトトレーニングの使用後、モデルをテストして実際に適用するときに、ドロップアウトを実行してニューロンをランダムに削除する必要がないことは注目に値します。すべてのニューロンが機能しています。

要約すると、同じトレーニングデータのセットについて、異なるニューラルネットワークトレーニングを使用した後、その出力の平均を見つけることで、過剰適合を減らすことができます。ドロップアウトは、この原理を使用して、毎回特定の数の隠れ層ニューロンをドロップします。これは、異なるニューラルネットワークでのトレーニングに相当します。これにより、ニューロン間の依存関係が減少します。つまり、各ニューロンは特定の数のニューロンに依存できなくなります。他のニューロン(層間に接続されたニューロンを指す)ニューラルネットワークが他のニューロンでより堅牢な機能を学習できるようにします。

ドロップアウトを使用する場合、注意すべき点がいくつかあります。まず、異なる隠れ層のドロップアウト係数keep_probは異なる可能性があります。一般的に言えば、ニューロンのある隠れ層が多いほど、keep_outは0.5などのように小さく設定できます。ニューロンが少ない隠れ層のkeep_outは、0.8などのように大きく設定して1に設定できます。また、実際のアプリケーションでは、入力レイヤーでドロップアウトを実行することはお勧めしません。入力レイヤーのサイズが画像などの大きい場合は、ドロップアウトを設定できますが、keep_outは0.8、0.9などの大きなサイズに設定する必要があります。 。一般的に言えば、過剰適合の隠れ層が現れる可能性が高いほど、keep_probは小さくなります。正確で固定されたアプローチはなく、通常は検証に基づいて選択できます。

ドロップアウトは、入力層の寸法が大きく、十分なサンプルがないため、コンピュータービジョンCVの分野で広く使用されています。ドロップアウトは、過剰適合を防ぐための正則化手法であることに注意してください。正則化が必要な場合にのみドロップアウトを使用することをお勧めします。

ドロップアウトを使用する場合、コスト関数を描画してデバッグし、ドロップアウトが正しく実行されているかどうかを確認できます。一般的なアプローチは、すべての層のkeep_probを1に設定してから、コスト関数を描画することです。つまり、すべてのニューロンをカバーし、Jが単調に低下するかどうかを確認します。トレーニングの次の反復で、keep_probを別の値に設定します。

3.その他の正則化方法

L2正則化とドロップアウト正則化に加えて、過剰適合を減らす他の方法があります。

1つの方法は、トレーニングサンプルの数を増やすことです。ただし、通常はコストが高く、追加のトレーニングサンプルを取得することは困難です。ただし、既存のトレーニングサンプルに対していくつかの処理を実行して、より多くのサンプルを「製造」することができます。これは、データ拡張と呼ばれます。たとえば、画像認識の問題では、既存の画像を水平方向、垂直方向に反転したり、任意の角度で回転させたり、ズームまたは拡大したりすることができます。次の図に示すように、これらのプロセスは新しいトレーニングサンプルを「作成」できます。これらは元のサンプルに基づいていますが、トレーニングサンプルの数を増やすことは非常に役立ちます。追加のコストは必要ありませんが、過剰適合を防ぐことができます。
ここに画像の説明を挿入
デジタル認識では、次の図に示すように、元のデジタル画像を任意に回転または歪ませたり、ノイズを追加したりすることもできます
ここに画像の説明を挿入
。過剰適合を防ぐ別の方法があります。早期停止です。ニューラルネットワークモデルの反復トレーニングの数が増えると、トレインセットエラーは一般に単調に減少しますが、開発セットエラーは最初に減少してから増加します。つまり、トレーニング時間が多すぎると、モデルはトレーニングサンプルにますます適合しますが、検証セットへの適合効果は徐々に悪化します。つまり、過剰適合が発生します。したがって、反復トレーニングの数は可能な限り多くはなく、反復数の変化、つまり早期停止に応じて、train seterrorとdevseterrorを使用して適切な反復数を選択できます。
ここに画像の説明を挿入
ただし、早期打ち切りには独自の欠点があります。一般的に、機械学習トレーニングモデルには2つの目標があります。1つはコスト関数を最適化してJを最小化すること、もう1つは過剰適合を防ぐことです。これらの2つの目標は互いに反対です。つまり、Jを減らすと過剰適合が発生する可能性があり、その逆も同様です。これら2つの直交化の関係を呼びます。このレッスンの冒頭で述べたように、深層学習では、バイアスと分散を同時に減らして、最良のニューラルネットワークモデルを構築できます。ただし、早期打ち切りの実践は、トレーニングの数を減らしてJが十分に小さくならないようにすることで、過剰適合を防ぎます。言い換えれば、早期打ち切りは、上記の2つの目標を組み合わせて同時に最適化しますが、「分割統治」の効果がない場合があります。

早期打ち切りと比較して、L2正則化は「分割統治」の効果を達成できます。十分な反復トレーニングにより、Jを減らすことができ、過剰適合を効果的に防ぐこともできます。L2正則化の欠点の1つは、最適な正則化パラメーターλの選択がより複雑になることです。この時点で、早期停止は比較的簡単です。一般に、L2正則化がより一般的に使用されます。

おすすめ

転載: blog.csdn.net/weixin_49005845/article/details/110857179