過剰適合の原因と解決策

過剰適合の原因

1.データ量が少なすぎる

    这个是很容易产生过拟合的一个原因。设想,我们有一组数据很好的吻合3次函数的规律,现在我们局部的拿出了很小一部分数据,用机器学习或者深度学习拟合出来的模型很大的可能性就是一个线性函数,在把这个线性函数用在测试集上,效果可想而知肯定很差了。

2.トレーニングセットと検証セットの配布に一貫性がありません

トレーニングセットは、トレーニングセットの分布に適したデータセットをトレーニングします。異なる分布のデータセットにモデルを適用すると、効果が大幅に減少します。これは明らかです。

3.モデルが複雑すぎます

モデルアルゴリズムを選択するときは、最初に非常に複雑なモデルを選択します。次に、データの法則は非常に単純ですが、複雑なモデルは適用できません。

4.データ品質が悪い

データにはまだ多くのノイズがあります。モデルが学習しているとき、モデルは確実にノイズのルールを学習するため、一般的なルールが削減されます。現時点では、特定の効果を予測するために使用されるモデルは適切ではありません。

5.オーバートレーニング

これは4番目のものに関連しています。トレーニング時間が十分に長い限り、モデルは確実にいくつかの隠れたノイズのルールを学習します。この時点で、モデルのパフォーマンスが低下することは明らかです。

過剰適合ソリューション

過剰適合の理由から、いくつかの方法と手法を使用して、ターゲットを絞った方法で過剰適合を減らすことができます。

1.モデルレベル
ここでは、主にモデルに含まれるパラメーターとパラメーター値の数から、モデルの複雑さを軽減することを主な目的としています。

a、正則化

これには、L1ノルムとL2ノルムが含まれます。具体的な違いは、理解する関連理論によって異なります。ここでは、L1ノルムが一般的に使用されるため、モデルフィッティングのほとんどのパラメーターは0であり、パラメーター値から言うことができます。およびパラメーターの数角度により、モデルの複雑さが軽減され、それによって過剰適合が軽減されます。

b。ウェイトシェアリング

この方法は、ディープラーニングでよく使用されます。一般に、ネットワークでは、一部のレイヤーが同じパラメーターを使用する場合があるため、パラメーターの数が減り、モデルの複雑さも軽減されます。

c、ドロップアウト

この方法も非常に一般的であり、ニューラルネットワークではニューロンが機能しなくなる可能性があります。この方法の本質は、各ステップで使用されるモデルが異なり、モデルパラメータがある程度削減されることです。

torch.nn.Dropout(0.5)
pytorchでは、ここで0.5はニューロンが保持されない確率を意味し、tfフレームワークとは異なります。

d、バッチ正規化

このバッチ正規化処理レイヤーは非常に便利です。また、このBNレイヤーを使用してネットワークを作成しようとしました。その機能は、各レイヤーのデータ分布を変更せず、正規化処理を実行し、モデルの収束速度を高速化し、勾配の消失を回避し、精度を向上させることです。 。とにかく、多くの利点があります!

e、重量の減衰

重みの減衰-weight_decay、簡単な理解は、正規項の前の係数を乗算することです。目的は、重みを0に近い小さな値に減衰させることです。一般に深層学習では、pytorchが提供するオプティマイザーを次のように設定できます。

オプティマイザー= optim.SGD(model.parameters()、lr = 0.01、momentum = 0.9、weight_decay = 1e-5)
2。データレベル
a、データセット分布の一貫性を確保する

データセットを分割するときは、分散の一貫性を確保してください。sklearnパッケージのmodel_selection関連のtrain_text_splitを使用して、データセットがカットされた後の分布の一貫性を実現できます。

b。データセットのサイズを増やします

高品質のデータに手動でラベルを付けるのが最善ですが、コストが非常に高くなります。特定のデータ拡張戦略を使用して、データセットの拡張を実現できます。ここでは、ある程度のノイズが発生する可能性があり、ノイズもモデルのパフォーマンスに影響を与えることに注意してください。長所と短所のトレードオフに注意してください。さらに、CVとNLPデータの拡張は異なり、NLPデータの拡張はより困難です。

3.トレーニングレベル
このトレーニングは、経験、モデルが到達する必要のあるベースライン標準の種類によって異なります。次に、この標準を参照して、モデルに早期停止を実装します。ニューラルネットワークのトレーニングプロセス中に、一連の小さな重みパラメーターを初期化します。モデルのトレーニングにより、これらの重みはますます大きくなります。過剰適合の影響を減らすために、早期に停止する必要があるかもしれません。自分で早期打ち切りをしたことはありませんが、一般的には10エポックを設定してから、エポック数を増やす効果を考えています。

4.その他の
アンサンブル学習-つまり、過剰適合の影響を減らすためのアンサンブルアイデアによる平均値のアイデア。

おすすめ

転載: blog.csdn.net/zhonglongshen/article/details/115331295