学習率スケジュール シミュレーター 戻る
機械学習

学習率スケジュール シミュレーター

ニューラルネットワークの訓練で使う「学習率スケジュール」を可視化するツールです。ステップ減衰・指数減衰・コサインアニーリングを切り替え、初期学習率や減衰パラメータを動かすと、学習率がエポックごとにどう変化し、損失谷を下るボールの歩幅がどう変わるかをリアルタイムで確認できます。

パラメータ設定
スケジュール方式
学習率を減衰させる3つの代表的な方式
初期学習率 η₀
訓練開始時の学習率(ステップ幅の基準)
総エポック数 T
ep
訓練全体のエポック数
減衰パラメータ
ステップ:減衰率 γ/指数:減衰係数 k/コサイン:曲線形状に影響
現在エポック t
ep
この時点の学習率と進捗を表示
計算結果
現在の学習率 η(t)
初期学習率 η₀
最終学習率 η(T)
平均学習率
現在/初期 比
スケジュール種別
損失谷を下るボール — 学習率に比例した歩幅

エポックが 0→T へ進むにつれ、学習率が下がりボールの歩幅も小さくなります。序盤は大きく弾み、終盤は谷底で慎重に収束します。上部の曲線が学習率の推移です。

学習率 vs エポック
スケジュール比較(ステップ・指数・コサイン)
理論・主要公式

$$\text{step: }\eta=\eta_0\,\gamma^{\lfloor t/s\rfloor}\qquad \text{exp: }\eta=\eta_0\,e^{-kt}$$

ステップ減衰:s エポックごとに学習率を γ 倍へ階段状に落とす。指数減衰:減衰係数 k で連続的になめらかに減らす。t:現在エポック、η₀:初期学習率。

$$\text{cosine: }\eta=\eta_{min}+\tfrac{1}{2}(\eta_0-\eta_{min})\!\left(1+\cos\frac{\pi t}{T}\right)$$

コサインアニーリング:半周期のコサインに沿って η₀ から最小値 η_min へ滑らかに下げる。T:総エポック数。いずれのスケジュールも「序盤の速さ」と「終盤の精度」を交換していることに注意。

学習率スケジュールとは

🙋
ディープラーニングの「学習率」って、どのくらい大きく重みを更新するかの値ですよね。それを途中で変える「スケジュール」って何のためにあるんですか?
🎓
いい質問だ。学習率は「損失の坂をどれだけの歩幅で下るか」を決める値だね。問題は、最適な歩幅が訓練の最初と最後で全然違うこと。序盤は損失が大きいから大股でガンガン下りたい。でも谷底に近づいたら、大股のままだと最小点を飛び越えて行ったり来たり振動してしまう。だから訓練が進むにつれて学習率を小さくする——それがスケジュールだよ。
🙋
なるほど、左上のキャンバスでボールが谷を下っていますね。最初は大きく弾んでいるのに、終わりのほうは谷底でちょこちょこ動くだけになっています。
🎓
まさにそれが学習率スケジュールの効果だ。あのボールの一歩の大きさが、その時点の学習率に比例している。序盤の大きな歩幅で素早く谷の近くまで行き、終盤の小さな歩幅で谷底にぴたっと収まる。もし学習率をずっと大きいままにすると、ボールは谷底で永遠に跳ね回って落ち着かない。逆にずっと小さいと、谷にたどり着く前に訓練が終わってしまうんだ。
🙋
減らし方が3種類あるんですね。ステップ減衰だと学習率のグラフがカクカクの階段になっていて、指数減衰やコサインはなめらかです。どう使い分けるんですか?
🎓
ざっくり言うと、ステップ減衰は「30エポックごとに0.1倍」のように決まったタイミングで一気に落とす方式で、昔からの定番だ。挙動が読みやすく実装も簡単。指数減衰は段差なく連続的に減らす。コサインアニーリングは半周期のコサインカーブに沿って下げる方式で、終盤でゆっくり最小値へ近づく形がきれいなので、近年の画像認識モデルではほぼ標準になっている。「スケジュール比較」グラフで3本を並べると性格の違いがよく分かるよ。
🙋
減衰パラメータを大きくすると、どのスケジュールでも急に下がりますね。これは大きいほど良いんですか?
🎓
いや、大きすぎると問題が起きる。減衰パラメータを上げると学習率が早く小さくなるから、訓練の後半は歩幅がほぼゼロになって、まだ下げられる損失を取りこぼす。逆に小さすぎると終盤まで学習率が大きいままで、谷底で振動して収束しない。実務では「最終学習率」が初期値の1〜10%くらいに着地するよう調整することが多い。デフォルト設定の最終学習率カードを見ながら、ちょうど良い減衰量を探ってみるといい。
🙋
最初から最適な学習率を一発で決めれば、スケジュールはいらないんじゃないですか?
🎓
それができれば苦労しないんだけどね。固定学習率には「序盤に最適な値」と「終盤に最適な値」が両立しないという根本的な弱点がある。一つの値ではどちらかを犠牲にするしかない。スケジュールは時間とともに最適値を切り替えることで、その矛盾を解く。だから現代のディープラーニングでは、ほぼすべての訓練で何らかのスケジュールが使われているんだ。

