機械学習における線形回帰モデルの勾配降下法学習
📂機械学習機械学習における線形回帰モデルの勾配降下法学習
概要
線形回帰モデルの学習方法の一つである勾配降下法gradient descentを使った方法を紹介する。
説明
データセットをX={xi}i=1N、ラベルセットをY={yi}i=1Nとしよう。そして、以下のような線形回帰モデルを仮定する。
y^=j=0∑nwjxj=wTx
この時、x=[x0…xn]Tとw=[w0…wn]Tである。勾配降下法とは、関数のグラディエントが関数値が最も多く増加する方向を意味することを利用した学習法である。損失関数Jを以下のようにMSEとする。
J(w)=21i=1∑N(yi−wTxi)2
前に定数21が付くのは、Jを微分する時に2が飛び出るからであり、これを約分するためである。つまりJを最小化することも、21Jを最小化することも同じだ。要するに、与えられたXとYに対して、次のような最適解w∗を見つけることが目標だ。
w∗=wargmin(J(w)=21i=1∑N(yi−wTxi)2)
表記法
数学、物理学、工学全般でスカラ関数のグラディエントを次のように表記する。
∇J(w)=[∂w0∂J(w)…∂wn∂J(w)]
機械学習では、次のような表記もよく使われる。
∂w∂J(w)=[∂w0∂J(w)…∂wn∂J(w)]
つまり、∇J=∂w∂Jである。この記事では、グラディエントの表記法として∇Jを使うことにする。
アルゴリズム
グラディエントの性質により、∇JはJが最も大きく増加する方向を指す。その逆に、−∇JはJが減少する方向を指す。私たちの目標はJの関数値が減少することであるため、重みwを−∇Jの方向に移動させる。言い換えれば、次のように更新する。
w−α∇J→w
この時、αは学習率learning rateである。実際に∇Jを計算すると次のようになる。xi=[xi0…xin]としよう。∂wj∂wTxi=∂wj∂∑kwkxik=xijなので、
∇J=[21i=1∑N∂w1∂(yi−wTxi)2⋯21i=1∑N∂wn∂(yi−wTxi)2]=[i=1∑N(yi−wTxi)xi0⋯i=1∑N(yi−wTxi)xin]=i=1∑N(yi−wTxi)[xi0⋯xin]=i=1∑N(yi−wTxi)xi
したがって、具体的にwを更新する式は次のようになる。
w−αi∑(yi−wTxi)xi→w
これはウィドロー・ホフWidrow-HoffまたはLMSLeast Mean Squareアルゴリズムと呼ばれる。この式で、括弧内は誤差なので、誤差が大きいとwが多く更新され、誤差が小さいとwが少し更新されることがわかる。
更新方法
重みを更新する方法には大きく分けて二つある。両方の方法は適切な学習率αに対して、最適解に収束することが知られている。
バッチ学習
バッチ学習batch learningは、全データセットXの誤差に対して、一度に重みを修正することをいう。つまり、上で説明した通りである。
Repeat until convergence: w−αi∑(yi−wTxi)xi→w
オンライン学習
オンライン学習online learningは、各データxiの誤差に対して、重みを修正することをいう。
Repeat until convergence: For i=1 to N:w−α(yi−wTxi)xi→w
参考