4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Coursera機械学習入門コース(4週目 - ニューラルネットワーク)

Last updated at Posted at 2019-10-05

Courseraの機械学習コースの4週目です。3週目はロジスティック回帰による分類を学びましたが、4週目では、より複雑な問題に対応できるニューラルネットワークについて学びます。演習にMNISTっぽいやつも出てきて内容が実践に近づいてきた感があります。
記事「Coursera機械学習入門オンライン講座虎の巻(文系社会人にオススメ)」を最初に読むことをお勧めします。

サマリ

実績時間:4約時間
目安時間:約4.5時間(正確には279分)
※コースに各章の時間目安が書かれていて、それを足しただけです。

一覧

No. 目安時間 内容
1.1 Motivations 16分 ニューラルネットワークを学習する動機
1.2 Neural Networks 35分 ニューラルネットワークのモデル計算式
1.3 Applications 28分 ニューラルネットワークの使用例
1.4 Review 200分 講義内容PDFとクイズとプログラム演習

1. Neural Networks: Representation

1.1. Motivations

1.1.1. Non-linear Hypotheses

Video:9分
非線形の仮説に対するアプローチ。
多項ロジスティック回帰を使うことで非線形の分類問題にも対応できるが、特徴量の数が増えるにつれ、計算量が多くなりすぎる難点がある。それに対応するためのニューラルネットワーク。画像分類は特にその例が当てはまる。

1.1.2. Neurons and the Brain

Video:7分
ニューラルネットワークは脳を模倣したネットワーク。

1.2. Neural Networks

1.2.1. Model Representation I

Video:12分, Reading:6分
ニューラルネットワークのモデルについてです。
まずはシンプルなモデルの例で3つの入力$x$に対して$h_\theta (x)$を出力するニューラルネットワークです。

\begin{bmatrix}x_0 \newline x_1 \newline x_2 \newline \end{bmatrix}\rightarrow\begin{bmatrix}\ \ \ \newline \end{bmatrix}\rightarrow h_\theta(x) \\

その場合の隠れ層(真ん中)ニューロン$a$とパラメータ(重み)$\theta$です。

\begin{align*}& a_i^{(j)} = \text{"activation" of unit $i$ in layer $j$} \newline& \Theta^{(j)} = \text{matrix of weights controlling function mapping from layer $j$ to layer $j+1$}\end{align*}

では、隠れ層が3ニューロンの例です。

\begin{bmatrix}x_0 \newline x_1 \newline x_2 \newline x_3\end{bmatrix}\rightarrow\begin{bmatrix}a_1^{(2)} \newline a_2^{(2)} \newline a_3^{(2)} \newline \end{bmatrix}\rightarrow h_\theta(x)

隠れ層および出力レイヤーの値は以下のように計算します。

\begin{align*} a_1^{(2)} = g(\Theta_{10}^{(1)}x_0 + \Theta_{11}^{(1)}x_1 + \Theta_{12}^{(1)}x_2 + \Theta_{13}^{(1)}x_3) \newline a_2^{(2)} = g(\Theta_{20}^{(1)}x_0 + \Theta_{21}^{(1)}x_1 + \Theta_{22}^{(1)}x_2 + \Theta_{23}^{(1)}x_3) \newline a_3^{(2)} = g(\Theta_{30}^{(1)}x_0 + \Theta_{31}^{(1)}x_1 + \Theta_{32}^{(1)}x_2 + \Theta_{33}^{(1)}x_3) \newline h_\Theta(x) = a_1^{(3)} = g(\Theta_{10}^{(2)}a_0^{(2)} + \Theta_{11}^{(2)}a_1^{(2)} + \Theta_{12}^{(2)}a_2^{(2)} + \Theta_{13}^{(2)}a_3^{(2)}) \newline \end{align*}

レイヤー$j$に$s_j$個ユニットがあって、レイヤー$j+1$に$s_{j+1}$個ユニットがあった場合、$\Theta ^{(j)}$の次元(dimension)は$ s_{j+1}\times (s_j+1) $($s$はSubscriptionの略)。

1.2.2. Model Representation II

Video:11分, Reading:6分
ニューラルネットワークのモデルの続きです。
前回の式を$z_k^{(j)}$を使って簡略化します。

\begin{align*} a_1^{(2)} = g(\Theta_{10}^{(1)}x_0 + \Theta_{11}^{(1)}x_1 + \Theta_{12}^{(1)}x_2 + \Theta_{13}^{(1)}x_3) = g(z_1^{(2)})
\newline a_2^{(2)} = g(\Theta_{20}^{(1)}x_0 + \Theta_{21}^{(1)}x_1 + \Theta_{22}^{(1)}x_2 + \Theta_{23}^{(1)}x_3)  = g(z_2^{(2)})
\newline a_3^{(2)} = g(\Theta_{30}^{(1)}x_0 + \Theta_{31}^{(1)}x_1 + \Theta_{32}^{(1)}x_2 + \Theta_{33}^{(1)}x_3)  = g(z_3^{(2)})
\newline h_\Theta(x) = a_1^{(3)} = g(\Theta_{10}^{(2)}a_0^{(2)} + \Theta_{11}^{(2)}a_1^{(2)} + \Theta_{12}^{(2)}a_2^{(2)} + \Theta_{13}^{(2)}a_3^{(2)}) \newline \end{align*}

