『山を下る』発想で最適解を探す『勾配降下法』を学びます。学習率のさじ加減がなぜ重要なのか、クイズで体感しましょう(つむぎのダジャレも炸裂するかも)。
ではクイズ。
『目隠しで山頂にいる。
足元の傾斜だけを頼りに谷底を目指す。
あなたの戦略は?』
うそっ!?
そんなん一歩ずつ下り坂の方に進むしかなくね? あ、でも歩幅どれくらいにすればいいか迷うかも。
えへへ、おっかなびっくり小さく進みます〜。
まさに…坂の仕事は勾配(こうばい)におまかせ、ってとこでしょうか…
つむぎ、今ダジャレ言わなかった?
い、いえ…ただの偶然です。
ふふ、つむぎさん珍しい。
さて本題、この戦略がまさに勾配降下法なの。
損失関数を山と見立てて、傾きの方向に少しずつパラメータを更新し、谷底(損失最小)を探すわ。
補足すると、一歩の大きさを学習率と呼びます。
学習率が大きすぎたら、どうなっちゃうんですかぁ?
谷底を飛び越えて山の反対側に着地しちゃうの。
それを繰り返すと延々収束しない、いわゆる発散状態ね。
小さすぎたら…あ、あたしわかったかも!
ずっとチマチマで終わらないじゃん。
正解です。
ちょうどいい学習率を選ぶのが重要で、そのための手法としてスケジューラやAdamのような適応的最適化が発達しています。
またバッチ全体で勾配を計算するバッチ勾配降下、1件ずつ更新する確率的勾配降下(SGD)、中間のミニバッチ法など、データの扱い方にもバリエーションがあるわ。
深層学習ではミニバッチ法が標準ね。
ちょうどいい歩幅って、生活でも大事ですよね〜。
ほんとそれ。
試験勉強も一夜漬けじゃダメだし、ちびちびすぎても終わらないのと同じだね。
注意すべき落とし穴として、損失関数に谷が複数ある『局所最適解』があります。
大域最適解ではなくローカルな谷に嵌まってしまう現象ですね。
SGDのランダム性や学習率スケジューリング、モメンタム、Adam最適化などの工夫で、この問題を緩和するのが現代の機械学習の定石よ。
山で言えば『一番低い谷』を探したいのに『そこそこの谷』で安心しちゃう、みたいな。
試合でも油断は禁物だね。
AIも人間みたいに迷子になるんですね〜、なんだか親近感です。
現代の深層学習フレームワーク(PyTorchやTensorFlow)では、Adamなどの最適化アルゴリズムがデフォルトで用意されていて、学習率の調整もある程度自動化されています。
とはいえ基本を理解していないと適切なチューニングはできません。
便利なツールがあっても、中身を知ってるかどうかで差がつくわけか。
自動で賢くなる裏には、こんな仕組みがあったんですね〜。
感動です!
学習率ひとつで収束が決まるなんて、ちょっとした職人芸だね。
仕上げクイズ。
学習率が大きすぎるとどうなる? 発散、収束が遅い、過学習、データ増加。
発散に一票。
正解。
試験では『勾配降下法=誤差最小化の最適化手法』『学習率の大小で発散や遅延』を押さえて。
確認クイズ
勾配降下法で『学習率』が大きすぎるとどうなるか?
- 学習が速く完了する
- 最適解を飛び越えて収束しない
- 過学習が防止される
- 特徴量の数が増える
こたえを見る
正解: 2. 最適解を飛び越えて収束しない
学習率が大きすぎると、一歩あたりの更新幅が広すぎて谷底を飛び越え、パラメータが振動または発散します。適切な学習率の設定が不可欠で、Adam等の適応的手法が実務では重宝されます。