学習率 (G検定)

学習率

1. 定義と概要

学習率(learning rate)とは、勾配降下法においてパラメータ(重み)を勾配の方向にどれだけ動かすかを決める係数です。学習を始める前に値を決めておく必要があるため、ハイパーパラメータ(学習を始める前に人があらかじめ決めておく設定値)の代表例に位置づけられます。

数式ではη(イータ)やαという記号で表されます。更新式ではw ← w − η∇Lのように表され、ηの部分が学習率にあたります。代表的な初期値の目安としては0.1・0.01・0.001などが挙げられ、実務では複数の候補を比較しながら選びます。

従来は学習の間ずっと一定の学習率を使う運用が一般的でしたが、値が大きすぎると発散し、小さすぎると収束が遅いという二律背反に直面します。このトレードオフを和らげる工夫として、学習の進み具合に応じて値を変化させる方法や、開始直後だけ小さい値から始める方法、パラメータごとに値を自動で調整する最適化手法が登場した、という流れがあります。

損失(モデルの予測と正解のズレの大きさを示す値)の下がり方を観察しながら値を見直す運用が、現在のニューラルネットワークの学習では一般的です。学習率が適切かどうかは、損失の推移を表す損失曲線の形を見ながら判断する場面が多くあります。

2. 試験対策ポイント

学習率を大きく設定しすぎると、1回の更新でパラメータが動く幅が過大になり、損失が振動したり発散したりして最適解に収束しにくくなります。反対に学習率を小さく設定しすぎると、収束までにかかる時間が長引くだけでなく、大域最適解(探索範囲全体の中で最も良い解)を飛び越えられずに局所解にとどまりやすくなります。

設定が極端に振れたときに何が起こるかを並べると、次のように整理できます。

学習率の設定 パラメータの更新 起こりやすい問題
大きすぎる 1回の更新で動く幅が過大になる 損失が振動・発散して最適解に収束しにくい
小さすぎる 1回の更新で動く幅が小さくとどまる 収束に時間がかかり局所解にとどまりやすい

大きい場合と小さい場合の影響を取り違えないことが、この論点では重要な確認点です。損失の推移を図示して大小の影響を見分ける視点も、あわせて整理しておきたいところです。

学習率減衰(学習率スケジューリング)は、学習の進行に合わせて学習率を段階的に小さくする工夫です。序盤は大きな学習率で広く探索し、終盤は小さな学習率で精密に調整する狙いがあります。代表的な手法として、一定間隔で値を下げるステップ減衰、指数関数的に値を下げる指数減衰、コサインアニーリング(学習率をコサインカーブに沿って滑らかに減らしていく代表的な減衰方法)などが挙げられます。

ウォームアップ(学習の開始直後だけ学習率を小さい値から徐々に大きくしていく工夫)は、初期の不安定な重みによる発散を防ぐ役割を持ちます。バッチ正規化(層ごとの入力の分布を整えて学習を安定させる工夫)などの効果を安定させる働きもあります。学習率減衰と組み合わせて使われる場面が多く、両者は対になる考え方です。

なお、学習率は、学習を始める前に人が値を決めておくハイパーパラメータの代表例であり、ハイパーパラメータ全般の分類や調整方法は本記事の範囲を超えるため、別の機会に扱います。

3. 関連概念との比較・相違点

学習率の与え方という軸で見ると、従来の勾配降下法では、学習率を人があらかじめ固定値または手動のスケジュールとして設定し、すべてのパラメータに同じ値を適用します。値をどう決めるかが人の判断に委ねられている点が特徴で、経験や試行錯誤に頼る部分が大きくなります。値の設定を誤ると、学習全体をやり直す必要が生じる場合もあります。

これに対し、AdaGrad(パラメータごとに過去の勾配の大きさをもとに学習率を自動で調整する最適化手法)と、Adam(過去の勾配の傾向と大きさの両方を使って学習率を自動調整する、広く使われる最適化手法)が代表的です。これらのアルゴリズムは、パラメータごとに過去の勾配の大きさに応じて学習率を自動的に調整します。手動でのチューニングにかかる負担を減らせる一方、各手法の内部でどのように調整しているかという詳細は本記事の範囲を超えます。

