用語集

確率的勾配降下法 (SGD)

確率的勾配降下がどのように機械学習モデルを最適化し、大規模なデータセットやディープラーニングタスクの効率的な学習を可能にするかをご覧ください。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

一般的にSGDとして知られる確率的勾配降下は、機械学習(ML)、特にディープラーニング(DL)で広く使用されている一般的で効率的な最適化アルゴリズムです。SGDは、標準的な勾配降下アルゴリズムのバリエーションとして機能しますが、非常に大規模なデータセットを扱う際の速度と効率性を重視して特別に設計されています。SGDは、各ステップでデータセット全体を使用して勾配(損失関数の最急降下方向)を計算する代わりに、ランダムに選択された1つのデータサンプル、またはミニバッチと呼ばれる小さなサブセットに基づいて勾配を近似する。このアプローチにより、計算コストとメモリ要件が大幅に削減され、大量のデータに対する複雑なモデルの学習が可能になる。

機械学習における関連性

SGDは、大規模な機械学習モデル、特に最新のAIアプリケーションの多くを支える複雑なニューラルネットワーク(NN)を学習するための基礎となるものです。SGDの効率性により、メモリに収まらないほど大きなデータセットや、従来のバッチ勾配降下法では処理に時間がかかりすぎるようなデータセットを扱う場合に不可欠となります。次のようなモデル Ultralytics YOLOのようなモデルは、物体検出画像分類画像セグメンテーションのようなタスクのパターンを学習するために、学習プロセスでSGDやその変種を利用することが多い。次のような主要なディープラーニングフレームワーク PyTorchTensorFlowなどの主要なディープラーニングフレームワークは、SGDの強固な実装を提供しており、AIのエコシステムにおけるSGDの基本的な役割を強調している。

キーコンセプト

SGDを理解するには、いくつかの核となる考え方がある:

  • 確率的性質:確率的」という用語は、各ステップでの勾配の推定に1つまたは数個のサンプルのみを使用することによって導入されるランダム性を指します。このランダム性が最適化プロセスにノイズを加えることで、モデルが貧弱なローカル・ミニマムから脱出し、より良い全体解を見つけるのに役立つことがある。
  • ミニバッチ:純粋なSGDでは更新ごとに1つのサンプルを使用しますが、実際にはサンプルの小さな「ミニバッチ」(32、64、128など)を使用するのが一般的です。このアプローチは、現在でもSGDと呼ばれることが多く、単一サンプル更新の効率と、小さなバッチで勾配を平均化することで得られる安定性のバランスをとっています。このバッチのサイズは、バッチサイズ・ハイパーパラメータによって制御されます。
  • 学習率:この重要なハイパーパラメータは、最適化プロセスのステップの大きさを決定します。学習率は収束に不可欠であり、高すぎるとプロセスが最小値をオーバーシュートする可能性があり、低すぎると学習が過度に遅くなる。学習率スケジューリングのような技法は、SGDと一緒に使われることが多い。
  • 損失関数:SGDは損失関数を最小化することを目的としており、この損失関数はモデルの予測値と訓練データにおける実際の目標値との差を測定する。

関連概念との違い

SGDはいくつかの最適化アルゴリズムのひとつであり、他のものと区別することが重要です:

  • 勾配降下法(バッチGD):主な違いは勾配の計算方法にある。バッチGDは、各パラメータの更新にデータセット全体を使用するため、正確な勾配が得られるが、大規模なデータセットでは計算コストが高くなり、速度も遅くなる。SGDは1つのサンプル(またはミニバッチ)を使用するため、各更新は非常に高速になりますが、ノイズが大きくなります。標準的な方法については、勾配降下法の用語集ページを参照してください。
  • ミニバッチ勾配降下法:これは最も一般的な実用的実装であり、単にSGDと呼ばれることも多い。これはデータの小さなランダムな部分集合(ミニバッチ)に対して勾配を計算します。バッチGDの精度と純粋なSGDの効率性の間でバランスが取れています。
  • アダム・オプティマイザーAdamは適応学習率最適化アルゴリズムであり、過去の勾配に基づいて各パラメータの学習率を個別に調整する。Adamは基本的なSGDよりも早く収束することが多いが、「機械学習における適応勾配法の限界値」などの研究で議論されているように、SGD(特にモメンタム付き)の方が未知のデータに対してより良く一般化できることがある。

実世界での応用

SGDの効率性は、数多くの大規模なAIアプリケーションでの使用を可能にしている:

例1:大規模言語モデル(LLM)のトレーニング

自然言語処理(NLP)で使用されるようなモデルの学習には、膨大なテキストデー タセット(数十億語)が必要になることが多い。SGDとその亜種は、このようなデータを効率的に繰り返し処理し、モデルに文法、文脈、意味論を学習させるために不可欠です。以下のようなプラットフォーム Hugging Faceなどのプラットフォームは、変換モデルの学習にこれらのオプティマイザを多用している。

例 2:リアルタイム物体検出トレーニング

リアルタイム推論用に設計されたUltralytics YOLO ようなモデルでは、学習を効率的に行う必要があります。SGDにより、開発者はCOCOのような大規模な画像データセットや、Ultralytics HUBのようなプラットフォームを介して管理されるカスタムデータセットでこれらのモデルをトレーニングすることができます。迅速な更新により、バッチGDと比較して収束が早くなり、モデル開発とハイパーパラメータのチューニング中に迅速に反復するのに重要です。

すべて読む