2つ目のレイヤーのノード$k$である$z$は、以下の式で表せます。

z_k^{(2)} = \Theta_{k,0}^{(1)}x_0 + \Theta_{k,1}^{(1)}x_1 + \cdots + \Theta_{k,n}^{(1)}x_n

ベクトルで表現し、ベクトル化した計算だと以下の式です。

\begin{align*}x = \begin{bmatrix}x_0 \newline x_1 \newline\cdots \newline x_n\end{bmatrix} &z^{(j)} = \begin{bmatrix}z_1^{(j)} \newline z_2^{(j)} \newline\cdots \newline z_n^{(j)}\end{bmatrix}\end{align*} \\
z^{(j)} = \Theta^{(j-1)}a^{(j-1)}

これを順に計算していきます。このようにレイヤーの前から計算を進めていくことを、フォワードプロパゲーション(Forward Propagation:順方向伝搬)といいます。

1.3. Applications

1.3.1. Examples and Intuitions I

Video:7分, Reading:2分
ニューラルネットワークを使ってand演算ができます。
下記のような式の例で考えます($x_0$はbiasなので常に値が1です)。

\begin{align*}\begin{bmatrix}x_0 \newline x_1 \newline x_2\end{bmatrix} \rightarrow\begin{bmatrix}g(z^{(2)})\end{bmatrix} \rightarrow h_\Theta(x)\end{align*}

パラメータ$\theta$を以下と仮定した場合、and演算ができます。ちなみに$g(z)$はシグモイド関数です。

\Theta^{(1)} =\begin{bmatrix}-30 & 20 & 20\end{bmatrix} \\

\begin{align*}& h_\Theta(x) = g(-30 + 20x_1 + 20x_2) \newline \newline & x_1 = 0 \ \ and \ \ x_2 = 0 \ \ then \ \ g(-30) \approx 0 \newline & x_1 = 0 \ \ and \ \ x_2 = 1 \ \ then \ \ g(-10) \approx 0 \newline & x_1 = 1 \ \ and \ \ x_2 = 0 \ \ then \ \ g(-10) \approx 0 \newline & x_1 = 1 \ \ and \ \ x_2 = 1 \ \ then \ \ g(10) \approx 1\end{align*}

1.3.2. Examples and Intuitions II

Video:10分, Reading:3分
ニューラルネットワークを使ってandだけでなくNORやORも演算可能。その場合のパラメータは下記のとおり。

\begin{align*}AND:\newline\Theta^{(1)} &=\begin{bmatrix}-30 & 20 & 20\end{bmatrix} \newline NOR:\newline\Theta^{(1)} &= \begin{bmatrix}10 & -20 & -20\end{bmatrix} \newline OR:\newline\Theta^{(1)} &= \begin{bmatrix}-10 & 20 & 20\end{bmatrix} \newline\end{align*}

下記のニューラルネットワークではXNORも演算できる。

\begin{align*}\begin{bmatrix}x_0 \newline x_1 \newline x_2\end{bmatrix} \rightarrow\begin{bmatrix}a_1^{(2)} \newline a_2^{(2)} \end{bmatrix} \rightarrow\begin{bmatrix}a^{(3)}\end{bmatrix} \rightarrow h_\Theta(x)\end{align*}

その時のパラメータは以下の通り。

\Theta^{(1)} =\begin{bmatrix}-30 & 20 & 20 \newline 10 & -20 & -20\end{bmatrix}
\Theta^{(2)} =\begin{bmatrix}-10 & 20 & 20\end{bmatrix}

1.3.3. Multiclass Classification

Video:3分, Reading:3分
多クラス分類時のOne-hot Encoding表現についてでした。One-hot Encodingについてはリンク先に詳しく書いてあります。
最後の結果がこんな感じになるやつです。

h_\Theta(x) =\begin{bmatrix}0 \newline 0 \newline 1 \newline 0 \newline\end{bmatrix}

1.4. Review

1.4.1. Lecture Slides

Reading:10分
ここまでの講義スライドPDF。

1.4.2. Neural Networks Representation

Quiz:5問, Reading:10分
2回間違えてしまいました。3回目は時間かけてやったら100点でした。
そんなに難しくないです。

1.4.3. Multi-class Classification and Neural Networks

Programming Assignment:180分
3週目の多クラス分類と今回のニューラルネットワークに関する演習。今回はOptionalなしでした。
前回に引き続き、GitHubをカンニングをしました。だから時間としては1時間程度で終了。内容の大雑把な理解レベルにとどめています。とにかく早く終わらせることに注力しています。

感想

ニューラルネットワークはある程度知っていてプログラミングの経験もあったため、難しいとは感じませんでした。

関連記事

私より詳しくまとめてくれています。

他の週のリンクです。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?