よくある質問

学習率を最初から最後まで一定にすると、序盤に最適な大きさは終盤には大きすぎ、損失が最小付近で振動して収束しません。逆に終盤に最適な小さい値は序盤の進みが遅すぎます。学習率スケジュールは、序盤は大きな学習率で素早く損失を下げ、訓練が進むにつれて学習率を小さくして最小値へ精密に収束させる仕組みです。これにより収束の速さと最終精度を両立できます。
ステップ減衰は一定エポックごとに学習率を γ 倍へ階段状に落とします(例:30エポックごとに0.1倍)。実装が単純で挙動が読みやすい一方、減衰の瞬間に損失曲線が段差状に変化します。指数減衰は η=η₀·e^(−kt) でなめらかに減らし、急激な段差がありません。コサインアニーリングは半周期のコサインに沿って初期値から最小値へ滑らかに下げ、終盤でゆっくり最小値へ近づくため、近年の画像認識モデルで広く使われます。
初期学習率はモデル・最適化手法・バッチサイズに依存し、大きすぎると損失が発散(NaN)し、小さすぎると訓練がいつまでも進みません。実務では学習率レンジテスト(LR range test)で、学習率を徐々に上げながら損失が最も急に下がる領域を探し、その少し手前を初期値に選びます。SGD なら 0.1 前後、Adam なら 0.001 前後が出発点として一般的で、その後スケジュールで減衰させます。
ウォームアップは訓練開始の数エポックだけ学習率を0付近から目標値まで線形に上げる手法で、初期の不安定な勾配による発散を防ぎます。大きなバッチサイズや Transformer の学習でほぼ必須です。ウォームリスタート(SGDR)はコサインアニーリングを複数回くり返し、各サイクルの開始時に学習率を一度大きく戻します。これにより損失地形の別の谷へ脱出しやすくなり、複数の解を平均するアンサンブル的な効果も得られます。

実世界での応用

画像認識モデルの訓練:ResNet や EfficientNet のような畳み込みニューラルネットワークを ImageNet で訓練するとき、学習率スケジュールは精度を左右する最重要ハイパーパラメータの一つです。古典的にはステップ減衰(30・60・90エポックで0.1倍)が使われてきましたが、近年はコサインアニーリングが主流で、同じモデル・同じエポック数でも数値上の正解率が改善する例が多く報告されています。

大規模言語モデルの事前学習:Transformer ベースの言語モデルの事前学習では、ウォームアップ付きのスケジュールがほぼ必須です。訓練開始の数千ステップで学習率を0から目標値まで線形に上げ、その後は逆平方根減衰やコサイン減衰でゆっくり下げます。ウォームアップを省くと初期の大きな勾配で損失が発散し、訓練がそもそも始まりません。

