Optimization Algorithm
SGDやAdamWなどの最適化アルゴリズムがMLトレーニングを支える方法を確認します。損失を最小化し、AIアプリケーション向けにUltralytics YOLO26のパフォーマンスを向上させる方法を学びます。
最適化アルゴリズムは、機械学習 (ML)モデルや深層学習 (DL)モデルのトレーニングプロセスを駆動する中核的な計算エンジンです。主な役割は、予測結果と実際のターゲットとの誤差を最小化するために、内部のモデル重みとバイアスを反復的に調整することです。このプロセスは、霧の深い山を下り、谷の最も低い地点を目指して進もうとするハイカーにたとえることができます。最適化アルゴリズムはガイドとして機能し、谷底に到達するためにハイカーが進むべき方向と歩幅を決定します。これは、損失関数が最小化され、モデルの予測精度が最大化された状態に相当します。
最適化アルゴリズムの仕組み#
ニューラルネットワークのトレーニングには、予測、誤差計算、パラメーター更新を繰り返すサイクルが含まれます。最適化アルゴリズムは、このループの「更新」フェーズを制御します。トレーニングデータのバッチが処理されると、システムはバックプロパゲーションと呼ばれる手法を使用して、誤差が最も急激に増加する方向を示すベクトルである勾配を計算します。
オプティマイザーは、誤差を減らすために勾配とは反対の方向へモデルパラメーターを更新します。この更新量は、学習率と呼ばれる重要なハイパーパラメーターによって決まります。ステップが大きすぎると、モデルは大域的最小値を通り過ぎる可能性があります。一方、小さすぎると、トレーニングが極端に遅くなったり、局所的最小値から抜け出せなくなったりする可能性があります。Stanford CS231nの最適化ノートなどの高度な資料では、これらの動態についてさらに深い技術的知見が提供されています。
最適化アルゴリズムの一般的な種類#
問題によって必要な戦略は異なります。多くのバリエーションがありますが、現代のAI開発ではいくつかの主要なアルゴリズムが広く使われています。
- 確率的勾配降下法 (SGD): データセット全体ではなく、1つのサンプルまたは小さなバッチを使用してパラメーターを更新する古典的な手法です。この手法は計算効率が高く、Scikit-learnなどのライブラリで広く使用されています。
- Adamオプティマイザー: 適応モーメント推定を意味するAdamは、各パラメーターの学習率を個別に調整します。この手法は、画期的なKingmaとBaによるAdamの研究論文で詳しく説明されており、速度と収束特性に優れているため、汎用トレーニングではデフォルトの選択肢となることがよくあります。
- AdamW: 勾配の更新から重み減衰を分離したAdamの派生手法であり、より優れた汎化性能を実現します。これは、Transformerや高性能なUltralytics YOLO26モデルなど、最先端アーキテクチャのトレーニングでよく選ばれるオプティマイザーです。
実世界での利用例#
最適化アルゴリズムは、ほぼすべての成功したAIソリューションの背後で目立たずに動作し、データを実行可能なインテリジェンスへと変換しています。
-
自動運転車: 自動運転技術では、物体検出システムが歩行者、信号機、他の車両を瞬時に認識する必要があります。自動車分野のAI向けにこれらのシステムをトレーニングする際、最適化アルゴリズムは何百万枚もの道路画像を処理し、検出誤差を最小化するようにネットワークを微調整します。これにより、車両は人を認識したときに確実に停止し、事故を防止できます。
-
医用画像解析: MRIスキャンで腫瘍を特定するなど、医療分野のAIのアプリケーションでは、精度が不可欠です。オプティマイザーは、畳み込みニューラルネットワーク (CNNs)のトレーニングを導き、悪性組織と正常組織を高い感度で区別できるようにすることで、重要な診断における偽陰性のリスクを低減します。
関連する概念との違い#
ワークフローを効果的に理解するには、最適化アルゴリズムを学習プロセスの他のコンポーネントと区別することが重要です。
- 最適化アルゴリズムと損失関数の違い: 損失関数は「スコアボード」として機能し、モデルの予測がどの程度間違っているかを表す数値(平均二乗誤差など)を計算します。最適化アルゴリズムは、そのスコアを使用して重みを調整し、次のラウンドでパフォーマンスを向上させる「戦略担当者」です。
- 最適化アルゴリズムとハイパーパラメーターチューニングの違い: 最適化アルゴリズムは、トレーニングループの実行中に内部パラメーター(重み)を学習します。ハイパーパラメーターチューニングでは、トレーニング開始前に、オプティマイザー自体の選択、バッチサイズ、初期学習率など、外部設定の最適な値を選択します。Ray Tuneなどの自動化ツールは、これらの外部設定の最適な組み合わせを見つけるためによく使用されます。
Pythonでの最適化の実装#
最新のフレームワークでは、最適化アルゴリズムの選択を1つの引数で行うことがよくあります。次の例では、ultralyticsパッケージ内のAdamWオプティマイザーを使用して、YOLO26モデルをトレーニングする方法を示します。ユーザーは、これらのトレーニングセッションをコードなしで管理するために、Ultralytics Platformを利用することもできます。
from ultralytics import YOLO
# Load the latest YOLO26 model (recommended for new projects)
model = YOLO("yolo26n.pt")
# Train the model using the 'AdamW' optimization algorithm
# The optimizer iteratively updates weights to minimize loss on the dataset
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW")より低レベルの仕組みに関心がある場合は、PyTorch OptimizersやTensorFlow Keras Optimizersなどのフレームワークで、カスタム研究アーキテクチャ向けにこれらのアルゴリズムを実装およびカスタマイズする方法について詳しいドキュメントが提供されています。