両者の位置づけを観点ごとに並べると、次のようになります。

観点 従来の勾配降下法 AdaGrad・Adam
学習率の決め方 人が固定値または手動のスケジュールとして設定 アルゴリズムが自動で調整
適用の単位 すべてのパラメータに同じ値を適用 パラメータごとに過去の勾配の大きさに応じて調整
人にかかる負担 経験や試行錯誤に頼る部分が大きい 手動でのチューニングの負担を減らせる

最大の違いは、学習率を人が固定・調整するか、アルゴリズムが自動で調整するかという点にあります。学習率の与え方が固定・手動か自動かという観点は、両者の位置づけを整理するうえでの分かれ目です。

4. ビジネス・実務での活用シナリオ

画像認識モデルの開発現場では、学習曲線(損失の推移を示すグラフ)を監視しながら学習を進めます。損失が振動している様子が見られた場合には、学習率を下げて発散を防ぐ判断が行われます。想定より収束が遅い場合は、逆に学習率を引き上げて様子を見る判断も選択肢に入ります。

自然言語処理(コンピュータに人間の言語を処理させる技術分野)の分野では、BERTやGPTなどの大規模言語モデル(膨大な文章データを学習した言語処理向けの大規模なモデル)の事前学習が行われます。この事前学習では、ウォームアップと組み合わせた学習率スケジューリングが標準的に採用されています。

GPTではウォームアップ後にコサインアニーリングで学習率を滑らかに下げます。一方、BERTではウォームアップ後に学習率を直線的に下げる線形減衰が使われます。序盤の不安定な学習を安定させるうえで欠かせない工夫です。

MLOps(モデルの再学習運用)の現場では、モデルを再学習するたびに複数の学習率の候補を比較検証します。収束の速さと精度のバランスを見ながら、本番環境のモデルに反映するかどうかを判断します。学習率の候補を並べて検証する運用は、モデルの品質を継続的に保つうえでの土台になっています。学習率は、こうした比較検証の対象になりやすいハイパーパラメータの一つです。

5. 要点まとめ

  • 学習率は勾配降下法でパラメータを1回の更新でどれだけ動かすかを決める係数で、大きすぎると振動・発散し、小さすぎると収束が遅く局所解にとどまりやすくなります。
  • 学習率減衰(学習率スケジューリング)は学習の進行に応じて学習率を段階的に小さくする工夫で、ウォームアップは開始直後に小さい値から目標値まで徐々に増やす工夫です。
  • 学習率を人が固定・手動スケジューリングする従来の運用に対し、AdaGrad・Adam等の最適化手法はパラメータごとに学習率を自動調整します。

6. 確認問題

問1学習率を大きく設定しすぎると、パラメータの更新幅が過大になり、損失が振動・発散して最適解に収束しにくくなる。

解答・解説をみる

○ 正しい

学習率が大きすぎる場合は更新幅が過大になり、最適解を飛び越えて振動・発散するリスクが高まります。損失の振動は学習率を見直す代表的な合図です。

問2学習率を小さく設定するほど大域最適解に到達しやすくなり、局所解に留まるリスクは生じない。

解答・解説をみる

× 誤り

正しくは、学習率が小さすぎると収束に時間がかかるだけでなく、大域最適解を飛び越えられず局所解にとどまりやすくなります。大小の影響を逆に述べている点が誤りです。

問3ウォームアップは、学習開始直後に小さな学習率から目標値まで段階的に増加させることで、初期の不安定な重みによる発散を防ぐ工夫である。

解答・解説をみる

○ 正しい

ウォームアップは開始直後の学習率を抑えて徐々に引き上げる工夫で、初期の不安定な状態での発散を防ぎます。学習率減衰と組み合わせて使われます。