Learning Rate
学習率(learning rate)がモデルのトレーニングにどのように影響するかを学びます。Ultralytics YOLO26 でステップサイズを最適化し、物体検出などで最高性能(SOTA)を達成する方法を発見してください。
学習率は、最適化プロセスの際にモデルが取るステップサイズを決定する重要なhyperparameter tuning設定です。ニューラルネットワークのトレーニングの文脈において、モデルがデータのバッチを処理するたびに、推定された誤差に応じてモデルの内部重みがどれだけ更新されるかを制御します。これは、谷(誤差が最も低い点)に向かって山を下る人に例えることができます。学習率はその歩幅の大きさを決定します。歩幅が大きすぎると、谷を完全に飛び越えて底を外してしまう可能性があります。歩幅が小さすぎると、目的地にたどり着くまでに現実的ではないほど長い時間がかかることがあります。
最適化における「ゴルディロックス」のジレンマ#
machine learningのワークフローにおいて、最適な学習率を見つけることは、しばしばバランスを取る作業と言われます。目標は、モデルの予測と実際の正解データの差異を測定するloss functionを最小化することです。このプロセスは、損失のランドスケープをナビゲートするために、stochastic gradient descent (SGD)やAdam optimizerなどのoptimization algorithmに強く依存しています。
- 学習率が高すぎる場合: 値が高すぎると、モデルの重み更新が急激になります。これにより「オーバーシューティング」現象が発生し、モデルがソリューションに収束できずに激しく振動したり発散したりする可能性があります。この不安定さは、exploding gradient問題を引き起こすことがあり、トレーニングプロセスを無駄にしてしまいます。
- 学習率が低すぎる場合: 逆に、極端に小さいステップサイズではモデルが慎重に最小値に向かって進みますが、トレーニングプロセスが非常に遅くなるため、underfittingを引き起こす可能性があります。モデルが局所的最小値にはまってしまったり、単純なパターンを学習するために数千回もの余分なepochsを要したりして、計算リソースを浪費する可能性があります。研究者は、さまざまなアルゴリズムがこれらの値とどのように相互作用するかを理解するために、しばしばPyTorch documentation on optimizationを参照します。
実社会での応用#
学習率調整の影響は、computer vision tasksが展開されるさまざまな重要産業において明らかです。
-
自動運転システム: autonomous vehiclesの開発において、エンジニアは歩行者や交通標識を識別するためのobject detectionモデルをトレーニングするために膨大なデータセットを利用します。YOLO26のような事前学習済みモデルにtransfer learningを適用する場合、開発者は通常、最初のトレーニング時よりもはるかに小さい学習率を使用します。この「ファインチューニング」により、すでに持っている一般的な特徴抽出能力を失うことなく、特定の駆動環境(雪道と砂漠の高速道路など)のニュアンスをモデルが学習できるようになります。
-
医療診断画像:MRIスキャンでの腫瘍検出などのmedical image analysisにおいて、精度は極めて重要です。ここで高い学習率を使用すると、悪性組織と良性組織を区別する微妙なテクスチャの違いをモデルが飛ばしてしまうリスクが生じます。実務家は、「学習率ウォームアップ」と呼ばれるテクニックを採用し、率をゼロから目標値まで徐々に上げてトレーニングの初期段階を安定させ、積極的な学習が始まる前にneural networkの重みが安定した構成に落ち着くようにすることがよくあります。これらの戦略についての詳細は、Google Machine Learning Crash Courseで読むことができます。
関連用語の区別#
学習率は、同じ設定ファイル内で構成されることが多いものの目的が異なるため、他のトレーニングパラメータと区別することが重要です。
- 学習率とバッチサイズ: 学習率は更新の大きさを制御しますが、batch sizeは更新が行われる前に処理されるトレーニングサンプルの数を決定します。両者の間には強い関係があり、多くの場合、バッチサイズを増やす際には、トレーニング効率を維持するために学習率も拡大(スケールアップ)させる必要があり、この概念はlarge-batch trainingに関する論文で探求されています。
- 学習率と減衰: 減衰とは、学習率を時間の経過とともに体系的に削減する戦略を指します。スケジューラーは、30エポックごとに率を10分の1に下げる場合があります。これにより、モデルは初期段階で大きな概念的ジャンプを行い、トレーニングの終盤に向けてより小さなステップで精度を洗練させることができます。これはUltralytics Python packageの標準機能です。
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)上級者向けには、fast.aiによって普及したLR Finderなどのテクニックを使用することで、損失が発散するまで率を指数関数的に増加させる短いトライアルエポックを実行し、最適な開始値の発見を実質的に自動化できます。このハイパーパラメータを習得することが、多くの場合、AIプロジェクトでSOTA (State-of-the-Art)パフォーマンスを解放する鍵となります。






