誤差逆伝播は、ニューラル ネットワークの最も一般的なトレーニング アルゴリズムです。これにより、多層ニューラル ネットワークで勾配降下法を使用できるようになります。多くの機械学習コード ライブラリ(Keras など)はバックプロパゲーションを自動的に処理するため、基盤となる計算を自分で実行する必要はありません。バックプロパゲーションの仕組みの概要については、次の動画をご覧ください。
ニューラル ネットワーク トレーニングのベスト プラクティス
このセクションでは、バックプロパゲーションの失敗ケースと、ニューラル ネットワークを正則化する最も一般的な方法について説明します。
勾配消失
下位のニューラル ネットワーク レイヤ(入力レイヤに近いレイヤ)の勾配が非常に小さくなることがあります。ディープ ネットワーク(複数の隠れ層を持つネットワーク)では、これらのグラデーションの計算に多くの小さな項の積が含まれることがあります。
下位レイヤの勾配値が 0 に近づくと、勾配が「消失」したと言われます。グラデーションが消失するレイヤは、トレーニングの速度が非常に遅いか、まったくトレーニングされません。
ReLU 活性化関数は、勾配消失を防ぐのに役立ちます。
勾配の急上昇
ネットワーク内の重みが非常に大きい場合、下位レイヤのグラデーションには多くの大きな項の積が含まれます。この場合、勾配が大きすぎて収束しない勾配爆発が発生する可能性があります。
バッチ正規化は、学習率を下げることで勾配爆発を防ぐことができます。
Dead ReLU ユニット
ReLU ユニットの重み付き合計が 0 を下回ると、ReLU ユニットがスタックする可能性があります。0 を出力するため、ネットワークの出力には何も寄与せず、バックプロパゲーション中に勾配が流れなくなります。グラデーションのソースがカットオフされると、ReLU への入力が重み付きの合計を 0 より大きくするのに十分なほど変化しない可能性があります。
学習率を下げることで、ReLU ユニットの機能停止を防ぐことができます。
ドロップアウト正則化
ドロップアウト正則化と呼ばれる別の形式の正則化は、ニューラル ネットワークで役立ちます。ドロップアウトは、単一の勾配ステップのネットワークでユニット アクティベーションをランダムに「ドロップアウトする」ことで機能します。ドロップアウトが多いほど、正則化が強くなります。
- 0.0 = ドロップアウト正則化なし。
- 1.0 = すべてのノードをドロップアウトします。モデルは何も学習しません。
- 0.0 ~ 1.0 の値 = より有用。