YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

確率的勾配降下法SGD)

Stochastic Gradient Descent (SGD) が機械学習モデルをどのように最適化するかを学びましょう。SGDがUltralytics YOLO26を強化し、より高速で効率的なAIトレーニングを実現する方法を発見してください。

確率的勾配降下法 (SGD) は、機械学習においてモデルを効率的に訓練するために広く使用される強力な最適化アルゴリズムであり、特に大規模なデータセットを扱う場合に有効です。その核となるSGDは、モデルパラメータをより頻繁に更新することで学習プロセスを高速化するように設計された、標準的な勾配降下法のバリエーションです。従来のバッチ勾配降下法のように、単一の更新を行う前にデータセット全体の誤差を計算する代わりに、SGDは一度に単一のランダムに選択された訓練例のみを使用してモデルの重みを更新します。この「確率的」またはランダムな性質は最適化パスにノイズを導入し、これによりモデルは最適ではない解から脱出し、一度にすべてのデータを処理することが計算上困難な大規模データセットにおいて、より速く収束するのに役立ちます。

確率的勾配降下法はどのように機能するか

あらゆるトレーニングプロセスの主な目標は、モデルの予測と実際のターゲット値との差を定量化する損失関数を最小化することです。SGDはこれを反復サイクルを通じて達成します。まず、アルゴリズムはトレーニングデータからランダムなデータポイントを選択します。次に、順伝播を実行して予測を生成し、誤差を計算します。バックプロパゲーションを使用して、アルゴリズムはその単一の例に基づいて勾配、つまり誤差のランドスケープの傾きを計算します。最後に、誤差を減らすために勾配とは逆方向にモデルの重みを更新します。

このプロセスは、モデルのパフォーマンスが安定するまで、多くの場合エポックにグループ化された多数のイテレーションで繰り返されます。これらの更新の大きさは、学習率として知られるハイパーパラメータによって制御されます。各ステップが1つのサンプルのみに基づいているため、最小値への経路は、バッチ勾配降下の滑らかな軌道と比較して、しばしばジグザグまたはノイズが多いものになります。しかし、このノイズは深層学習において有利であることが多く、モデルが局所最適解に陥るのを防ぎ、より良い大域最適解につながる可能性があります。

SGD 他の最適化アルゴリズムとの比較

SGDと関連する最適化アルゴリズムとの違いを理解することは、適切なトレーニング戦略を選択するために不可欠です。

  • バッチ勾配降下法: この従来の手法は、すべての更新においてデータセット全体を使用して勾配を計算します。これは最小値への安定した直接的なパスを提供しますが、大規模な機械学習(ML)タスクでは非常に遅く、メモリを大量に消費します。
  • Mini-Batch Gradient Descent: 実際には、PyTorchを含むほとんどの最新の深層学習フレームワークは、SGDと称されることが多いものの、技術的には厳密には「Mini-Batch SGD」であるハイブリッドアプローチを実装しています。この手法は、1つのサンプルではなく、少数のサンプルグループ(バッチ)を使用してパラメータを更新します。純粋なSGDの計算効率とバッチ勾配降下法の安定性を両立させ、YOLO26のようなモデルの訓練における標準となっています。
  • Adam Optimizer: Adamは、SGDを基盤とする適応型学習率最適化アルゴリズムです。モーメント推定に基づいて、各パラメータの学習率を個別に調整します。Adamは収束が速いことが多いですが、運動量付きSGDは、特定のシナリオでより汎化可能な解を見つける能力があるため、コンピュータビジョン(CV)において依然として頻繁に使用されています。

実際のアプリケーション

SGDとその派生は、今日使用されている多くの革新的なAI技術の原動力となっています。

  1. 自動運転車: 自動運転車の開発において、モデルは膨大な視覚データを処理し、歩行者、交通標識、障害物を識別する必要があります。これらの洗練された物体検出ネットワークの学習には、何百万もの道路画像を処理するための効率的な最適化が求められます。SGDを用いることで、エンジニアはモデルの精度を繰り返し改善し、自動車分野のAIにおける安全性が極めて重要なシステムが信頼性の高いリアルタイムの意思決定を行えるようにします。
  2. 医療診断: 医用画像解析の分野では、MRIスキャンやX線画像における腫瘍などの異常をdetectするために、ディープラーニングが多用されています。医用データセットは膨大で高解像度であるため、SGDはメモリリソースを過度に消費することなく、複雑な畳み込みニューラルネットワーク(CNN)のトレーニングを可能にします。これにより、ヘルスケアAIにおいて医師を支援する高精度な診断ツールの作成が促進されます。

Python コード例

のような高水準ライブラリがある一方で 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を関連する方向に加速させ、振動を抑制するのに役立つ技術です。さらに、適切な学習率を見つけることが重要です。高すぎるとモデルが最小値を通り過ぎてしまう可能性があり(勾配爆発)、低すぎると学習が非常に遅くなります。Ultralytics Platformのようなツールは、ハイパーパラメータチューニングを管理し、学習メトリクスの可視化を提供することで、このプロセスを自動化するのに役立ちます。Adam optimizerのような進歩は、学習率の調整を本質的に自動化し、SGDの固有の困難の一部に対処しています。

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

未来の機械学習で、新たな一歩を踏み出しましょう。