物体検出、姿勢推定などのタスクの安定したトレーニングを保証するために、深層学習における勾配爆発を管理する方法を学びます。
爆発的勾配とは、ディープ・ニューラル・ネットワークの学習中に遭遇する、損失関数の勾配が累積していくような致命的な不安定性のことである。 損失関数の勾配が蓄積し、過度に大きくなる。 過度に大きくなる。この現象は バックプロパゲーションの間に発生する。 誤差微分を計算し、モデルの重みを更新するために使用されるプロセスであるバックプロパゲーション中に発生する。この勾配が指数関数的に大きくなると これらの勾配が指数関数的に大きくなると、最適化アルゴリズムに大規模な 最適化アルゴリズムに大量の 最適化アルゴリズムがネットワーク・パラメー タを大量に更新することになる。その結果、モデルは最適な設定をオーバーシュートし、損失値が変動する発散的な学習プロセスを引き起こす。 損失値が乱高下したり、NaN(Not a Number)になったりする が乱高下したり、NaN(Not a Number)になったりして、モデルが学習データから学習できなくなる。 学習データから学習できなくなる。
勾配が爆発する根本的な原因は、ディープ・アーキテクチャーで微分の計算に使われる数学的連鎖規則にある。 にある。誤差が出力層から入力層へと逆伝播するとき、誤差は各中間層の重みに乗算される。 の重みが乗算される。
最新のAIフレームワークとアーキテクチャは、このリスクを軽減し、安定した収束を保証するための特定の技術を採用している。
以下の通りである。 PyTorch スニペットは、グラデーションクリッピングを手動で実装する方法を示している。
のような高レベルのトレーニングワークフローで自動的に処理されるテクニックです。 ultralytics:
import torch
import torch.nn as nn
# Define a simple linear model and optimizer
model = nn.Linear(10, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# Simulate a training step
loss = model(torch.randn(10)).sum()
loss.backward()
# Apply gradient clipping to prevent explosion before the optimizer step
# This limits the maximum norm of the gradients to 1.0
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
爆発勾配を、その対極である消失勾配と区別することは重要である。 消失勾配と区別することが重要である。どちらもディープネットワークにおける ディープネットワークにおける同じ連鎖則の乗算に由来するが、その効果は正反対である:
勾配の大きさを管理することは、現代の人工知能(AI)で使用される高度なモデルを訓練するための必須条件である。 人工知能
ニューラルネットワークのトレーニングの安定化については、次の文献を参照してください。 スタンフォードCS231nコースノートを参照すると、より深い数学的視点が得られる。 を参照されたい。

