一、ディープラーニングのレシピ
DLトレーニングが完了したら、最初にトレーニングセットでテストする必要があります。トレーニングセットのテスト結果が良好でない場合は、戻って変更する必要があります。トレーニングセットのテスト結果が優れている場合は、テストセットに移動して効果をテストします。結果が悪い場合はオーバーフィットですが、この時オーバーフィットの問題を解決する必要があります。
トレーニング結果を見るときは、過剰適合を考えないでください。過剰適合に応じてモデルを直接調整すると、モデルの効果が低下する可能性があります。
次の例は、過剰適合の問題ではありません。
この図を見ると、56層ニューラルネットワークは20層ニューラルネットワークほど効果的ではありませんが、56層ニューラルネットワークは過剰適合だと思いますか?下の図を見てくださいトレーニングモデルでのモデルのテスト結果も20層モデルほど良くありません。
56フロアが20フロアよりも低いのはなぜですか?
これは、56層モデルが何らかの理由(ローカルの最低点で動かなくなったり、サドルポイントに遭遇したりするなど)で十分にトレーニングされておらず、再調整して再度トレーニングする必要があるためです。56層ネットワークの最初の20層が20層ネットワークの機能を実現したと考えることができ、層の数が十分でないためではなく、後者の層は役に立たないため、これは適切ではありません。
したがって、DLを行う場合、トレーニングで発生した問題を把握する必要があります。これは主にテストセットとトレーニングセットの観点からであり、問題が特定された後、対応するソリューションをとることができます。例:dropout、テストセットへの影響が弱い場合にのみ使用されます。トレーニングセットへの影響が弱い場合、dropoutを強制的に使用しても影響はさらに悪化します。
ニューラルネットワークの層が多ければ多いほど、効果は向上しません。例えば:
この写真を読んだ後、9番目と10番目のレイヤーにパラメーターが多すぎると誰かが感じて、過剰適合につながりますか?番号!!!上記のように、トレーニングセットのテスト結果は壊れています。理由を分析してみましょう。
1つの理由はこれです:グラデーションが消えます。勾配は出力近くで大きく、勾配は入力近くで小さくなります。これにより、パラメータの更新は出力の近くで速くなり、パラメータの更新は入力の近くで遅くなります浅い層がまだランダムな状態にある場合、深い層はすでに収束しています。このようにして、極小値に陥るのは簡単です。
さらに、この現象の原因をシグモイドアクティベーション関数で分析することもできます。
入力が大きい場合、微分値は減少し、シグモイド関数が通過するたびに、損失への影響が少なくなり、ニューラルネットワークが深くなり、損失への最終的な影響が少なくなります。
1.新しいアクティベーション機能
この問題を解決するには?
1つの方法は、新しいアクティベーション機能を使用することです。ReLU機能は一般的に使用されます。
ReLUをアクティベーション関数として使用すると、重みが0のニューロンを削除して、ネットワークを簡略化できます。
これは線形関数に退化しませんか?それはディープラーニングとも呼ばれますか?
実際、ネットワーク全体は依然として非線形です。各ニューロンパラメータの変化が同じ場合、ネットワークは線形ですが、パラメータの変化が異なる場合でも、非線形です。
ここで、別の問題があります。ReLU関数は0で微分できません。
0点での微分可能な問題は無視できます。ゼロより小さい領域では、微分値は0に等しく、ゼロより大きい領域では、微分値は1に等しくなります。トレーニングの過程では、パラメータの変化量は0にはなりません(変化がない場合は、トレーニングする必要はありません)。
ReLUにはいくつかの変種があります。
α= 0.01の規定されたReLU。αトレーニング可能なReLU。
自己学習アクティベーション機能もあります:Maxout。
ReLUは特別なMaxoutです。
通常の活性化関数とは異なり、学習可能な区分線形関数です。
* Maxoutネットワークのアクティベーション関数は、区分的線形凸関数のいずれでもかまいません。
* Maxout関数のセグメント数は、グループ内の要素の数によって異なります(グループ化の方法はユーザーが決定します)。
Maxoutは区別できないので、どのようにトレーニングすればよいですか?
Maxoutは最大値を選択するため、最大値に関しては、実際には線形関数です。実際、細い線形ネットワークをトレーニングすることです。
これは別の問題を提起します、訓練されていないニューロンはどうですか?
十分な入力があるため、得られる細い線形ネットワークは入力ごとに異なり、結局、すべてのニューロンをトレーニングできます。
2.適応学習率
最初にアダグラードを振り返る
Adagradの損失関数は非常に単純で、極端な点またはサドルポイントでスタックする場合があります。
[注]一部の人々は、より大きなネットワークが極小値に遭遇する可能性は非常に小さいと考えています。
改良されたメソッドはRMSPropと呼ばれます。
以下は、RMSPropの計算プロセスです。
ある時点でスタックする問題を解決するために、「慣性」を追加できます。
勾配を計算するときは、最後の勾配も考慮されます。