知識をつなぐオンライン百科事典
Kanapedia > AI・人工知能 > 勾配降下法と学習率

勾配降下法と学習率

Kanapedia AI・人工知能カテゴリ · 2026-11-03

モデルの誤差を減らすには、重みをどちらへどのくらい動かすべきでしょうか。勾配降下法は、損失の変化率を使って重みを更新します。単純な二次関数で仕組みと失敗を追うと、学習率の役割が見えてきます。

入力から隠れ層と出力へ進んで正解との差を損失として求め、損失側から逆方向に微分を伝えて各重みの勾配を計算する。
予測は前へ、勾配は後ろへ線は学習する重みを表す模式図です。逆伝播は連鎖律による微分の計算で、勾配降下法などの最適化手法がその結果を使って重みを更新します。線形回帰は隠れ層なしのモデルでも学習できます。図を拡大参考:Deep Learning:Deep Feedforward Networks

損失が減る向きに小さく進む

重みをまとめてθ、損失をL(θ)とすると、基本的な更新はθの新値=θの旧値−η∇Lです。∇Lは各重みに対する微分を並べた勾配、ηは正の学習率です。勾配は局所的に損失が最も増える方向なので、その反対へ進みます。微分は今いる場所の近くでの変化を表すため、遠くへ一度に進んでも同じ予測が成り立つとは限りません。山を下るという比喩は有用ですが、実際には多数の重みからなる空間であり、二次元の地形図がすべてを表しているわけではありません。勾配と現在の重みは、別の量として記録します。

二次関数で一回の更新を確かめる

L(w)=(w−3)²なら微分は2(w−3)で、最小値はw=3です。初期値w=0、学習率η=0.1なら勾配は−6なので、新しいwは0−0.1×(−6)=0.6となります。損失は9から(0.6−3)²=5.76へ下がります。次の勾配は−4.8で、もう一回進めばw=1.08、損失は3.6864です。毎回、更新後の位置で勾配を計算し直す点が重要です。最初の勾配−6をずっと使い続ける操作は、この勾配降下法とは異なります。

学習率を大きくすれば速いとは限らない

同じ例でη=1とすると、wは0から6へ進み、次に0へ戻って振動します。η=1.1なら0から6.6へ進み、最小点からの距離は3から3.6へ広がります。この二次関数では、誤差e=w−3が一回で(1−2η)eとなるので、0<η<1なら誤差の絶対値が縮みます。これはこの式に固有の条件で、どのモデルでも学習率を1未満にすれば安全という意味ではありません。損失の曲がり方や特徴量の単位で適切な大きさは変わり、小さ過ぎれば限られた回数では十分に進めません。

ミニバッチと勾配の揺らぎ

全訓練例の損失を毎回計算する代わりに、一部の例からなるミニバッチで勾配を推定できます。全体の方向を近似するため、毎回の損失は一直線に下がるとは限りません。バッチの大きさは計算効率、メモリ、推定の揺らぎに関わります。モメンタムは過去の更新方向を利用し、Adamなどは勾配の情報を蓄積して成分ごとの更新を調整します。名称が高度だから常に最良とは限りません。初期値やデータ順序の影響があるので、比較では更新回数だけでなく、見たデータ量と計算予算もそろえます。

最適化できたことと汎化を分ける

訓練損失が十分に下がっても、未知の例で良い予測ができるとは限りません。最適化は与えた損失を小さくする問題、汎化は新しいデータへ役立つかという問題です。深いネットワークの損失は一般に単純な凸関数ではなく、必ず大域的な最小値へ到達する保証はありません。学習が止まったように見える場合は、学習率、入力の尺度、勾配の大きさ、データや損失の実装を調べます。訓練と検証の曲線を別々に表示すると、更新が進まないのか、訓練だけへ適合し過ぎたのかを見分けやすくなります。

試す:学習率と損失の変化

損失 J(w) = (w − 3)²、初期値 w = −2 の小さな例です。更新は w ← w − α × 2(w − 3)。学習率 α を選び、一歩ずつ最小点 w = 3 に近づく様子を確かめます。

学習率を変えると初期状態に戻ります。実際のニューラルネットワークに同じ数値が適するとは限りません。

更新回数0
重み w−2
損失 J(w)25

直近8回までの計算結果
更新回数重み w損失

確認問題

L(w)=(w−3)²、w=0、η=0.1のとき、一回更新したwと損失はいくつですか。

解答と考え方を見る

勾配は2(0−3)=−6なので、wの新値は0−0.1×(−6)=0.6です。損失は(0.6−3)²=5.76となり、更新前の9より小さくなります。次の更新ではw=0.6で勾配を計算し直します。

参考資料・次に読む資料

資料確認日:2026-11-03。