本文へスキップ
ひもとくAI

勾配降下法を覗いてみる

レッスン 5/7

「今どちらに動けば損失が減るか」を考える

前のレッスンで、モデルのaaとbbを変えると、損失(誤差の大きさ)が変わることを学びました。もし損失をaaの値ごとにグラフに描くと、多くの場合、お椀のような形の曲線になります。

学習の目標は、この曲線の一番低いところ(損失が最も小さいaa)を見つけることです。ここで使われる考え方が 勾配 です。

グラフ上のある点で、曲線がどれくらいの傾きを持っているか(急な下り坂か、緩やかな上り坂か)を表す量を 勾配 と呼びます。これは、以前学んだ一次関数の「傾き」と同じ考え方を、曲線上の1点に対して適用したものです(高校数学では微分という方法で正確に求めます。ただし次のレッスンで見るように、中学数学で習う「変化の割合」を使っても、ほぼ同じ値を計算できます)。

重要なのは、次の直感です。

  • 勾配がプラス(右上がり)なら、aaを減らすと損失が減る
  • 勾配がマイナス(右下がり)なら、aaを増やすと損失が減る

つまり、勾配が分かれば、「今、aaをどちら向きに動かせば損失が減るか」が分かるのです。

勾配降下法:少しずつ谷底に近づく

前のスライドの考え方を繰り返し使って、損失が最も小さいaaを探す手法を 勾配降下法 と呼びます。イメージとしては、深い霧の中で山(お椀の内側)に立ち、足元の傾きだけを頼りに、少しずつ谷底を目指して歩いていくようなものです。

手順を数式で表すと、次のようになります。

a新=a今−η×(勾配)a_{\text{新}} = a_{\text{今}} - \eta \times (\text{勾配})

η\eta(イータ)は 学習率 と呼ばれる、一歩あたりの歩幅を決める数値です。0.1や0.01のような小さな値がよく使われますが、ちょうどよい大きさはモデルによって変わるため、試しながら決めます。勾配の向きと逆方向に、学習率の分だけaaを動かす、という更新を繰り返します。

これは、最初の単元で説明した「学習は、予測→ズレの確認→調整、を大量のデータで何度も繰り返す」という仕組みの、まさに「調整」の部分の正体です。

  • 予測する → 損失(ズレ)を計算する → 勾配を求める → aaとbbを少しだけ更新する → これを繰り返す

なお、前のレッスンで使ったLinearRegressionのfitは、実はこの繰り返しを行っていません。線形回帰は、損失が最も小さくなるaaとbbを公式で一度に計算できる、特別に単純なモデルだからです。一方、次の章で学ぶ分類のモデルの1つである ロジスティック回帰 や、ディープラーニングで使うニューラルネットワークは公式では解けないため、勾配降下法(やその仲間)で少しずつ調整しながら学習します。つまり勾配降下法は、ほとんどの機械学習の「学習」を支える共通の仕組みです。

次のレッスンでは、この勾配を中学数学だけで実際に計算し、勾配降下法を自分の手で動かしてみます。

演習

演習を読み込んでいます…