備忘録的な感じのメモです.
##最適化
###目的
コスト関数$J(\boldsymbol{\theta})$の最小化
つまり
$$minimize{J(\boldsymbol{\theta})}$$
一般的には,モデルとテストセットの誤差を何らかの形で表現した関数のことをコスト関数と呼び,コスト関数を最小化することにより誤差の最小化を図っている.
ではコスト関数にはどのような形があるのか
###コスト関数
####1.2乗誤差
$$\frac{1}{2m}\sum_{i=1}^m{\left(h_\theta(x^{(i)})-y^{(i)}\right)}^2$$
####2.正則化したやつ
フィッティングでよく出てくる.オーバーフィッティングを防ぐためのペナルティ項を加える.
ロッソ正則化(L1ノルムを足したやつ)
$$\frac{1}{2m}\left[\sum_{i=1}^m{\left(h_\theta(x^{(i)})-y^{(i)}\right)}^2+\lambda\sum_{j=1}^n{|\theta_j|}\right]$$
リッジ回帰(L2ノルムを足したやつ)
$$\frac{1}{2m}\left[\sum_{i=1}^m{\left(h_\theta(x^{(i)})-y^{(i)}\right)}^2+\lambda\sum_{j=1}^n{\theta_j^2}\right]$$
今までが$J(\boldsymbol{\theta})$について.以降はコスト関数を計算して最小化していく行為(最初の式の$minimize$の箇所)についての説明となる.
###最適化手法
このサイト
https://postd.cc/optimizing-gradient-descent/
がものすごく詳しいので,勉強目的ならそちらのほうがオススメです
####バッチ勾配降下法
重みをどの方向に動かせばよいのか,$J(\boldsymbol{\theta})$の微分で決めようという方法です.
$$w:=w-\alpha\frac{\partial J(\boldsymbol{\theta})}{\partial w}$$
デメリットはデータセット全体を用いた更新則なので,膨大なデータセットへの適用を考えた時に計算量・時間が高くついてしまうこと.
データが一つ増えただけでも全体の計算をやり直すので,あまり好まれない.
が,下記の2手法よりは収束性が良い
####ミニバッチ法
上と同様の更新則.上のデータをちょこちょこ放り投げるバージョン(雑)
####確率的勾配降下法
上と同様の更新則.逐次勾配降下を行うアルゴリズム
####Momentum
CourseraのDeep Learningコースによると,
以下のように$dW,db$を計算する.
$$v_{dW}=\beta v_{dW}+(1-\beta)\frac{\partial J(\boldsymbol{\theta})}{dW}$$
$$v_{db}=\beta v_{db}+(1-\beta)\frac{\partial J(\boldsymbol{\theta})}{db}$$
$$W = W-\alpha v_{dW}$$
$$b = b -\alpha v_{db}$$
この時Hyperparametersは$\alphaと\beta$である.
アナロジー的には$v_{dW}とv_{db}$が速度項で$dW,db$が加速度項らしい.
$\beta$は$0.9$あたりを使うことが多いとのこと.
####RMSProp
Root Square Mean Propsの略です.
$$S_{dW}=\beta S_{dW}+(1-\beta)\left[\frac{\partial J(\boldsymbol{\theta})}{dW}\right]^2$$
$$S_{db}=\beta S_{db}+(1-\beta)\left[\frac{\partial J(\boldsymbol{\theta})}{db}\right]^2$$
$$W = W-\alpha \frac{\frac{\partial J(\boldsymbol{\theta})}{dW}}{\sqrt{S_{dW}}}$$
$$b = b-\alpha \frac{\frac{\partial J(\boldsymbol{\theta})}{db}}{\sqrt{S_{db}}}$$
Sが限りなく小さい時,$\epsilon=10^{-8}$を加えることがある.
####ADAM
Adaptive Momentum estimationの略.
MomentumとRMSPropを足したものと言われることが多い.
$$v_{dW}=\beta_1 v_{dW}+(1-\beta_1)\frac{\partial J(\boldsymbol{\theta})}{dW}, v_{db}=\beta_1 v_{db}+(1-\beta_1)\frac{\partial J(\boldsymbol{\theta})}{db}$$
$$S_{dW}=\beta_2 S_{dW}+(1-\beta_2)\left[\frac{\partial J(\boldsymbol{\theta})}{dW}\right]^2 ,S_{db}=\beta_2 S_{db}+(1-\beta_2)\left[\frac{\partial J(\boldsymbol{\theta})}{db}\right]^2$$
$$v_{dW}^{corrected}=v_{dW}/(1-\beta_1^t), v_{db}^{corrected}=v_{db}/(1-\beta_1^t)$$
$$S_{dW}^{corrected}=S_{dW}/(1-\beta_2^t), S_{db}^{corrected}=S_{db}/(1-\beta_2^t)$$
$$W = W-\alpha \frac{v_{dW}^{corrected}}{\sqrt{S_{dW}^{corrected}}+\epsilon}$$
$$b = b-\alpha \frac{v_{db}^{corrected}}{\sqrt{S_{db}^{corrected}}+\epsilon}$$