ワンサイクルポリシーは、ニューラルネットワークの学習において用いられる学習率スケジューリング手法の一つである。2018年にLeslie N. Smithによって、彼の以前の周期的学習率に関する研究の改良版として導入された。このポリシーは、学習率の変動を単一のサイクルで規定するものである。すなわち、学習率は学習の最初の部分で低いベース値から最大値へ線形に増加し、その後、ベース値よりもはるかに低い値へ線形(またはコサインアニーリング)に減少する。このスケジュールは通常、運動量の逆方向の調整と対になっており、ウォームアップフェーズでは運動量が減少し、アニーリングフェーズでは増加する。ワンサイクルポリシーは、学習の収束を高速化し、一定またはステップ減衰の学習率スケジュールと比較して、しばしばより良い最終精度をもたらすように設計されている。また、複数のサイクルではなく単一のサイクルのみを使用する。
このポリシーは、学習率、バッチサイズ、および汎化の関係に関する経験的観察に基づいている。Smithの周期的学習率に関する初期の研究(2015-2017年)は、学習率を周期的に変動させることで、オプティマイザーが鞍点や鋭い極小値から脱出し、より良い汎化につながることを示した。ワンサイクルポリシーは、このアイデアを単一の明確に定義されたスケジュールに凝縮し、実装と調整を容易にした。これは、深層学習の実践者のツールキットにおける標準的なツールとなり、特にコンピュータビジョンモデルの学習や、最近では大規模言語モデルのファインチューニングに使用されている。
動機と背景
学習率の選択は、深層ニューラルネットワークの学習における最も重要なハイパーパラメータの一つである。学習率が高すぎると発散を引き起こす可能性があり、低すぎると収束が遅くなり、貧弱な局所極小値に陥る可能性がある。ステップ減衰や指数減衰などの従来のスケジュールは、減衰係数とステップ間隔の慎重な調整を必要とする。Smithが2015年に導入した周期的学習率は、学習率を最小値と最大値の間で振動させることで、より堅牢な代替手段を提供し、オプティマイザーが定期的に鋭い極小値から脱出し、損失ランドスケープのより平坦な領域を探索できるようにした。
ワンサイクルポリシーは、特定の形状を持つ単一のサイクルを使用することで、このアイデアを拡張する。その根拠は、初期のウォームアップフェーズにより、ネットワークが小さな学習率で学習を開始でき、初期の発散を防ぎ、オプティマイザーが安定化できることにある。その後の高学習率への増加は、モデルが損失ランドスケープをより大胆に横断し、潜在的に良い極小値を見つけるのに役立つ。最終的なアニーリングフェーズでは、非常に低い学習率で、モデルが鋭く、よく汎化する極小値に落ち着くことができる。この単一サイクルのアプローチは、複数のサイクルを必要としないため計算効率が良く、より少ないエポックで最先端の結果を達成することが多い。
スケジュール
標準的なワンサイクルポリシーでは、学習プロセスは2つのフェーズに分けられる。最初のフェーズは、しばしばウォームアップフェーズと呼ばれ、総学習ステップの一部(通常20%から30%)を占める。このフェーズでは、学習率は低いベース値(多くの場合ゼロに近い)から最大値へ線形に増加する。最大学習率は通常、学習率ファインダーを使用して決定される。これはSmithによって普及した手法であり、数バッチにわたって学習率を徐々に増加させ、損失をプロットして最も急な降下領域を特定するものである。
2番目のフェーズであるアニーリングフェーズは、学習の残りの70%から80%を占める。このフェーズでは、学習率は最大値からベース値の1/10から1/100の値へ線形に減少する。一部の実装では、線形アニーリングの代わりにコサインアニーリングを使用しており、これは実際にうまく機能することが示されている。最終的な学習率は、多くの場合1e-5以下などの非常に小さな値に設定され、重みの微調整を可能にする。
運動量は逆方向に調整される。ウォームアップフェーズでは、運動量は高い値(例:0.95)から低い値(例:0.85)へ減少する。アニーリングフェーズでは、運動量は高い値へ戻るように増加する。この逆の関係は、学習の安定化に役立つ。ウォームアップ中は、学習率が増加するにつれて、低い運動量がオーバーシュートを防ぎ、アニーリング中は、学習率が減少するにつれて、高い運動量がオプティマイザーの方向性を維持するのに役立つ。
実装の詳細
ワンサイクルポリシーを実装するには、各ステップでオプティマイザーの学習率と運動量パラメータにアクセスする必要がある。PyTorchやTensorFlowなどのほとんどの深層学習フレームワークは、コールバックやカスタムトレーニングループを介してこれらのパラメータの動的調整を可能にする。このポリシーは通常、実装に応じてエポックごとまたはバッチごとに適用される。バッチレベルのスケジューリングでは、学習率は各バッチの後に更新され、より細かい制御を提供し、推奨されるアプローチである。
最大学習率は重要なハイパーパラメータである。Smithの学習率ファインダーは、それを推定するために一般的に使用される。ファインダーは、学習率が非常に小さな値から大きな値へ指数関数的に増加する短いトレーニングセッション(例:1エポック)を実行し、損失を記録することを含む。最大学習率は、損失が急激に増加し始める直前の値として選択される。この値は、しばしば損失ランドスケープの最も急な降下点の近くにある。
総エポック数も重要である。ワンサイクルポリシーは固定数のエポックで使用されるように設計されており、スケジュールはその合計に基づいて計算される。エポック数が変更された場合、スケジュールを再計算する必要がある。実際には、このポリシーは中程度のエポック数(例:10〜50)でうまく機能し、従来のスケジュールでのより長いトレーニングに匹敵する結果を達成できる。
他のスケジュールとの関係
ワンサイクルポリシーは、学習率スケジュールのより広いファミリーの一部である。これは周期的学習率と密接に関連しているが、単一のサイクルのみを使用する。また、トランスフォーマーなどの大規模モデルのトレーニングで一般的に使用されるウォームアップスケジュールと類似点を共有している。例えば、元のTransformer (architecture)論文で使用されたLearning Rate Schedulingには、線形ウォームアップとそれに続くステップ数の逆平方根に比例する減衰が含まれている。ワンサイクルポリシーは、対称またはコサイン減衰を使用し、運動量調整を明示的に対にすることで異なる。
一定の学習率スケジュールと比較して、ワンサイクルポリシーはしばしばより速く収束し、より良い極小値に到達する。ステップ減衰と比較して、減衰マイルストーンを手動で選択する必要がなくなる。このポリシーは、Batch Normalization、Data Augmentation、Gradient Clippingなどの他のトレーニング手法とも互換性がある。実際には、既存のトレーニングパイプラインの学習率スケジュールのドロップイン置換としてよく使用される。
応用と影響
ワンサイクルポリシーは、CIFAR-10やImageNetなどのデータセットでの画像分類など、コンピュータビジョンタスクで広く採用されている。fast.aiコミュニティでは、畳み込みニューラルネットワークのトレーニングの標準的な推奨事項となり、fastaiライブラリに統合されている。多くの実践者は、ワンサイクルポリシーを使用することで、より少ないエポックで最先端の精度を達成でき、トレーニング時間を半分に短縮できる場合があると報告している。
このポリシーは、自然言語処理やGenerative AIなどの他の分野でも応用されている。例えば、Large language modelをファインチューニングする際には、トレーニングを安定させるためにウォームアップフェーズがよく使用され、ワンサイクルポリシーはファインチューニングプロセス全体をスケジュールするための原理的な方法を提供する。ただし、非常に大規模なモデルの場合、学習率ファインダーを実行する計算コストが法外になる可能性があり、より単純なスケジュールが好まれることが多い。
研究では、ワンサイクルポリシーの変種も探求されている。いくつかの研究では、異なるウォームアップ割合、代替の減衰形状(例:指数)、およびバッチサイズとの相互作用が調査されている。Smithの元の論文は、このポリシーが大きなバッチサイズで最もよく機能することを示唆しており、トレーニング中盤の高学習率が勾配ノイズの減少を補うことができるためである。これは、大きなバッチサイズが一般的な分散トレーニングに影響を与える。
理論的洞察
ワンサイクルポリシーの成功は、損失ランドスケープをナビゲートする能力に起因することが多い。ウォームアップフェーズでは、モデルは最適化に適した損失ランドスケープの領域へ穏やかに導かれる。中盤の高学習率は、オプティマイザーが大きなステップを踏むことを可能にし、汎化が不十分な鋭い極小値から脱出する可能性を高める。最終的なアニーリングフェーズでは、モデルは平坦な極小値に収束することができ、これはより良い汎化と関連している。
この解釈は、Deep learningにおける損失ランドスケープの幾何学に関するより広い理解と一致する。平坦な極小値は鋭い極小値よりもよく汎化すると考えられており、周期的学習率はオプティマイザーを平坦な領域にバイアスすることが示されている。ワンサイクルポリシーは、単一のサイクルを使用することで、このバイアスを達成しながら計算効率を維持する。
しかし、理論的理解は未完成のままである。このポリシーは主に経験的であり、その有効性はアーキテクチャやデータセットによって異なる可能性がある。いくつかの研究では、その利点は小さなモデルとデータセットでより顕著であり、非常に大規模なモデルでは、利得がわずかである可能性があることが示唆されている。2020年代初頭の時点で、ワンサイクルポリシーは実際にうまく機能するヒューリスティックな手法であり続けているが、その理論的基盤は依然として活発な研究分野である。
実践的な推奨事項
実践者にとって、ワンサイクルポリシーは比較的簡単に採用できる。重要なステップは次のとおりである。(1) 学習率ファインダーを使用して最大学習率を決定する。(2) ベース学習率を最大値の小さな割合(例:1/10)に設定する。(3) ウォームアップ割合(通常20〜30%)を選択する。(4) 減衰形状(線形またはコサイン)を決定する。(5) 最終学習率を非常に小さな値(例:ベースの1/100)に設定する。(6) 運動量を逆方向に調整する。fastaiやPyTorchの学習率スケジューラーを含む多くのライブラリは、ワンサイクルポリシーの組み込みサポートを提供している。
トレーニングの進行状況を監視することも重要である。このポリシーは総エポック数が固定されていることを前提としているため、早期停止は簡単ではない場合がある。モデルが過学習する場合、DropoutやWeight Initializationの調整などの正則化手法が必要になる可能性がある。このポリシーはオプティマイザーの選択にも敏感であり、通常は運動量を伴う確率的勾配降下法(SGD)で使用されるが、Adam (Optimizer)や他のStochastic Gradient Descent Variantsでも使用できる。
結論
ワンサイクルポリシーは、深層学習における標準的なツールとなった強力で実用的な学習率スケジューリング手法である。ウォームアップとアニーリングを逆方向の運動量調整と組み合わせた、そのシンプルでありながら効果的な設計は、より速い収束と改善された汎化を可能にする。その理論的基盤は完全には理解されていないが、その経験的成功により、多くの実践者にとって頼りになる選択肢となっている。深層学習が進化し続けるにつれて、ワンサイクルポリシーは、特に中程度のサイズのデータセットでのモデルのトレーニングや、事前学習済みモデルのファインチューニングにおいて、関連性があり価値のある手法であり続けている。