不十分な損失関数の結果に対する解決策 - 機械学習

より良いトレーニング結果を得る方法

トレーニングのヒント。

ここに画像の説明を挿入

モデルのバイアス

モデルが単純すぎます。

解決策: モデルを再設計して、より柔軟性を高めます。

最適化

臨界点(ローカルミナマの鞍点と鞍点鞍面を含む差分が 0 となる点)が原因で最適化が失敗します。

例証します:

  • パラメーターが追加されるたびに、次元は 1 ずつ増加し、極小値の代わりに鞍点を生成することが容易になります。

  • 経験上、極小値はそれほど一般的ではないため、多くの場合、鞍点を使用してより少ない最適化を行うことができます。

  • 次に、鞍点まで Less の値を減らし続けます。

ヘシアン行列の最適化

ここに画像の説明を挿入

臨界点に行くとき、勾配は 0 になり、緑色のアイテムは 0 になります。

ここに画像の説明を挿入

H はパラメータ更新の方向を教えてくれます。
ここに画像の説明を挿入

サドル点に遭遇した場合は、ヘッセ行列の負の固有値を使用して、対応する固有行列 μ、θ - θ ' = μ、次にθ ' = θ - μ を見つけることができ、L(θ )。

しかし、この方法はヘッセ行列を計算する必要があり、2次導関数を必要とし、さらに行列の固有値と固有行列を求める必要があり、計算量が非常に多くなるため、一般には実用化されていない。

小ロット

小さなバッチの方が、大きなバッチよりも良い結果が得られる傾向があります。

  • 勾配降下法がスタックした場合、バッチの変更がスタックしない可能性があり、ローカル ミナマに落ちて抜け出せないという問題を回避できます。これは、バッチ数が多いことの利点です。
    ここに画像の説明を挿入

勾配降下 + 運動量

物理学における慣性をシミュレートするという考え方: 動きの方向は、勾配の方向だけでなく、動きの前のステップの方向にも依存します。

動き = 最後のステップの動きから現在の勾配を引いたもの。

  • これにより、ローカルミナマに落ちて抜け出せないという問題をある程度回避することができる。

ここに画像の説明を挿入

反復によれば、各動き m i は、前の i - 1 回の勾配によって表すことができます。

ここに画像の説明を挿入

適応学習率

損失が減少しなくなっても、勾配は必ずしも実際に小さくなるわけではありません。

したがって、各パラメータの学習率をカスタマイズする必要があります。

画像の説明を追加してください
左図のように誤差曲面の谷にはまってしまうことがありますが、学習率は固定されているため、それ以上減らすことができなくなります。

したがって、学習率を直接下げることで問題は解決するのではないか?

ただし、学習率を直接下げるとトレーニングが「谷」に入る可能性がありますが、より滑らかな場所では学習率が小さすぎるため、トレーニングを進めることが困難になります。

したがって、次のことが望ましいです。

  • 学習率は滑らかな方が大きくなります。
  • 急な場所では学習率が小さくなります。

解決:

元の学習率を σ で割ります。

ここに画像の説明を挿入

σ を計算するには一般に 2 つの方法があります

  • 二乗平均平方根
  • RMSプロップ
  • アダム

二乗平均平方根

σ は、前のトレーニングから取得された勾配合計の平方根です。

以前の各勾配は σ に等しく寄与します。

ここに画像の説明を挿入

同じパラメータの学習率はほぼ同じ値であると仮定しますが、時間の経過とともに同じパラメータの学習率も変化します。この欠点は、 RMSPropメソッドを使用することで回避できます

RMSプロップ

σ は最近の勾配の影響を強く受けますが、過去の勾配の影響はあまり受けません。

ここに画像の説明を挿入
ここに画像の説明を挿入

アダム

RMSProp + 勢い

最も一般的に使用される最適化方法には、Pytorch で適切に実装されたスイートがあります。

ここに画像の説明を挿入

学習率のスケジューリング

比較的スムーズなところでトレーニングを積み続けた場合、相対的にσの値が小さくなり、1動作のステップサイズが大きくなるため、一度エラーが発生すると以下のような状況が発生しやすくなります。

ここに画像の説明を挿入

学習率のスケジュール設定を使用すると、学習率のサイズを時間の経過とともに変化させ、このエラーを排除できます。

ここに画像の説明を挿入

学習率のスケジューリングには 2 つの方法があります。

  • 学習率の減衰
  • Warm Up : 古い論文などでよく見かけるWarm Up法ですが、σは統計的なデータ量なので最初は正確ではありません。したがって、最初は学習率を比較的小さくし、σ 統計がより正確になったら学習率を増やします。

ここに画像の説明を挿入

損失

損失関数の選択は、最適化の難易度に影響します。

たとえば、分類問題では、クロスエントロピーは平均二乗誤差 (MSE) よりもうまく機能するため、より一般的に使用されます。

ここに画像の説明を挿入

上の図からわかるように、平均二乗誤差は損失が比較的大きく、勾配が小さいため、トレーニングが内部で停止する可能性があります。損失が比較的大きいクロスエントロピーでは、勾配も大きいため、トレーニングに便利です。

最適化の概要

ここに画像の説明を挿入

過学習

トレーニング データではうまく機能しますが、テスト データではうまく機能しません。

より多くのトレーニング データ - 最も効果的なソリューション

  • 新しいデータを収集します。

  • データ拡張: データの独自の理解に従って、元のデータを変換し、トレーニング データの数を増やします (画像を左右に反転、拡大または縮小)

モデルの弾性を減らす

  • パラメータを減らし、パラメータを共有する

  • 機能が少ない

  • 早期停止

  • 正則化

  • 脱落

ミスマッチ

  • トレーニング データとテスト データの分布は異なります。

  • データがどのように生成されるかに注意してください。

おすすめ

転載: blog.csdn.net/qq_61539914/article/details/127550290