勾配降下法 — 坂を下って誤差の谷を探す
ニューラルネットの「学習」とは、つまるところ「予測のズレ(誤差)を、できるだけ小さくするパラメータを探すこと」です。でも、パラメータの取りうる値は無数にあります。総当たりで試すわけにはいきません。どうやって最小値にたどり着くのでしょう?
答えはとても素朴で、「今いる場所の坂の傾きを調べ、下り坂の方向へ少しだけ進む」。これを繰り返すだけです。霧で谷底が見えなくても、足元の傾きさえわかれば下っていける——これが勾配降下法(Gradient Descent)。下の図1で、ボールを1歩ずつ転がしてみてください。
「一歩の大きさ」がすべてを決める
進む向きは傾きが教えてくれます。問題は一歩の大きさ=学習率です。図1のスライダーで試すと、性格がはっきり分かれます。小さすぎると、なかなか谷底に着かず延々と歩き続けます。逆に大きすぎると、谷を一気に飛び越えて反対側の壁へ。そこでまた大きく跳ね返り、振動しながら、最悪の場合どんどん遠ざかって発散します。
ちょうどよい学習率なら、数歩で谷底にスッと収まります。傾きは谷底に近づくほど緩やかになるので、歩幅も自然と小さくなり、行き過ぎずに止まれるのがポイントです。ニューラルネットの訓練で「学習率」が最重要のつまみと呼ばれるのは、まさにこの図のためです。なお、この坂の傾きを各パラメータについて効率よく計算する手続きが誤差逆伝播(バックプロパゲーション)で、勾配降下法と二人三脚で学習を回しています。
- 損失(誤差)
- 予測と正解のズレの大きさ。これを最小にするのが学習のゴール。図の縦軸。
- 勾配(傾き)
- その地点で誤差がどちら向きに増えるかを示す坂の傾き。逆向きが「下り」。
- 学習率
- 1ステップで進む歩幅。小さいと遅く、大きいと行き過ぎて発散しやすい。
- 逆伝播
- 各パラメータの勾配(傾き)を出力側から遡って効率よく計算する手続き。
まとめ
勾配降下法は、「足元の傾きを見て、下り坂へ少し進む」のひたすら繰り返しです。霧の中でも谷底を目指せるこの単純な作戦が、巨大なニューラルネットの学習を支えています。図1で学習率を変えると、慎重すぎても大胆すぎても谷底に着けない——ちょうどよい歩幅を選ぶことが、賢くて速い学習の鍵なのです。