Yolo 深圳
深セン
今すぐ参加
用語集

確率的勾配降下法SGD)

確率的勾配降下法(SGD)が機械学習モデルを最適化する仕組みを学びましょう。Ultralytics SGD 、より高速で効率的なAIトレーニングを実現する仕組みを発見してください。

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

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

あらゆる学習プロセスの主目的は、損失関数を最小化することである。損失関数はモデルの予測値と実際の目標値との差を定量化する。SGD 反復サイクルを通じてこれをSGD 。 まずアルゴリズムは 訓練データからランダムなデータポイントを選択する。 次に順伝播を実行して予測を生成し、誤差を計算する。 逆伝播を用いて、アルゴリズムはその単一例に基づいて 勾配(本質的には誤差の勾配)を計算する。 最後に、誤差を減少させるため、 勾配の反対方向にモデルの重みを更新する。

このプロセスはモデルの性能が安定するまで、多くの反復(しばしばエポックにグループ化される)で繰り返される。これらの更新の大きさは学習率と呼ばれるハイパーパラメータによって制御される。各ステップが単一のサンプルに基づくため、最小値への経路はバッチ勾配降下の滑らかな軌跡と比べてジグザグ状またはノイズが多い傾向にある。 しかし、このノイズは深層学習においてしばしば有利に働く。モデルが局所最適解に陥るのを防ぎ、より優れた全局的解へと導く可能性があるためである。

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

SGD 最適化アルゴリズムの違いを理解することは、適切な学習戦略を選択する上で極めて重要です。

  • バッチ勾配降下法 この伝統的な手法では、更新のたびにデータセット全体を用いて勾配を計算します。 最小値への安定かつ直接的な経路を提供しますが、大規模機械学習(ML)タスクでは 非常に遅く、メモリを大量に消費します。
  • ミニバッチ勾配降下法 実際のところ、PyTorchを含むほとんどの現代的な深層学習フレームワークでは PyTorchを含むほとんどの現代的な深層学習フレームワークは、 SGD 技術的には厳密に「SGD」と呼ばれるハイブリッドアプローチを実装している。この手法は、単一のサンプルではなく、小さなサンプル群(バッチ)を用いてパラメータを更新する。SGD バッチ勾配SGD YOLO26のようなモデルの訓練における標準となっている。
  • Adam : Adam SGD基盤とする適応型学習率最適化アルゴリズムAdam 。モーメント推定値に基づき各パラメータの学習率を個別に調整する。Adam 収束が速いAdam 、特定のシナリオにおいてより汎化性の高い解を見出す能力から、SGD 依然としてコンピュータビジョン(CV)分野で頻繁に使用されている。

実際のアプリケーション

SGD 変種SGD 、今日使用されている多くの変革的なAI技術の基盤となるエンジンである。

  1. 自動運転車: 自動運転車の開発において、モデルは歩行者、交通標識、障害物を識別するために膨大な視覚データストリームを処理しなければならない。これらの高度な物体検出ネットワークを訓練するには、何百万もの道路画像を処理するための効率的な最適化が必要である。SGD 、エンジニアはモデルの精度を反復的にSGD 、自動車向けAIにおける安全上重要なシステムが信頼性の高いリアルタイム判断を下せることを保証する。
  2. 医療診断: 医療画像解析の分野では、MRIスキャンやX線画像における腫瘍などのdetect するために、深層学習が広く活用されている。医療データセットは膨大かつ高解像度であるため、SGD 複雑な畳み込みニューラルネットワーク(CNN)を、メモリリソースを圧迫することなく学習させることがSGD 。これにより、医療分野における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 。主な問題は勾配ステップにおけるノイズであり、これが損失関数の収束を妨げ、急激な変動を引き起こす。これを緩和するため、実践者はしばしばモーメンタムを用いる。これは重たいボールが坂を転がり落ちるように、SGD 加速させつつ振動を抑制する手法である。 さらに、適切な学習率の設定が極めて重要である。高すぎるとモデルが最小値をオーバーシュートする(勾配爆発)恐れがあり、低すぎると学習が著しく遅くなる。 Ultralytics ツールは、ハイパーパラメータ調整の管理や トレーニング指標の可視化を提供することで、このプロセスを自動化する。 Adam のような進歩は、本質的に学習率調整を自動化し、 SGD内在する困難の一部に対処している。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加