ディープラーニングの調整項目の中でも、結果への影響が特に大きいのが学習率です。「大きすぎると発散、小さすぎると進まない」という性質は試験でも実務でも必ず押さえるべき基本です。この記事では、学習率の役割と、学習の進行に合わせて値を変える調整テクニックまでを解説します。

📖 ひと言でいうと

学習率とは、ニューラルネットワークがパラメータ(重みやバイアス)を更新するときの「1歩の大きさ」を決める値です。山を下りて谷底(誤差が最小の点)を目指す場面に例えると、学習率は歩幅にあたります。歩幅が大きすぎると谷底を飛び越えて反対側の斜面に着地してしまい、小さすぎるといつまでも谷底にたどり着けません。

🖼 1枚でわかる学習率

学習率=パラメータ更新の「歩幅」
  • 役割 — 重み・バイアスを更新するステップの大きさを制御する値
  • 高すぎると — 目的から外れ、不安定な学習や収束失敗のおそれ
  • 低すぎると — 学習が遅く、局所解にとどまるおそれ
  • 動的調整 — ステップ減衰・指数減衰・CLRなど途中で変える手法がある
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

ニューラルネットワークの学習過程でパラメーター(重みやバイアス)を更新する際のステップの大きさを制御する値。学習率が高いと更新ステップが大きくなり、素早く最適解に近づくが、適切な範囲を超えると目的から外れ、不安定なトレーニングや収束失敗につながる可能性がある。一方、学習率が低すぎるとゆっくりとした学習となり、最適な解にたどり着く前に局所解にとどまる可能性がある。また、学習率は単一の固定値ではなく、トレーニング進行に応じて動的に調整する手法も存在する。例えば、初期の段階では高い学習率で学習を進め、最適解に近づくにつれ学習率を減衰させる「ステップ減衰」や「指数減衰」などがある。さらに、学習率を周期的に上下させる「Cyclical Learning Rate(CLR)」も活用され、これによりトレーニングの効率と精度が高まる。

この説明は3段構成です。まず定義(更新ステップの大きさを制御する値)、次に大きすぎ・小さすぎそれぞれの弊害、最後に固定値ではなく学習の進行に応じて変える動的調整(減衰やCLR)の存在です。この3点をそのまま理解すれば、学習率の論点はほぼカバーできます。

🔍 しっかり理解する

勾配降下法の中でどう使われるか

勾配降下法では、誤差関数の勾配(傾き)を計算し、誤差が減る方向へパラメータを動かします。このとき「新しいパラメータ = 現在のパラメータ − 学習率 × 勾配」という形で更新します。勾配が「どの方向へ動くべきか」を教え、学習率が「どれだけ動くか」を決める、という役割分担です。学習率は学習前に人間が設定するハイパーパラメータの代表例でもあり、数あるハイパーパラメータの中でも学習の成否への影響が特に大きい項目として知られています。

大きすぎても小さすぎてもいけない

🅰 学習率が高い
  • 大股で進み、素早く最適解に近づける
  • 行きすぎると解を飛び越えて振動
  • 不安定な学習・収束失敗のリスク
🅱 学習率が低い
  • 小股で着実だが学習が非常に遅い
  • 浅いくぼみ(局所解)から抜け出せない
  • 時間内に最適解へ到達できないおそれ

学習率が高いときの典型的な症状は、損失が下がらずに振動したり、突然大きくなって発散したりすることです。逆に低すぎるときは、損失は下がるものの進みが極端に遅く、途中の浅いくぼみ(局所解)で止まってしまうことがあります。ちょうど良い値は問題ごとに異なるため、試行錯誤やハイパーパラメータ探索で決めるのが実際のやり方です。候補値を並べて総当たりで比較するグリッドサーチなどの探索手法は、まさにこの学習率のような設定値を決めるために使われます。

途中で変える: 減衰とCLR

「最初から最後まで同じ歩幅」が最適とは限りません。序盤は解から遠いので大股で素早く近づき、終盤は解の近くを微調整したいので小股にする、というのが学習率減衰の発想です。一定エポックごとに段階的に下げるのがステップ減衰、指数関数的に滑らかに下げるのが指数減衰です。さらに、学習率を一定の範囲で周期的に上げ下げするCyclical Learning Rate(CLR)という手法もあり、上げる局面で停滞から抜け出しやすくなる効果が知られています。なお、AdaGradやAdamのように勾配の履歴から学習率を実質的に自動調整する最適化アルゴリズムも、この延長線上にある技術です。

💡 具体例で考える

画像分類モデルの学習で、学習率0.1に設定したら損失が乱高下して一向に下がらない、という状況はよく起こります。これは歩幅が大きすぎて谷底を何度も飛び越えている状態です。学習率を0.001に下げると損失が安定して下がり始める、というように、桁を変えて試すのが現場の典型的な調整です。

逆に0.00001のような極端に小さい値では、100エポック学習しても損失がわずかしか下がらず、計算時間だけを浪費します。そこで「最初は0.01で始めて、30エポックごとに10分の1にする」といったステップ減衰を組み合わせると、序盤の速さと終盤の精密さを両立できます。学習率の探索は0.1、0.01、0.001のように桁(対数スケール)を変えて候補を振るのが定石で、細かい値の差よりもまず桁を合わせることが重要です。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「学習率は高いほど速く賢くなる」は誤り: 高すぎる学習率は不安定化や収束失敗を招きます。「速さ」と「安定性」のトレードオフを調整する値だと理解しましょう。
  • 学習率とエポック数の混同: エポック数は「何周学習するか」、学習率は「1回の更新でどれだけ動くか」です。どちらもハイパーパラメータですが、制御している対象が違います。
  • 学習率と勾配の混同: 勾配はデータと誤差関数から計算される「方向と傾きの情報」で、学習率は人間が設定する「倍率」です。更新量は両者の掛け算で決まります。
  • 重み(パラメータ)とハイパーパラメータの区別: 重みは学習によって自動的に決まる値、学習率は学習の外側で人間が設定する値です。この区別は頻出です。

📝 試験でのポイント

💡 ポイント
  • 「学習率が大きすぎる場合に起こる現象はどれか」(発散・不安定・収束失敗)、「小さすぎる場合」(学習が遅い・局所解にとどまる)という症状の対応付けが最頻出の想定論点です。
  • ステップ減衰・指数減衰・CLRといった動的調整手法の名前と概要(減衰は徐々に下げる、CLRは周期的に上下させる)を対応させられるようにしましょう。
  • 「学習率はハイパーパラメータか、学習で決まるパラメータか」を問う形式にも注意。学習率はハイパーパラメータです。

📚 まとめ

学習率は、パラメータ更新の1歩の大きさを決めるハイパーパラメータです。高すぎれば不安定・収束失敗、低すぎれば学習停滞・局所解どまりという両側のリスクがあり、適切な値の設定が学習の効率と精度を左右します。固定値にこだわらず、ステップ減衰・指数減衰・CLRのように進行に応じて変える手法があることまで押さえておきましょう。