目の前の地面が、どちらに傾いているかだけを手がかりに、低い場所へ向かいたい。勾配降下法は、そんなイメージから考えると少し身近になる。
傾きと反対に、一歩進む
微分が教えてくれるのは、その場所で関数が増える方向と変化の速さ。値を小さくしたければ、傾きと反対の方向へ動けばよさそうだ。
一歩の大きさを決める
は学習率。一歩を大きくしすぎると、谷を飛び越えてしまうことがある。小さすぎれば、なかなか進まない。
たとえばなら、微分は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;
}
たとえで見落とさないこと
複雑な地形では、たどり着いた谷が全体で最も低いとは限らない。この方法は万能な地図ではなく、いまいる場所の情報を使って進むための方法なのだ。