高卒フリーターがAIエンジニアを目指す

機械学習・Python・数学 の勉強メモ

Coursera Machine Learning 1週目の復習

自分用のメモです。

①Introduction

機械学習とは
教師あり学習

データセットに答えが含まれており、インプットに対するアウトプットの答えが既に判明している状態での学習。
教師あり学習の課題は大きく「回帰問題」と「分類問題」に分けられる。

回帰問題

予測するものの値が連続的である場合の問題。実数値を推測する問題。
(数学の関数の連続と定義は違うけどニュアンス的に一緒)
土地の広さをxとしたとき、土地の相場yは、y=2x  のような関数を算出する問題。

分類問題

対象にラベルをつける問題。これはりんご、これはみかん、のように判別する問題。

教師なし学習

学習過程で答えが与えられない。Googleはコンピューターに画像を見せ続けて猫を認識させるのに成功したが、これが教師なし学習だったので、話題になった。つまり、人間がコンピューターに”猫という概念”を教えることなく、コンピューターは猫を認識した。
教師あり学習で認識させる場合は、猫や犬の画像を見せて「これは猫」「これは犬」と学習させ、「じゃ、これは?」と聞く。(分類問題)

②Model and Cost Function

数式の定義

x:インプット
y:アウトプット
m:データの組の総数
i:何番目のデータの組か
$$
(x^{(i)}, y^{(i)}) : データの組
$$
h:仮説関数 (hypothesis)

仮説関数 (Hypothesis)

記号hで表される。yをxから推測するための関数。
y = h(x) の形をとる。
仮説という名前はなんとなくつけられてしまっただけで、先生的にはあまりいい命名じゃないと。

コスト関数 (Cost Function)

適切な仮説関数を導き出す(仮説関数の係数、定数の適切な値を導き出す)ために使われる関数。
hが線形回帰の場合、仮説関数は下のように表される。
$$
h_θ(x)^{x{(i)}} = θ_0+θ_1x^{(i)}
$$
このとき、コスト関数は
$$
J(θ_0,θ_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_θ(x_i)-y_i)^2
$$
となる。
このJ()が最小となるθ_0,θ_1を求めることで適切な仮説関数が導き出される。

③Parameter Learning

勾配法

最適化問題において、関数の勾配に関する情報を解の探索に用いるアルゴリズムの総称。

最急降下法

勾配法のアルゴリズムの一つ。
関数の傾きから関数の最小値を探索する、連続最適化問題アルゴリズム
勾配法としては最も単純で、よく使われる。
(それから、線形回帰のコスト関数以外にも使えるよ。)
最急降下法を用いる手順
・θ_0, θ_1 を適当に設定してスタート
・θ_0,θ_1を変えながら、J(θ_0,θ_1) を小さくしていき、最小値を探す
その更新式が↓
$$
\theta_{j}:=\theta_{j}-α\frac{\partial}{\partial \theta_{j}}J(\theta_{0},\theta_{1})
$$
αは探索幅(学習率と呼ぶ)、:=はイコールではなく代入の意味
なぜ更新式がこの形をとるのかがいまいち理解できないときは、
Gradient Descent Intuition - Linear Regression with One Variable | Coursera

ポイントは、全てのθの値は同時に更新する必要があること。つまり
$$
temp0:=\theta_{0}-α\frac{\partial}{\partial \theta_{0}}J(\theta_{0},\theta_{1})
temp1:=\theta_{1}-α\frac{\partial}{\partial \theta_{1}}J(\theta_{0},\theta_{1})
\theta_{0} := temp0
\theta_{1}:=temp1
$$
こういう順番で行う必要がある。先にθ0を更新して、そのθ0を用いてθ1を算出してはいけない、ということ

線形代数 Linear Algebra

知らなかったところだけ書く

転置行列

行列Aが
A=\begin {bmatrix}1 & 2 & 3 \\4 & 5 & 6 \end{bmatrix}
のとき、Aの転置行列は
A^T=\begin {bmatrix}1 &4 \\2&5\\3&6 \end{bmatrix}
TはTransposeの意味