1.1 定義と役割
学習率スケジューリングとは、機械学習および深層学習において、トレーニング過程で学習率(optimizerの更新ステップサイズを制御するハイパーパラメータ)を動的に変化させる手法の総称である。主な役割は、初期の大きな学習率で大域的な最適解を探索し、後期に学習率を徐々に低下させることで局所的な微調整を促し、収束速度と最終的なモデル性能の両立を図ることにある。適切なスケジューリングは、損失関数の減少を安定化させ、オーバーフィッティングの抑制や汎化性能の向上に寄与する。
1.2 学習率がトレーニングに与える影響
学習率は最適化プロセスの挙動を直接左右する。学習率が高すぎると、更新幅が大きくなり損失関数が発振・発散するリスクがある。逆に低すぎると、収束が極端に遅くなり、局所最適解や鞍点から脱出できなくなる。適切な範囲の学習率であっても、一定値を維持するよりも動的に調整したほうが、損失の減少が滑らかになり、より良い局所解に到達できることが多くの実験で示されている。学習率スケジューリングは、これらの問題を緩和し、トレーニングの安定性と効率を高める。
1.3 スケジューリングの歴史的変遷
初期のニューラルネットワーク研究では、学習率を手動で設定し、特定のエポックで手動減衰する方法が一般的だった。1990年代には確率的勾配降下法(SGD)の理論研究が進み、凸最適化の枠組みでステップサイズの減衰則が分析された。2010年代以降、深層学習の普及に伴い、余弦減衰やウォームアップなどの体系的な手法が提案され、さらにSGDRに代表される再スタート機構が注目された。現在では、フレームワークが多数のスケジューラを標準実装しており、自動ハイパーパラメータ探索の一部として扱われることも多い。
2.1 ステップ減衰
2.1.1 固定間隔での減衰
ステップ減衰は、事前に定めたエポック数(またはイテレーション数)ごとに学習率を一定の倍率(例:0.1倍)で減少させる方法である。実装が単純で、直感的に理解しやすい。減衰間隔と倍率はハイパーパラメータとして調整が必要であり、特に大規模データセットでの長時間トレーニングでよく用いられる。
2.1.2 エポックベースの調整
エポックベースの調整は、特定のエポック番号(例:30エポック、60エポック)で一度に学習率を変更する方式である。固定間隔よりも柔軟性があり、データセットの特性やモデルの収束状況に合わせて減衰タイミングを個別に設定できる。代表的な例として、AlexNetやResNetの論文で採用されている。
2.2 指数減衰と対数減衰
2.2.1 指数関数的減少
指数減衰は、学習率を各ステップ(またはエポック)ごとに指数関数に従って減少させる方法である。式はη_t = η_0 × γ^t または η_t = η_0 × exp(-λ t) で表され、γやλが減衰率を決める。初期に急激に減衰するため、収束が早まる一方で、後半の微調整が不十分になる可能性がある。
2.2.2 自然対数を用いた緩減衰
対数減衰は、学習率を時間に対して対数関数的に減少させる手法である。式は η_t = η_0 / (1 + α log(1 + β t)) のように表され、指数減衰と比較して減衰が緩やかで、長期間のトレーニングに適している。特に、理論的な収束保証が得られやすい性質を持つ。
2.3 余弦減衰
2.3.1 標準余弦減衰
余弦減衰は、学習率を0からπまでの余弦関数に従って減少させる手法である。式は η_t = η_min + (η_0 − η_min) × (1 + cos(π t / T)) / 2 で表される。初期は緩やかに、中間で急激に、終盤で再び緩やかに減少する滑らかな曲線を描く。ResNetやEfficientNetなど多くのモデルで標準的に使用されている。
2.3.2 再スタート付き余弦減衰(SGDR)
SGDR(Stochastic Gradient Descent with Warm Restarts)は、学習率を余弦減衰させた後、一定周期で初期値にリセットする手法である。再スタートによりモデルが異なる局所解を探索でき、アンサンブル効果も期待できる。周期の長さを徐々に伸ばすことで、最終的に最適解に収束しやすくなる。
2.4 ウォームアップ
2.4.1 線形ウォームアップ
線形ウォームアップは、トレーニング開始直後の数ステップ(または数エポック)で学習率をゼロまたは小さな値から目標値まで線形に増加させる手法である。初期の不安定な更新を抑制し、特に大規模モデルやバッチ正規化の初期段階で有効とされる。
2.4.2 指数ウォームアップ
指数ウォームアップは、学習率を指数関数的に増加させる方法である。線形よりも滑らかな立ち上がりを実現し、特にTransformer系モデルで好んで用いられる。例えば、BERTの事前学習では、最初の1万ステップで学習率を1e-7から1e-4まで指数関数的に増加させる。
2.5 多項式減衰
多項式減衰は、学習率を時間の多項式関数で減少させる手法である。式は η_t = η_0 × (1 − t/T)^p で表される。p=1の場合は線形減衰、p=2の場合は二次減衰となる。次数pを調整することで、減衰の形状を自由に設計できる。caffeフレームワークでpolyと呼ばれるスケジューラが広く使われている。
3.1 フレームワーク別の実装例
3.1.1 PyTorchでの実装
PyTorchではtorch.optim.lr_schedulerモジュールに各種スケジューラが用意されている。例えば、StepLR(optimizer, step_size, gamma)でステップ減衰、ExponentialLR(optimizer, gamma)で指数減衰、CosineAnnealingLR(optimizer, T_max, eta_min)で余弦減衰が実装できる。ウォームアップは標準では提供されていないが、LambdaLRと自作の関数で容易に実現できる。
3.1.2 TensorFlowでの実装
TensorFlow(Keras)ではtf.keras.optimizers.schedulesモジュールに学習率スケジュールクラスが用意されている。ExponentialDecay、PiecewiseConstantDecay、CosineDecayなどがある。ウォームアップはLinearCosineDecayやExponentialDecayの組み合わせで実装可能。また、LearningRateSchedulerコールバックを使えば任意の関数を定義できる。
3.2 スケジューラの組み合わせとカスタマイズ
複数のスケジューラを組み合わせることで、より高度な調整が可能になる。例えば、ウォームアップの後に余弦減衰を適用する「Warm-up + Cosine Decay」は、TransformerやVision Transformerで標準的な手法である。また、スケジューラの状態をエポックごとではなくバッチごとに更新するか、特定の条件(損失の停滞)でトリガーするカスタム実装も行われる。
3.3 学習率の初期値とスケジュールパラメータの選択
学習率の初期値は、一般的には学習率探索(LR range test)や既存研究の値を参考に設定する。スケジュールパラメータ(減衰間隔、減衰率、余弦周期など)は、データセットやモデルサイズに応じて調整する必要がある。通常は全トレーニングステップ数の1/3程度で減衰を開始するなど、ヒューリスティックなルールが存在する。近年では、自動ハイパーパラメータ最適化ツール(Optuna、Ray Tuneなど)を用いて探索されることも多い。
4.1 収束性への理論的解析
4.1.1 凸最適化における効果
凸最適化の理論では、ステップサイズのスケジューリングが収束率に直接影響を与える。たとえば、強凸関数に対しては、適切に減衰する学習率を用いることでO(1/T)の収束率が達成できる。特に、学習率を時間の逆数に比例させる減衰則は、最適な収束オーダーを得るための必要条件として知られている。
4.1.2 非凸最適化における挙動
深層学習で扱う非凸最適化では、理論的な収束保証は限定的である。しかし、減衰学習率が鞍点からの脱出や局所解の質に影響を与えることが実験的に示されている。最近の研究では、余弦減衰やウォームアップが、損失ランドスケープの平坦な領域への収束を促進し、汎化性能を向上させるという仮説が提唱されている。
4.2 典型的な応用事例
4.2.1 画像認識(CNN)
画像認識タスクでは、ResNetやEfficientNetのトレーニングにステップ減衰(具体的には30エポック、60エポック、80エポックで0.1倍)や余弦減衰が広く使用されている。ImageNetのような大規模データセットでは、ウォームアップを組み合わせた余弦減衰が標準的である。これにより、高いトップ1精度を達成している。
4.2.2 自然言語処理(Transformer)
Transformerベースのモデル(BERT、GPT、T5など)では、ウォームアップと線形減衰の組み合わせが頻繁に用いられる。特に、学習率を最初に徐々に増やし、その後線形に減少させる「Warm-up + Linear Decay」は、事前学習の安定性と性能の両立に貢献している。また、SGDRは機械翻訳タスクで有効性が報告されている。
4.3 近年の進展と将来の方向性
近年では、固定のスケジュールではなく、トレーニング中の損失の挙動に応じて学習率を動的に調整する手法(例:ReduceLROnPlateau、サイクリックLR)が実用的に使われている。また、メタ学習や強化学習を用いて、スケジューリング自体を最適化する「Learned Scheduling」の研究も進んでいる。将来的には、モデルのアーキテクチャやデータ分布に適応したパーソナライズドスケジューリングが主流になると考えられる。