Adam Optimizer
ディープラーニング向けのAdamオプティマイザーを探求します。Ultralytics YOLO26のようなモデルにおいて、慣性とRMSPropを組み合わせて収束を高速化する方法を学びましょう。
Adam オプティマイザー(Adaptive Moment Estimation の略)は、ディープラーニングモデルのトレーニングに広く使用されている洗練された最適化アルゴリズムです。これは、確率的勾配降下法 (SGD) の他の 2 つの人気のある拡張機能である Adaptive Gradient Algorithm (AdaGrad) と Root Mean Square Propagation (RMSProp) の利点を組み合わせることで、この分野に革命をもたらしました。勾配の 1 次モーメントおよび 2 次モーメントの推定値から異なるパラメーターの個別の適応型学習率を計算することにより、Adam はニューラルネットワークが従来の方法よりも大幅に高速に収束できるようにします。その堅牢性と最小限のチューニング要件により、新しい機械学習 (ML) プロジェクトを開始する多くの実務者にとってデフォルトの選択肢となっています。
Adamの仕組み#
その核心において、モデルのトレーニングには、モデルの予測と実際のデータの差を測定する損失関数を最小化することが含まれます。標準的なアルゴリズムは通常、一定のステップサイズ(学習率)を使用して、最小誤差に向かって「損失の地形(loss landscape)」を下っていきます。ただし、この地形は多くの場合複雑であり、単純なアルゴリズムをトラップする可能性のある渓谷やプラトー(平坦地)を備えています。
Adamは、すべてのパラメータに対して2つの履歴バッファを保持することでこれに対処します。
-
モメンタム(1次モーメント): 丘を転がり落ちる重いボールのように、過去の勾配の移動平均を追跡し、関連する方向への速度を維持します。
-
分散(2次モーメント): 2乗された勾配の移動平均を追跡し、これによって学習率をスケーリングします。
この組み合わせにより、オプティマイザーは、地形の平坦な領域ではより大きなステップを踏み、急勾配やノイズの多い領域ではより小さく慎重なステップを踏むことができます。具体的な仕組みは、Kingma と Ba による基礎的なAdam に関する研究論文に詳細に記載されており、さまざまなディープラーニング (DL) タスク全体での経験的な優位性が示されています。
実社会での応用#
Adam オプティマイザーの汎用性により、人工知能 (AI) の事実上すべての分野で採用が進んでいます。
- 自然言語処理 (NLP): Generative Pre-trained Transformers (GPT) などの大規模言語モデルは、トレーニングに Adam(またはそのバリアントである AdamW)に大きく依存しています。このアルゴリズムは、膨大な語彙と大量のデータセットに関連付けられたスパースな勾配を効率的に処理し、強力なチャットボットや翻訳システムの作成を可能にします。
- 医療におけるコンピュータビジョン: 医用画像解析において、モデルは MRI スキャン内の腫瘍のような微妙な異常を検出しなければなりません。Adam は、畳み込みニューラルネットワーク (CNN) が高精度のソリューションにすばやく収束するのを助けます。これは、医療における AI の診断ツールを開発する際に不可欠です。
AdamとSGDの比較#
Adam は一般に収束が早くなりますが、確率的勾配降下法 (SGD) と区別することが重要です。SGD は固定の学習率を使用してモデルの重みを更新するため、最先端の物体検出モデルのトレーニングの最終段階で好まれることがよくあります。テストデータでわずかに優れた汎化性能(最終精度)を達成できる場合があるためです。
ただし、Adam は「適応的(adaptive)」であるため、学習率のチューニングを自動的に処理することを意味します。これにより、初期の実験や、SGD のチューニングが困難な複雑なアーキテクチャに対して、はるかにユーザーフレンドリーになります。Ultralytics プラットフォームで実験を管理しているユーザーにとって、パフォーマンスを比較するためにこれらのオプティマイザーを切り替えることは、多くの場合、ハイパーパラメータチューニングにおける重要なステップとなります。
Ultralyticsによる実装#
PyTorch や Ultralytics ライブラリなどの最新のフレームワークにより、Adam の利用が簡単になります。AdamW(重み減衰付き Adam)と呼ばれる人気のあるバリアントは、元の Adam アルゴリズムの正則化に関する問題を修正するため、推奨されることがよくあります。これは、AdamW がもたらす安定性の恩恵を受ける YOLO26 などの最新のアーキテクチャに特に効果的です。
次の例は、AdamWオプティマイザーを使用してUltralytics 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 オプティマイザーのドキュメントには、カスタマイズに使用できる引数と実装の詳細に関する技術情報が記載されています。