転移学習・ファインチューニング:事前学習済みモデルを別タスクへ適応させるファインチューニングでは、初期学習率を事前学習時よりかなり小さく取り、短いスケジュールで素早く減衰させます。学習率が大きすぎると、せっかく学習済みの良い重みを壊してしまう「破滅的忘却」が起きます。層ごとに異なる学習率を割り当てる手法と組み合わせることもあります。

ハイパーパラメータ探索の前段検討:本ツールのように学習率の推移を先に可視化しておくと、実際にGPUを回す前に「最終学習率が小さくなりすぎていないか」「減衰が早すぎないか」を当たりづけできます。スケジュールの形は訓練時間を大きく消費する前に机上で確認すべきで、実際の損失曲線と推移を照らし合わせるサニティチェックにも使えます。

よくある誤解と注意点

まず大きな誤解が、「学習率は小さいほど安全で良い」という思い込みです。確かに学習率を小さくすれば損失が発散するリスクは下がりますが、序盤から小さすぎる学習率を使うと訓練が極端に遅くなり、決められたエポック数では損失が十分下がりきりません。さらに、小さい学習率は損失地形の浅い局所解にはまりやすく、汎化性能(未知データへの精度)も悪化する傾向があります。序盤は思い切って大きな学習率を使い、スケジュールで徐々に下げる——この順序が重要です。

次に、「スケジュールはエポックではなくステップ(イテレーション)で考えるべき」という点。本ツールは分かりやすさのためエポック単位で表示していますが、実際のフレームワークの多くは1イテレーション(ミニバッチ1回)ごとに学習率を更新します。バッチサイズを変えると1エポックあたりのステップ数が変わるため、同じ「30エポックで0.1倍」でもバッチサイズが違えば減衰の実際のタイミングがずれます。スケジュールを設計するときは、総ステップ数を基準に考えるのが安全です。

最後に、「スケジュールさえ良ければ初期学習率は適当でよい」という誤解。スケジュールはあくまで初期学習率を起点に減衰させる仕組みなので、出発点が悪ければどんなスケジュールでも救えません。初期学習率が大きすぎれば1エポック目で損失が NaN になり、小さすぎれば終盤まで歩幅が足りません。実務では、まず学習率レンジテストで適切な初期値を見つけ、その上でスケジュールの形と減衰量を調整する、という順番を守ってください。初期値とスケジュールはセットで設計するものです。

使い方ガイド

  1. 初期学習率η₀(0.1~1.0)と総エポック数(10~500)を設定します
  2. スケジュール種別(ステップ減衰・指数減衰・コサインアニーリング)を選択し、減衰パラメータ(ステップサイズまたは減衰係数)を入力します
  3. 現在のエポック番号を0~総エポック数の範囲で変更すると、リアルタイムで現在の学習率η(t)、初期学習率η₀、最終学習率η(T)、平均学習率、現在/初期比、選択スケジュール種別が表示されます

具体的な計算例

ResNet-50をImageNetで訓練する場合、初期学習率η₀=0.1、総エポック数=100、ステップ減衰(ステップサイズ30エポック、減衰係数0.1)を設定します。エポック30で学習率は0.01に低下し、エポック60で0.001になります。コサインアニーリングを選択した場合、エポック50で学習率は約0.0525(初期値の52.5%)に滑らかに低下し、最終エポック99では0.00005に収束します。指数減衰(減衰係数0.99)では毎エポック0.99倍されるため、エポック46で約0.01まで低下します。

実務での注意点

  1. ステップ減衰は検証精度の停滞時に有効ですが、30エポックごとの急激な低下は振動を招くため、VGG-16など深いモデルでは減衰係数を0.5から0.1に調整します
  2. 指数減衰は安定していますが、減衰係数0.99では100エポック後の学習率が初期値の37%に留まるため、BERT微調整(総エポック3~5)では0.95推奨
  3. コサインアニーリングはVision Transformerやトランスフォーマーで最良の汎化性能を示しますが、ウォームアップフェーズ(最初の5エポック)を別途追加する場合は総エポック数に含めないよう注意
  4. 学習率の最小値(通常1e-5~1e-6)を下回らないよう制限し、局所最適解への過度な収束を防ぎます