記事一覧に戻る
数式と考えごと

勾配降下法を「山を下りる」で理解する

微分の記号の向こうで、何が起きているのか。小さな一歩を繰り返すアルゴリズムを、直感から追いかける。

曲線を小さなステップで下る勾配降下法の図

目の前の地面が、どちらに傾いているかだけを手がかりに、低い場所へ向かいたい。勾配降下法は、そんなイメージから考えると少し身近になる。

傾きと反対に、一歩進む

微分が教えてくれるのは、その場所で関数が増える方向と変化の速さ。値を小さくしたければ、傾きと反対の方向へ動けばよさそうだ。

xt+1=xt−ηf′(xt)

一歩の大きさを決める

ηは学習率。一歩を大きくしすぎると、谷を飛び越えてしまうことがある。小さすぎれば、なかなか進まない。

たとえばf(x)=x2なら、微分は2xになる。初期値を4、学習率を0.1とすると、次の値は3.2、その次は2.56。少しずつ0に近づく。

let x = 4;
const learningRate = 0.1;

for (let step = 0; step < 20; step++) {
  const gradient = 2 * x;
  x -= learningRate * gradient;
}

たとえで見落とさないこと

複雑な地形では、たどり着いた谷が全体で最も低いとは限らない。この方法は万能な地図ではなく、いまいる場所の情報を使って進むための方法なのだ。