Learning Rate
学習率がモデルのトレーニングに与える影響を学びます。物体検出などでSOTAの性能を達成するため、Ultralytics YOLO26のステップサイズを最適化する方法を解説します。
学習率は、最適化プロセスでモデルが取るステップサイズを決定する重要なハイパーパラメータチューニング設定です。ニューラルネットワークのトレーニングでは、モデルがデータのバッチを処理するたびに、推定された誤差に応じてモデル内部の重みをどの程度更新するかを制御します。これを、人が山を下って谷(誤差が最小になる地点)に向かって歩く様子にたとえると、学習率は歩幅に相当します。歩幅が大きすぎると、谷を完全に飛び越えて底に到達できない可能性があります。歩幅が小さすぎると、目的地に到達するまでに現実的ではないほど長い時間がかかる可能性があります。
最適化における「ゴルディロックス」のジレンマ#
最適な学習率を見つけることは、機械学習ワークフローにおけるバランス調整として説明されることがよくあります。目標は、モデルの予測と実際のグラウンドトゥルースとの差を測定する損失関数を最小化することです。このプロセスでは、損失ランドスケープを探索するために、確率的勾配降下(SGD)などの最適化アルゴリズムやAdamオプティマイザーに大きく依存します。
- 学習率が高すぎる場合: 値を高く設定しすぎると、モデルの重みの更新が大幅になります。これにより、モデルが解に収束せず、激しく振動したり発散したりする「オーバーシュート」現象が発生する可能性があります。この不安定性によって、勾配爆発の問題が引き起こされ、トレーニングプロセスが役に立たなくなる場合もあります。
- 学習率が低すぎる場合: 反対に、ステップサイズが極端に小さいと、モデルは最小値に向かって慎重に進みますが、トレーニングプロセスが非常に遅くなるため、アンダーフィッティングが発生する可能性があります。モデルが実質的に局所最小値から抜け出せなくなったり、単純なパターンを学習するために何千もの追加エポックが必要になったりして、計算リソースを無駄にすることがあります。研究者は、さまざまなアルゴリズムがこれらの値とどのように相互作用するかを理解するために、PyTorchの最適化に関するドキュメントを参照することがよくあります。
実世界での利用例#
学習率の調整がもたらす影響は、コンピュータービジョンタスクが導入されているさまざまな重要産業で明らかに見られます。
-
自動運転システム: 自動運転車の開発では、エンジニアは大規模なデータセットを使用して、歩行者や交通標識を識別するための物体検出モデルをトレーニングします。YOLO26のような事前トレーニング済みモデルに転移学習を適用する場合、開発者は通常、初期トレーニング時よりもはるかに小さい学習率を使用します。この「ファインチューニング」により、モデルがすでに備えている一般的な特徴抽出能力を失うことなく、特定の運転環境(例:雪道と砂漠の高速道路)の細かな違いを学習できるようになります。
-
医療診断画像: MRIスキャンでの腫瘍検出などの医用画像解析では、精度が極めて重要です。ここで学習率が高いと、悪性組織と良性組織を区別する微妙なテクスチャの違いをモデルが飛ばしてしまうリスクがあります。実務担当者は、「学習率ウォームアップ」と呼ばれる手法をよく使用します。これは、学習率をゼロから目標値まで徐々に引き上げることで、トレーニング初期段階を安定させ、急速な学習を開始する前にニューラルネットワークの重みを安定した構成に落ち着かせる手法です。これらの戦略については、Google Machine Learning Crash Courseで詳しく確認できます。
関連用語の区別#
学習率は、他のトレーニングパラメーターと区別することが重要です。これらは同じ設定ファイルで構成されることが多いものの、目的はそれぞれ異なります。
- 学習率とバッチサイズ: 学習率が更新の大きさを制御するのに対し、バッチサイズは、更新が発生する前に処理されるトレーニングサンプルの数を決定します。この2つには強い関係があり、トレーニング効率を維持するために、バッチサイズを増やす際は学習率も大きくする必要があることがよくあります。この概念は、大規模バッチトレーニングに関する論文で検討されています。
- 学習率と減衰: 減衰とは、時間の経過に伴って学習率を体系的に低下させる戦略を指します。スケジューラーは、30エポックごとに学習率を10分の1に下げる場合があります。これにより、モデルは初期段階で大きな概念的な更新を行い、トレーニングの終盤ではより小さなステップで精度を調整できます。これはUltralytics Pythonパッケージの標準機能です。
Ultralytics YOLOでの学習率の設定#
最新のフレームワークを使用すると、初期学習率(lr0)と最終学習率の割合(lrf)を簡単に調整できます。以下は、カスタムトレーニングの実行でUltralytics Platform互換クライアントを使用して設定する方法の例です。
from ultralytics import YOLO
# Load the YOLO26 model (latest state-of-the-art architecture)
model = YOLO("yolo26n.pt")
# Train the model with a custom initial learning rate
# lr0=0.01 sets the initial rate
# lrf=0.01 sets the final learning rate to (lr0 * lrf)
results = model.train(data="coco8.yaml", epochs=10, lr0=0.01, lrf=0.01)上級ユーザー向けには、LR Finder(fast.aiによって普及した手法)のようなテクニックを使用することで、短い試行エポックを実行し、損失が発散するまで学習率を指数関数的に増加させて、最適な開始値の探索を実質的に自動化できます。このハイパーパラメータを習得することは、AIプロジェクトでSOTA(最先端)のパフォーマンスを引き出す鍵となることがよくあります。









