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

Adam オプティマイザー

ディープラーニング向けのAdamオプティマイザを探求しましょう。それがモーメンタムとRMSPropをどのように組み合わせて、Ultralytics YOLO26のようなモデルでより速い収束を実現するかを学びます。

Adamオプティマイザ(Adaptive Moment Estimationの略)は、深層学習モデルの学習に広く用いられる洗練された最適化アルゴリズムです。これは、確率的勾配降下法 (SGD)の他の2つの人気のある拡張機能であるAdaptive Gradient Algorithm (AdaGrad)とRoot Mean Square Propagation (RMSProp)の利点を組み合わせることで、この分野に革命をもたらしました。勾配の1次および2次モーメントの推定値から異なるパラメータに対する個別の適応的な学習率を計算することにより、Adamはニューラルネットワークを従来の方法よりも大幅に速く収束させることができます。その堅牢性と最小限のチューニング要件により、新しい機械学習 (ML)プロジェクトを開始する多くの実務家にとってデフォルトの選択肢となっています。

Adam 働き

モデルトレーニングの核となるのは、モデルの予測と実際のデータとの差を測定する損失関数を最小化することです。標準的なアルゴリズムは通常、一定のステップサイズ(学習率)を使用して「損失ランドスケープ」を最小誤差に向かって降下させます。しかし、このランドスケープはしばしば複雑で、単純なアルゴリズムを捕捉する可能性のある谷や高原を特徴としています。

Adamは、各パラメーターに対して2つの履歴バッファを保持することでこれを解決します。

  1. Momentum (First Moment): 重いボールが坂を転がり落ちるように、これは過去の勾配の移動平均を追跡し、関連する方向への速度を維持します。
  2. 分散(二次モーメント): これは、学習率をスケーリングする勾配の二乗の移動平均を追跡します。

この組み合わせにより、オプティマイザはランドスケープの平坦な領域ではより大きなステップを、急峻またはノイズの多い領域ではより小さく慎重なステップを踏むことができます。その具体的なメカニズムは、様々な深層学習 (DL)タスクにおいて経験的な優位性を示した、KingmaとBaによる基礎的なAdam研究論文に詳述されています。

実際のアプリケーション

Adamオプティマイザの汎用性により、人工知能 (AI)のほぼ全ての分野で採用されています。

  • 自然言語処理(NLP): Generative Pre-trained Transformers (GPT)のような大規模言語モデルは、トレーニングにAdam(またはその派生であるAdamW)に大きく依存しています。このアルゴリズムは、膨大な語彙と大規模なデータセットに関連するスパースな勾配を効率的に処理し、強力なチャットボットや翻訳システムの作成を可能にします。
  • ヘルスケアにおけるコンピュータビジョン: 医用画像解析では、モデルはMRIスキャンにおける腫瘍のような微妙な異常をdetectする必要があります。Adamは畳み込みニューラルネットワーク (CNN)が迅速に高精度な解に収束するのを助け、これはヘルスケアAIの診断ツールを開発する上で極めて重要です。

Adam vs. SGD

Adamは一般的に収束が速いですが、確率的勾配降下法 (SGD)と区別することが重要です。SGDは固定学習率を使用してモデルの重みを更新し、テストデータでわずかに優れた汎化性能(最終精度)を達成できる場合があるため、最先端の物体検出モデルのトレーニングの最終段階でしばしば好まれます。

しかし、Adamは「適応的」であり、学習率の調整を自動的に行います。これにより、初期の実験やSGDの調整が困難な複雑なアーキテクチャにおいて、はるかに使いやすくなります。Ultralytics Platformで実験を管理するユーザーにとって、これらのオプティマイザを切り替えてパフォーマンスを比較することは、ハイパーパラメータチューニングにおける重要なステップとなることがよくあります。

Ultralytics実装

PyTorchやUltralyticsライブラリのような現代のフレームワークは、Adamの利用を簡素化します。AdamW(Adam with Weight Decay)と呼ばれる一般的な派生形は、元のAdamアルゴリズムにおける正則化の問題を修正するため、しばしば推奨されます。これは、AdamWが提供する安定性から恩恵を受けるYOLO26のような最新のアーキテクチャに特に効果的です。

以下の例は、AdamWオプティマイザを使用してYOLO26モデルをトレーニングする方法を示しています。

from ultralytics import YOLO

# Load the cutting-edge YOLO26n model
model = YOLO("yolo26n.pt")

# Train the model using the 'AdamW' optimizer
# The 'optimizer' argument allows easy switching between SGD, Adam, AdamW, etc.
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW")

より深い理論的根拠に興味のある開発者向けには、Stanford CS231n Optimization Notesのようなリソースが、AdamがRMSPropやAdaGradのような他のアルゴリズムとどのように比較されるかについて優れた視覚化を提供しています。さらに、PyTorch Optimizer Documentationは、カスタマイズに利用できる引数と実装の詳細に関する技術情報を提供しています。

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

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