shivaseの日記

SIer→Web→教師→SIer→ベンチャー(SRE)と異色な人生を歩んでいるエンジニアの日記

Machine Learning - Week1 Parameter Learning

Machine Learning Week1 - Model and Cost Function の続き

前回でてきた {J(\theta_0,\theta_1)}の最小を見つける目的関数の中の、最急降下法(Gradient Descent)を扱う。

最急降下法(Gradient Descent)

関数(ポテンシャル面)の傾き(一階微分)のみから、関数の最小値を探索する連続最適化問題の勾配法のアルゴリズムの一つ

最急降下法 - Wikipedia

アルゴリズム

  1. 適当な {\theta_0,\theta_1}を選ぶ
    初期値はなんでもいい。
  2.  {J(\theta_0,\theta_1)}がまだ最小値でなければ、次の {\theta_0,\theta_1}を選ぶ
  3. 2に戻る

※ 初期値次第は、局所的最適解(local minimum)が異なることもある

グラフにすると

最急降下法グラフ

数式

{ \displaystyle
\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\space(for \space j = 0 \space and \space j = 1)
} 

いきなり微分がでてくるけど、重要なのは {\alpha}が何か

シンボルの意味

  •  {:=}
    代入を表す
     {a := b}はaにbを代入することとなるが、  {a = b}はaはbと等価である意味なので注意
  •  {\alpha}
    学習率(Learning rate)を表す
    最急降下法は何回も計算しながら最適解を見つけるが、その1回1回のステップの距離にあたる
    • αが大きい
      大きなステップとなり、高速にはなるが、うまく収束(conversion)しないか、発散(diverge)することも
    • αが小さい
      小さなステップとなり、ステップが増え収束に時間がかかってしまう
  •  {\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)}
    導関数項(derivative term)を表す
    現在地({J(\theta_0,\theta_1)})があって、次に低い地点に進むにはどっちに向かえばいいかを決めるパラメータ

    導関数の公式の証明の前に、そもそも導関数とは何だろうか?導関数とは、ざっくりと言ってしまえば、グラフの傾きの事なのです。つまり、先ほど紹介した導関数の公式は、グラフの傾きを表していたわけです。

    導関数の公式の意味や証明を紹介していくぜ

 {\theta_j}を算出する上での注意事項

 {\theta_0} {\theta_1}は同時(simultaneous)に更新する

{ \displaystyle
temp0 := \theta_0 - \alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)}
{ \displaystyle
temp1 := \theta_1 - \alpha\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1)}
{ \theta_0 := temp0}
{ \theta_1 := temp1}

数式に{\theta_0}{\theta_1}が混在しているが、{\theta_0}を計算して、その{\theta_0}の値で{\theta_1}を求めるのはNG. まぁここは中で出てくる演習問題を解く事で理解できる.

【スポンサーリンク】