まったりAI勉強記

AI(人工知能)について、特にゆかりがあるわけでもない社会人が、まったりとAIについて勉強していく勉強日記です。

【G検定】学習率の最適化

どうも、カタミチです。

さてさて、これまでディープラーニング、ディープネットワークについての勉強をしてきたわけですが、ここに来て…

そもそも、ニューラルネットワークを始めとした機械学習の手法が目指しているのが、「モデルの予測値と、実際の値との誤差をなくすこと」である、という話になります。

…もっと前に教えてほしかった系の内容な予感がしますが、進めていきましょう。

勾配降下法

さて、誤差をなくすことを目指している、と言いましたが、機械学習では数学的にアプローチします。誤差を誤差関数として定義し、これを最小化するという問題としてとらえるのです。

で、関数を最小化する…といえば微分です。はい、ここでようやく、なぜこれまで微分を使ってきたのかが分かりました。誤差関数を最小化するためだったんですね。

それぞれの層の重みで誤差関数を微分した値がゼロになるような重みを求めることで、誤差関数が最小の値が求まります。ここで、調整すべき重みが複数あることから、偏微分を使う必要があります。…偏微分は大学数学でしたかね?(うろ覚え)

しかし、ニューラルネットワークでは入力の次元が多次元なので、解析的に解を求めにいくのではなく、アルゴリズムを用いて最適解を探索するというアプローチを取ります。これを勾配降下法と言います。

勾配降下法は、勾配に沿って降りていくことで解を探索する手法です。ここでいう勾配とは微分値のことで、例えば下の図のy=x^2(xの2乗)の微分はy=2xであり、各点での接線の傾きを表していますよね。

f:id:feh_asama:20220201080540j:image

この傾きが緩やかになるように降下していき、最終的にゼロ地点に辿り着くのでそこがゴール、という事になります。

勾配降下法を式で表すと、こうなります。

f:id:feh_asama:20220201081607j:image

kは、これまでに何回繰り返し計算を行ったかを示すもので、イテレーションと呼ばれます。また、αは学習率というハイパーパラメータで、勾配に沿って一度にどれだけ降りていくか?を決めるものです。この学習率をどう設定するか?がかなり重要らしいです、はい。

ニューラルネットワークでは、各パラメータ(重み)に対して勾配降下法を適用することで最適解を求めるので時間が掛かるんですね。

勾配降下法の問題と改善

一見すると問題がないように見える勾配降下法ですが、弱点があります。例えばこんな形の関数があった場合…

f:id:feh_asama:20220201083338j:image

「◆」から降下していくと、最初に「○」のところで勾配がゼロになるため、真の最小値である「●」に辿り着けません。

この、見せかけの最適解「○」のことを局所最適解といい、本当の解のことを大域最適解と言います。

3次元以上では、局所最適解よりさらに厄介な点に行き着いてしまう可能性があります。それが、鞍点です。ある次元から見れば極小であるものの、別の次元から見ると極大になってしまっているもののことです。鞍点は、勾配の小さな平坦な地点に囲まれている場合が多いので、一度陥ると抜け出すことが困難になります(こうした停滞状態をプラトーと言うようです)

何となく、ゴルフでバンカーにハマって何度打っても抜け出せない様子をイメージしてしまいましたが、当たらずとも遠からず…という気がしますね。

これを回避するために考えられたのが、学習率を大きくしたり小さくしたりすることです。1990年代に、物理の慣性の考え方を適用したモーメンタムと呼ばれる手法が登場します。そして、ディープラーニングブームを受けて、古いものから…AdagradAdadeltaRMSpropAdamAdaBoundAMSBoundと、次々と手法が考えられました。

アルゴリズムの詳細は異なるものの、いずれも土台となっているのはモーメンタムです。新しい手法ほど効率化が進んでいるのでよく用いられる傾向があるようです。

ということで

誤差を最小化する、つまり、誤差関数の微分をゼロにする、というところにも、色々と工夫があるんですねー。

次はいよいよ、第5章最後の節ですね。頑張っていきましょう〜

ではまた。

勉強に使ってる書籍はこちら↓
深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版