確率的勾配降下法(SGD)が機械学習モデルを最適化する仕組みを学びましょう。Ultralytics SGD 、より高速で効率的なAIトレーニングを実現する仕組みを発見してください。
確率的勾配降下法(SGD)は、機械学習においてモデルを効率的に学習させるために広く用いられる強力な最適化アルゴリズムである。特に大規模データセットを扱う場合に有効だ。その本質は標準的な勾配降下法のSGD 、モデルパラメータをより頻繁に更新することで学習プロセスを高速化するように設計されている。従来のバッチ勾配降下法のように、単一の更新を行う前に全データセットの誤差を計算する代わりに、SGD 一度に単一のランダムに選択された学習例のみを用いてモデルの重みをSGD 。この「確率的」あるいはランダムな性質が最適化経路にノイズを導入し、モデルが学習収束から脱却するのを助ける可能性がある。 降下法のように全データセットの誤差を計算してから更新するのではなく、SGD 一度に1つのランダムに選択された学習例のみを使用してモデルの重みをSGD 。この「確率的」またはランダムな性質は最適化経路にノイズを導入し、全データを一度に処理することが計算上困難な大規模データセットにおいて、モデルが次善の解から脱出し、より速く収束するのに役立ちます。
あらゆる学習プロセスの主目的は、損失関数を最小化することである。損失関数はモデルの予測値と実際の目標値との差を定量化する。SGD 反復サイクルを通じてこれをSGD 。 まずアルゴリズムは 訓練データからランダムなデータポイントを選択する。 次に順伝播を実行して予測を生成し、誤差を計算する。 逆伝播を用いて、アルゴリズムはその単一例に基づいて 勾配(本質的には誤差の勾配)を計算する。 最後に、誤差を減少させるため、 勾配の反対方向にモデルの重みを更新する。
このプロセスはモデルの性能が安定するまで、多くの反復(しばしばエポックにグループ化される)で繰り返される。これらの更新の大きさは学習率と呼ばれるハイパーパラメータによって制御される。各ステップが単一のサンプルに基づくため、最小値への経路はバッチ勾配降下の滑らかな軌跡と比べてジグザグ状またはノイズが多い傾向にある。 しかし、このノイズは深層学習においてしばしば有利に働く。モデルが局所最適解に陥るのを防ぎ、より優れた全局的解へと導く可能性があるためである。
SGD 最適化アルゴリズムの違いを理解することは、適切な学習戦略を選択する上で極めて重要です。
SGD 変種SGD 、今日使用されている多くの変革的なAI技術の基盤となるエンジンである。
のような高水準ライブラリがある一方で ultralytics 内部で最適化を処理する
train() コマンドでは、SGD がどのように初期化され、低レベルな
PyTorch ワークフロー。このスニペットは、tensorに対する単純なSGD の定義を示しています。
import torch
import torch.nn as nn
import torch.optim as optim
# Define a simple linear model
model = nn.Linear(10, 1)
# Initialize Stochastic Gradient Descent (SGD) optimizer
# 'lr' is the learning rate, and 'momentum' helps accelerate gradients in the right direction
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# Create a dummy input and target
data = torch.randn(1, 10)
target = torch.randn(1, 1)
# Forward pass
output = model(data)
loss = nn.MSELoss()(output, target)
# Backward pass and optimization step
optimizer.zero_grad() # Clear previous gradients
loss.backward() # Calculate gradients
optimizer.step() # Update model parameters
print("Model parameters updated using SGD.")
SGD 人気があるにもかかわらず、課題SGD 。主な問題は勾配ステップにおけるノイズであり、これが損失関数の収束を妨げ、急激な変動を引き起こす。これを緩和するため、実践者はしばしばモーメンタムを用いる。これは重たいボールが坂を転がり落ちるように、SGD 加速させつつ振動を抑制する手法である。 さらに、適切な学習率の設定が極めて重要である。高すぎるとモデルが最小値をオーバーシュートする(勾配爆発)恐れがあり、低すぎると学習が著しく遅くなる。 Ultralytics ツールは、ハイパーパラメータ調整の管理や トレーニング指標の可視化を提供することで、このプロセスを自動化する。 Adam のような進歩は、本質的に学習率調整を自動化し、 SGD内在する困難の一部に対処している。