Coursera 機械学習(1週目-2)

machine-learning


最急降下法

前回は綺麗なボウルのような図だったため、簡単に最小値を見つけることができましたが、毎回そう上手くはいきません。
本来パラメータは複数ありますが、今回も理解しやすいために\(θ_0\)と\(θ_1\)の2つで考えていきます。
以下のグラフで最小値を見つける場合にはどうしたらいいでしょうか。

Andrew Ngの機械学習より
上記の画像を、広い丘だとイメージしてください。
この広い丘のどこかに、自分が立っています。目的は、「最短で一番低い場所に辿り着く」です。
まず「自分がどこに立つか」ですが、どこでも構いません。が、通常は\(θ_0=0\)、\(θ_1=0\)と設定します。次に「最短」ですが、丘の上で見渡した時に、早く降りられそうな場所=傾斜が急なところ、を意味します。そして「低い場所」というのは、前回同様の最小値(局所的最適解)になります。

Andrew Ngの機械学習より
イメージとしては、上記画像の赤丸がスタート地点、青丸がゴールです。
この最急降下法で覚えておくべき特性は、スタート地点によって局所的最適解が変わる場合がある、ということです。
もしスタート地点が違っていたら、以下の画像のように別のゴールに辿り着く可能性もあるのです。

Andrew Ngの機械学習より
以上の考え方を数式で表してみます。
$$\large θ_j:=θ_j-α\frac{\partial}{\partial θ_j}J(θ_0,θ_1)$$
「:=」は代入を意味しますので、収束するまで\(θ_j\)を更新し続けます。
「α」は学習率と言い、降下する際の「ステップの大きさ」を意味します。αが大きければ、それだけ早く最小値に到達することになりますし、逆に小さければ、非常に小刻みに降下していくことになります。
そして最も理解すべきことは、\(θ_j\)を更新する時は、\(θ_0\)と\(θ_1\)を同時に更新する必要がある、ということです。

微分と学習率

先ほどの数式の\(\frac{\partial}{\partial θ_j}J(θ_0,θ_1)\)の部分は、微分というものであり、ある関数に対する接線の勾配を求めています。

上図の赤い線が接線であり、この赤い線を移動(微分)させて最小値を目指します。
この移動距離を決定するのが、αである学習率です。学習率が小さすぎるとどうなるでしょうか。
1つ1つのステップが小さくなるタメ、最小値に到達するまでに多くのステップを必要としてしまいます。

逆に、学習率が大きすぎるとどうなるでしょうか。
学習率が大きすぎると最小値を通り過ぎて収束しなくなる可能性が高くなり、さらにどんどん行きすぎて発散してしまう可能性も出てきます。

さて、既に最小値にいた場合、つまり初期化した時点で最小値にいた場合はどうなるでしょうか。
この場合は、既に最小値にいるため、これ以降は\(θ\)が更新されません。

行列

n行×1列の行列をベクトルと呼びます。例えば以下は、四次元ベクトルです。
\[
y = \left(
\begin{array}{ccc}
460 \\
232 \\
315 \\
178
\end{array}
\right)
\]
また、以下のように対角成分が1、非対角成分が0である行列を単位行列と呼びます。
\[
y = \left(
\begin{array}{ccc}
1 & 0 \\
0 & 1
\end{array}
\right)
\]
単位行列は、どのような行列Aを掛けてもAをそのまま返す、という性質を持っています。
そのため、本来であれば答えが変わってしまう行列の非可換性も、単位行列であれば可換になります。
\[
\left(
\begin{array}{ccc}
1 & 0 \\
0 & 1
\end{array}
\right)
\left(
\begin{array}{ccc}
3 & 4 \\
2 & 16
\end{array}
\right)
=
\left(
\begin{array}{ccc}
3 & 4 \\
2 & 16
\end{array}
\right)
\]
\[
\left(
\begin{array}{ccc}
3 & 4 \\
2 & 16
\end{array}
\right)
\left(
\begin{array}{ccc}
1 & 0 \\
0 & 1
\end{array}
\right)
=
\left(
\begin{array}{ccc}
3 & 4 \\
2 & 16
\end{array}
\right)
\]
単位行列を知るうえで、もう一つ重要な要素があります。それは、逆行列と呼ばれるものです。
行列Aと行列Bがあり、ABとBAの結果が単位行列になる場合(AB=BA=単位行列)、BをAの逆行列と言います。
\[
\left(
\begin{array}{ccc}
3 & 4 \\
2 & 16
\end{array}
\right)
\left(
\begin{array}{ccc}
0.4 & -0.1 \\
-0.05 & 0.075
\end{array}
\right)
=
\left(
\begin{array}{ccc}
0.4 & -0.1 \\
-0.05 & 0.075
\end{array}
\right)
\left(
\begin{array}{ccc}
3 & 4 \\
2 & 16
\end{array}
\right)
=
\left(
\begin{array}{ccc}
1 & 0 \\
0 & 1
\end{array}
\right)
\]
逆行列が存在しない行列を、特異行列と呼びます。

コメントを残す