コーヒー買ってきて☕ *メモ: 私の投稿では、過学習と過小学習について説明しています。 私の投稿では、PyTorch のレイヤーについて説明しています。 私の投稿では、PyTorch のアクティベーション関数について説明しています。 私の投稿では、PyTorch の損失関数について説明しています。 私の投稿では、PyTorch のオプティマイザーについて説明しています。 勾配消失問題: バックプロパゲーション中、勾配がどんどん小さくなるかゼロになり、出力層から入力層に進むにつれて小さな勾配が何度も乗算されるため、モデルを効果的にトレーニングすることができません。 モデル内のレイヤーが多いほど発生しやすくなります。 は、PyTorch の Sigmoid() である Sigmoid 活性化関数 によって簡単に引き起こされます。これは、範囲が 0 は次の場所で発生します: CNN(畳み込みニューラルネットワーク). RNN(リカレント ニューラル ネットワーク)。これは、PyTorch の RNN() です。 は次の場合には起こりにくいです。 LSTM(Long Short-Term Memory)、これは PyTorch の LSTM() です。 GRU(Gated Recurrent Unit) これは、PyTorch の GRU() です。 Resnet(Residual Neural Network) これは PyTorch の Resnet です。 Transformer、これは PyTorch の Transformer() です。 など は次の場合に検出できます。 出力層に近い層ではパラメータが大幅に変化しますが、入力層に近い層ではパラメータがわずかに変化するか変化しません。 入力層に近い層の重みが 0 に近いか、0 になります。 収束が遅いか停止しています。 は次の方法で軽減できます。 バッチ正規化レイヤー。これは、PyTorch の BatchNorm1d()、BatchNorm2d()、または BatchNorm3d() です。 Leaky ReLU 活性化関数 これは、PyTorch の LeakyReLU() です。 *PyTorch の ReLU() である ReLU 活性化関数 を使用することもできますが、後で説明する 瀕死の ReLU 問題を引き起こす場合があります。 PReLU 活性化関数。これは PyTorch の PReLU() です。 ELU アクティベーション関数。これは PyTorch の ELU() です。 グラデーション クリッピング。これは、PyTorch の Clip_grad_norm_() または Clip_grad_value_() です。 ※グラデーションクリッピングは、グラデーションを指定範囲内に保つ方法です。 グラデーションの爆発問題: バックプロパゲーション中、勾配はますます大きくなり、出力層から入力層に進むにつれて大きな勾配が何回も乗算され、収束が不可能になります。 モデル内のレイヤーが多いほど発生しやすくなります。 は次の場所で発生します: CNN. RNN. LSTM. GRU. は次の場合には起こりにくいです。 レスネット. 変圧器. など は次の場合に検出できます。 モデルの重量が大幅に増加します。 大幅に増加したモデルの重みは最終的に NaN になります。 収束は完了せずに変動しています。 は次の方法で軽減できます。 バッチ正規化レイヤー. グラデーションクリッピング. 瀕死の ReLU 問題: はバックプロパゲーション中、ReLU 活性化関数 を持つノード (ニューロン) がゼロまたは負の入力値を受け取ると、どの入力値に対しても常にゼロを生成し、最終的には回復されて次の値を生成することはありません。ゼロの場合、モデルは効果的にトレーニングできません。 はDead ReLU問題とも呼ばれます。 次の場合に発生しやすくなります。 学習率が高くなります。 負のバイアスが高くなります。 は次の場合に検出できます。 収束が遅いか停止しています。 損失関数は nan を返します。 は次の方法で軽減できます。 学習率が低下します。 ポジティブなバイアス 漏洩 ReLU 活性化関数. PReLU 活性化関数. ELU アクティベーション関数.