学習率は、モデルが学習中に「パラメータをどれくらい大きく更新するか」を決める値です。
勾配の方向にどれほど進むかを調整する役割を持ち、学習が安定して進むかどうかを大きく左右します。
学習率が適切でなければ、モデルはうまく訓練されません。
そのため、学習率は機械学習において最も重要なハイパーパラメータのひとつとされています。
学習率が大きすぎる場合の挙動
学習率が大きすぎると、次のような問題が起こります。
- 損失が安定せず、行ったり来たりする
最良解の近くに到達しても、更新量が大きすぎて飛び越えてしまいます。 - 学習が発散する
更新が荒すぎて損失が極端に大きくなる場合があります。 - 学習曲線がギザギザする
損失が上下動し続け、落ち着かない形になります。
この状態では、モデルが最適な解に近づくのが非常に難しくなります。
学習率が小さすぎる場合の挙動
一方で、学習率が小さすぎると次のような問題が起こります。
- 学習に非常に時間がかかる
一歩が小さいため、損失がなかなか減りません。 - 局所的な谷にハマって抜けづらくなる
勾配が小さい領域から抜けにくくなり、改善が停滞することがあります。 - 学習曲線が平坦になる
損失がゆっくりしか減らず、停滞したように見えます。
この状態では、学習は進んでいるものの効率が極めて悪くなります。
適切な学習率を選ぶポイント
学習率は “大きすぎず、小さすぎず” の値を見つける必要があります。
そのためによく用いられる方法を紹介します。
Learning Rate Finder(学習率レンジテスト)
極めて低い値から学習率を段階的に上げていき、損失の変化を観察する方法です。
- 損失が急激に下がり始めるあたり
- 下がりきる直前の安定した領域
こうしたポイントが、使うべき学習率の目安になります。
特に PyTorch や Keras では広く使われている実用的な手法です。
学習率スケジューラー
学習率を一定ではなく、「時間とともに変化させる」方法です。
代表的な手法は次のとおりです。
- Step Decay
一定のタイミングごとに学習率を下げる - Exponential Decay
指数的に学習率を下げる - Cosine Annealing
滑らかなカーブを描いて減衰させる - Warmup + Decay
最初は小さく始め、途中で上げて、後半で下げる
特に Transformer 系モデルで非常によく使われます。 - One Cycle Policy
一度学習率を上げてから大きく下げる
近年、汎化性能が高まりやすい方法として人気です。
どのスケジュールを用いるかはモデルやデータセットによって異なりますが、“学習率を固定しない” という考え方自体がとても重要です。
最適化アルゴリズムと学習率の関係
学習率の扱いやすさは、選ぶ最適化アルゴリズムによっても変わります。
SGD(確率的勾配降下法)
- 学習率に非常に敏感
- 適切な値を選ばないと発散しやすい
- 学習率スケジューラーと併用することが多い
従来の画像認識モデル(CNN)では広く利用されてきました。
Adam / AdamW
- パラメータごとに更新量を調節するため、比較的安定しやすい
- それでも初期学習率の選択は性能に大きく影響します
- 小中規模モデルでは 1e-3 前後から始めることが多い
- 深層ネットワークでは 1e-4 〜 1e-5 へ下げることが多い
タスクごとの一般的な学習率の目安
モデルやデータに強く依存するため絶対的な正解はありませんが、よく使われる目安値をまとめます。
一般的な分類・回帰(中規模モデル)
- AdamW:1e-3 付近
発散する場合は 1e-4、逆に改善が遅いなら 3e-3 なども試します。
画像分類(CNN を SGD で訓練)
- 学習率 0.1 付近から開始し、段階的に下げていく
- Adam 系で訓練する場合は 1e-3 前後がよく使われます。
Transformer(BERT / GPT など)
- 1e-5〜5e-5 が典型的なレンジ
- Warmup(全体の 5〜10%)を取り入れることが一般的
ファインチューニングでは特に敏感な領域です。
GAN(敵対的生成ネットワーク)
- 1e-4 前後がよく使われる
- 不安定なため、Generator と Discriminator で学習率を変えることもあります
Diffusion Models
- 1e-4 付近が典型的
- モデルサイズにより調整が必要
学習率が学習に与える深い影響
学習率は単に「速く学習させるかどうか」だけでなく、どのような最適解に到達しやすいかにも影響を持つと言われています。
フラットな最適解とシャープな最適解
近年の研究では、適度なノイズや学習率の大きさによって
- シャープな谷(汎化性能が低い解)にハマりにくくなる
- 広くてなだらかな谷(フラットな最適解)へ行きやすくなる
という傾向が指摘されています。
これは、一般化性能を高めるうえで重要な視点であり、学習率の設計が単なる「速さの調整」にとどまらない理由の一つです。
学習率を調整するときに見るべき指標
損失曲線の滑らかさ
学習率が大きすぎると上下動が激しくなり、小さすぎるとほとんど下がらない平坦な形になります。
勾配の大きさの安定性
勾配が極端に大きくなったり、小さすぎて変化がない場合は調整が必要です。
学習と検証のギャップ
学習率が適切でないと、過学習より前に損失が悪化する場合があります。
まとめ
学習率は、モデルの学習プロセスを左右する最も強力な調整項目です。
- 大きすぎれば発散しやすい
- 小さすぎれば学習が進まない
- モデルによって適切な値は大きく異なる
- スケジューラーによって変化させる方法が広く使われている
- Transformer や生成モデルなどでは特にセンシティブ
学習を成功させるには、“適切な学習率を見つける技術” が不可欠です。
以上、機械学習の学習率についてでした。
最後までお読みいただき、ありがとうございました。
