「強化学習を学びたい人が最初に読む本」(著者:伊藤 真 発行所:日経BP)を読んでいますが、勾配降下法に関する説明がわかりやすいので、私なりの説明をつけてまとめます。 pythonのスクリプトも書かれていますので、興味がある方は読んでみてください。
資料はこちら → フィッティング
p.1 横軸xsに対して縦軸tsのデータをプロットします。直線回帰の線をとりあえず引いたのが右上図です。回帰式はys=ω0 xs+ω1です。xiのポイントの実際の値tiと回帰直線上のyiの差の二乗を全てのiの点で算出して総和Jとします。このJを平均二乗誤差(MSE:mean squared error)と呼びます。
p.2 回帰式のw0とw1を変化させて平均二乗誤差を算出してマトリクスを作成します。 Jが極小になるのが青枠近傍にあることがわかります。
p.3 上述のマトリクスを等高線で描く(左下図)と視覚的にJの最適値がどこに位置するかが可視化できます。縦軸と横軸のスケール間隔を揃えると右下図のようになり、JをZ軸上にとると3次元図(右上図)となります。
p.4 「勾配降下法」を用いて平均二乗誤差が極小になるw0とw1を求めます。Jをw0とw1で偏微分してdW0とdw1を算出して学習率をかけて加算していきます。詳細は過去の「何度も何度も」や「最短ルートは?」をご覧ください。2次元グラフでは、左上をスタートにして右に最大勾配方向(等高線に直角)に進み、その後ほぼ直角に下方向に進み最適ポイントに到達します。 3次元グラフの場合は右図をご覧ください。w1方向にも僅かな勾配があります。機械学習は、スタートから最適ポイントまで学習しながら進んでいきます。
p.5 前ページで求めた最適ポイントのω0とω1 を代入して線形回帰式を求めてグラフ内に回帰直線を描いています。 今回は機械学習で10,000ステップで学習した「学習曲線」が右図です。学習の進行状況が見える化できます。勾配が小さい部分では収束するのに時間を要しています。
p.6 今回の最適ポイントのω0とω1は「ムーア・ペンローズの疑似逆行列」を用いれば、996μsで解けてしまいます。勾配降下法の場合は、714ms時間を要します。線形回帰の場合は、代数的に解いた方が有利ですが、曲線で回帰する場合は、逆転する可能性があります。
上述の勾配降下法は10.000ステップも計算していますが、1秒もかかっておりません。もっと複雑な計算の場合は、アルゴリズムを工夫したり、学習率を変更したりする必要が生じてきます。