Act 18. 勾配降下法の復習
はじめに
Act 01. AIで外国為替を自動売買するまでの道のりをベースに学習を進めて行く。
今まで線形回帰とロジスティック回帰について学習してきた。
どちらの回帰分析でも勾配降下法を使って回帰モデルの学習をしたと思う。
何個か前の記事で勾配降下法について書く機会があったが、その時はYouTubeを参照にしたため、あまり自分の頭に入っていなかった。
ということでこの記事で改めて勾配降下法について学習していこうと思う!
勾配降下法
勾配降下法を使って回帰係数や切片を求めるまでの流れについて自分なりに説明していく。
まずはおさらい。
-
: 回帰係数(重み)w_1, w_2, \dots, w_n -
: 特徴量(説明変数)x_1, x_2, \dots, x_n -
: 切片b
式全体は、特徴量
今回は、説明変数が2つ(例えば、部屋の広さと築年数)あると仮定して記事を書いていく。
つまり
-
: 1つ目の特徴量(例:部屋の広さ)x_1 -
: 2つ目の特徴量(例:築年数)x_2 -
: それぞれの特徴量に対応する回帰係数(重み)w_1, w_2
1. 損失関数
回帰モデルでは、予測値
通常、回帰分析では、平均二乗誤差(Mean Squared Error: MSE) や最小二乗誤差を損失関数として使用する。
今回は平均二乗誤差で説明する。
予測値
データが200個ある場合、iは1~200までとなり、順に予測値と実際の値の誤差を求めていく。
そして最後にすべてを足し、
この損失関数は、モデルパラメータ
勾配降下法はこの曲面に沿って進み、損失関数が最も小さいパラメータを探すために使われる。
損失関数が最も小さいか否かを求めるために使用するのが勾配降下法。
2. 勾配の計算
勾配降下法を使って最適な
なぜ微分するのか。それは勾配の傾きを求めるため。(微分についてはコチラを参照)
傾きが0の場所は、勾配が最も小さくなり、適切な回帰係数や切片を求めるにふさわしい箇所。
以下の図のように赤点がどんどん勾配を降下していくため、勾配降下法という。
実際に損失関数(MSE)を微分した場合、式はどのようになるのか。
例えば、説明変数が2つの場合、損失関数 MSE を
MSEの微分が以下の通りになるのは何となくわかると思う。
では
元々の式を見たら分かるが、
つまり、
たとえば
-
が大きければ、少しx_{i1} を変えるだけでw_1 が大きく変わる。y_{\text{pred}_i} -
が小さければ、同じだけx_{i1} を変えてもw_1 はあまり変わらない。y_{\text{pred}_i}
3. パラメータの更新
勾配が計算できたら、
これにより、損失関数を小さくする方向に進める。
それぞれの回帰係数
-
:これが「学習率」で、どのくらいのステップで動かすかを決めるパラメータとなる。山道を降りる際に「大きく一歩踏み出す」か「小さく一歩踏み出す」か、というようなイメージ。\alpha -
:マイナス符号は、勾配の「反対方向」に進むために使う。損失を減らしたいので、勾配の逆方向に行く必要がある。-
パラメータを更新した後は、また「1. 損失関数」からやり直し。
これを何度も繰り返すことで、損失関数が小さくなる方向へ少しずつ進んでいき、最終的には最適な
さいごに
前回も学習したないようなので少し説明を省いたが、個人的にはこれで結構理解できた気がする。
今後も出てくる可能性があるため、しっかりと頭に入れておこうと思う。
損失関数⇒勾配の計算⇒パラメータの更新⇒損失関数・・・ヨシ!
ではまた
Discussion