Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Vanishing Gradient

勾配消失問題は、バックプロパゲーション中に勾配が層ごとに小さくなり、初期層が学習を停止することで発生します。原因と対策を解説します。

勾配消失問題とは、逆伝播によって損失から深いニューラルネットワークの初期層へ送られる勾配が、深さに応じて幾何級数的に小さくなり、最初の層が学習できるほどの更新を受けられなくなる問題です。ある層の勾配は、その上にあるすべての層の局所微分の積であるため、各層が勾配を1未満の倍率で縮小するネットワークでは、出力から入力までの間に勾配が何桁も小さくなる可能性があります。Sepp Hochreiterは1991年の卒業論文でこの影響を分析しましたが、より優れた活性化関数、初期化手法、アーキテクチャが登場するまで、ディープフィードフォワードネットワークとリカレントニューラルネットワーク(RNN)の学習は困難でした。

勾配が消失する理由#

逆伝播では連鎖律を適用するため、ある層に届く勾配は、上流の勾配に後続する各層の重み行列と活性化関数の微分を掛け合わせたものになります。シグモイド関数の微分は、入力が0のときの値0.25を超えず、ユニットが大きな正または負の入力で飽和すると0に近づきます。tanh関数の微分は最大値が1で、飽和すると同様に0に近づきます。そのため、シグモイド層が20層ある場合、重みを考慮する前の段階で勾配は最大でも0.25²⁰倍となり、10⁻¹²を下回ります。重みのスケールも活性化関数と同じくらい重要です。GlorotとBengioは、問題の多くが初期化にあることを示し、各層の入力数と出力数に応じて重みの分散を調整する方法を提案しました。これにより、層をまたいで活性化と勾配の分散がおおむね一定に保たれます。

ショートカット接続の有無による20層のシグモイドネットワークの重み勾配の大きさを比較すると、この影響を簡単に測定できます。

import torch

torch.manual_seed(0)
x = torch.randn(64, 32)

# The same 20-layer sigmoid network, without and with residual shortcuts
for residual in (False, True):
    layers = [torch.nn.Linear(32, 32) for _ in range(20)]
    h = x
    for layer in layers:
        out = torch.sigmoid(layer(h))
        h = h + out if residual else out
    h.sum().backward()

    # Compare the weight-gradient size at the last layer and the first layer
    last, first = layers[-1].weight.grad.norm(), layers[0].weight.grad.norm()
    print(f"residual={residual}: layer 20 gradient {last:.1e}, layer 1 gradient {first:.1e}")

ショートカット接続がない場合、最終層の勾配ノルムは2.5e+02、最初の層は4.2e-15で、約17桁小さくなります。そのため、最初の層の重みは事実上まったく変化しません。ショートカット接続がある場合、最初の層の勾配は5.6e+01となり、最終層の2.1e+03の約38分の1です。

勾配消失と勾配爆発の違い#

どちらの問題も、同じ乗算の繰り返しによって生じます。勾配消失は学習を静かに停滞させます。最後の層によって損失は低下し続けますが、初期層はランダムな初期値に近いままです。勾配爆発は逆に幾何級数的に増大し、損失の急上昇やNaNの値として顕在化します。勾配クリッピングは、各更新の前に勾配爆発のノルムに上限を設けるもので、すでに消失した勾配には影響しません。ReLUの不活性化問題も関連する問題です。ReLUユニットへの入力が負のままになると、その勾配は正確に0となり、ユニットは学習を停止します。

勾配消失を防ぐ方法#

最も広く使われる解決策は、残差ネットワーク(ResNet)の中核となる恒等ショートカット、残差接続です。残差ブロックの出力はx + F(x)となるため、xに対する勾配は1にFの導関数を加えた値です。ショートカット経路は、上流の勾配を変化させずに通します。

残差ショートカットにより、ResNetは100層を超えるネットワークをトレーニングできます。また、TransformerからYOLO26まで、ほぼすべての最新ディープアーキテクチャに採用されています。YOLO26では、C3k2ブロックが残差ボトルネックを包み込み、標準の畳み込みブロックではバッチ正規化とSiLU活性化関数を組み合わせています。

残差接続と併用できる対策はほかにもあります。

  • 非飽和型活性化関数: 正の入力に対してReLUの微分は正確に1です。また、Leaky ReLUとSiLUは、負の入力に対しても0ではない勾配を保ちます。
  • スケーリングした初期化: Xavier(Glorot)初期化はtanh層とシグモイド層に適しており、He初期化は、ReLUが入力の半分をゼロにすることを補うために、重みの分散を2倍にします。
  • 正規化層: バッチ正規化とレイヤー正規化は、活性化関数が飽和する平坦領域を避けるため、活性化前の値を平均0、分散1に近い状態に保ちます。
  • ゲート付きリカレントアーキテクチャ: 長短期記憶(LSTM)ネットワークとゲート付きリカレントユニット(GRU)は、乗算を繰り返す代わりに、ゲート付きの加算更新によって状態を次の時点へ引き継ぎます。これにより、元のLSTMは1,000ステップを超える時間間隔をつなぐことができました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう