Neural Networks Overview

- Logistic Regression

     - $z$, $a$, 손실함수 $L$

 

- 신경망

     - sigmoid unit 들을 쌓아서 이룰 수 있음

     - 노드들 : $z$ 및 $a$ 와 같은 것으로 생각할 수 있음

 

*notation

- $(i)$ : $(i)$번째 학습셋 데이터

- $[i]$ : $[i]$번째 레이어

 

 

Neural Network Representation

"single hidden layer"

- hidden?

     - 중간 노드들의 실제 값들은 관찰되지 않음 (학습셋에서 보이지 않음)

 

- 기존에 $X$ 를 input feature 로 denote 했음

- input feature 들을 표현하는 또다른 방법으로서 : $a^{[0]} = X$

     - 여기서 $a$는 "activation" 의미

     - activations of the input layer

     - 레이어들이 이어지는 레이어에 전달하는 값들

- 그 다음, hidden layer 에서 발생하는 activations 들은 $a^{[1]}$ 로 표시

     - $a^{[1]} = \begin{bmatrix} a_{1}^{[1]} \\ a_{2}^{[1]} \\ a_{3}^{[1]} \\ a_{4}^{[1]} \end{bmatrix} $

     - 4 개의 units(nodes)를 가지고 있으니 4차원

- 그 다음, $a^{[2]}$, 즉 $\hat{y}$는 실수

- 보통 input 레이어는 세지 않음 (0번 레이어) --> 이미지에서 보는 건 2 layer NN 임

- hidden layer와 output layer 는 파라미터를 가질 것임 : $w^{[1]}$, $b^{[1]}$

     - $w^{[1]}$ 는 $(4, 3)$ 차원 : 4개의 노드, 3개의 input

     - $b^{[1]}$ 는 $(4, 1)$ 차원

     - $w^{[2]}$ 는 $(1, 4)$ 차원 : 4개의 노드, 1개의 output

     - $b^{[2]}$ 는 $(1, 1)$ 차원

 

Computing a Neural Network's Output

- logistic regression에서 하나의 노드는 두 개의 과정을 품고 있다

     - 1. $z$ 계산

     - 2. $a$ 계산

 

- 마찬가지로 하나의 노드는 두 개의 과정을 가진다 (첫번째 노드를 예시로 한다면)

     - ${z^{[1]}}_{1} = {{w^{[1]}}_{1}}^{T}x + {b^{[1]}}_{1}$

     - ${a^{[1]}}_{1} = \sigma({z^{[1]}}_{1}) $

     - notation 참고

- 그 다음 노드를 살펴 본다면?

     - ${z^{[1]}}_{2} = {{w^{[1]}}_{2}}^{T}x + {b^{[1]}}_{2}$

     - ${a^{[1]}}_{2} = \sigma({z^{[1]}}_{2}) $

 

- 오른쪽 식들을 for-loop으로 처리하지 않고, vectorize 하기로 함

     - 먼저 ${{w^{[1]}}_{1}}^{T}$, ${{w^{[1]}}_{2}}^{T}$, ${{w^{[1]}}_{3}}^{T}$, ${{w^{[1]}}_{4}}^{T}$를 matrix로 쌓는다

     - 그 matrix 는 $(4, 3)$의 크기를 가진다 --> 4개의 노드, 3개의 feature input?

$$ z^{[1]} = \begin{bmatrix}- & {{w^{[1]}}_{1}}^{T} &  -  \\ - & {{w^{[1]}}_{2}}^{T} & - \\ - & {{w^{[1]}}_{3}}^{T} & - \\ - & {{w^{[1]}}_{4}}^{T} & - \end{bmatrix} \begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix} + \begin{bmatrix} {b^{[1]}}_{1} \\ {b^{[1]}}_{2}  \\ {b^{[1]}}_{3} \\ {b^{[1]}}_{4}\end{bmatrix} = \begin{bmatrix} {{w^{[1]}}_{1}}^{T} x + {b^{[1]}}_{1} \\   {{w^{[1]}}_{2}}^{T} x + {b^{[1]}}_{2} \\ {{w^{[1]}}_{3}}^{T} x + {b^{[1]}}_{3} \\ {{w^{[1]}}_{4}}^{T} x + {b^{[1]}}_{4}\end{bmatrix} = \begin{bmatrix} {z^{[1]}}_{1} \\ {z^{[1]}}_{2} \\ {z^{[1]}}_{3} \\ {z^{[1]}}_{4} \end{bmatrix} $$

     - vector $z^{[1]}$를 생성하기 위해 vertically stack 한다 

$$W^{[1]} = \begin{bmatrix}- & {{w^{[1]}}_{1}}^{T} &  -  \\ - & {{w^{[1]}}_{2}}^{T} & - \\ - & {{w^{[1]}}_{3}}^{T} & - \\ - & {{w^{[1]}}_{4}}^{T} & - \end{bmatrix}$$

$$b^{[1]} = \begin{bmatrix} {b^{[1]}}_{1} \\ {b^{[1]}}_{2}  \\ {b^{[1]}}_{3} \\ {b^{[1]}}_{4}\end{bmatrix}$$

 

- 그 다음으로 activation 을 계산해야 함

$$a^{[1]} = \begin{bmatrix} {a^{[1]}}_{1} \\ {a^{[1]}}_{2}  \\ {a^{[1]}}_{3} \\ {a^{[1]}}_{4}\end{bmatrix} = \sigma (z^{[1]})$$

 

- $ x = a^{[0]}$, $\hat{h} = a^{[2]}$

- $a^{[0]}$ : if you want  as an alias for the vector of input features $x$

- $2$번째 레이어의 $w^{[2]}$는 $(1, 4)$ 의 벡터이며 $b^{[2]}$는 $(1, 1)$의 실수

- 따라서 $z^{[2]}$는 $(1, 1)$

 

 

- 신경망의 output을 계산할 때는 아래 네 개의 식만 기억하면 된다

Vectorizing Across Multiple Examples

- 지난 시간에는 single training example에 대해 신경망 예측을 수행했음. 이번에는 모든 example를 한꺼번에 하기로 함.

- feature input vector $x$ $a^{[2]} = \hat{y}$

     - $(1)$번째 데이터에 대하여 $x^{(1)}$ ${a^{[2]}}^{(1)} = {\hat{y}}^{(1)}$

     - $(2)$번째 데이터에 대하여 $x^{(2)}$ ${a^{[2]}}^{(2)} = {\hat{y}}^{(2)}$

     - ...

     - $(m)$번째 데이터에 대하여 $x^{(m)}$ ${a^{[2]}}^{(m)} = {\hat{y}}^{(m)}$

 

- non-vectorized

$for\ i = 1\ to\ m,$

     ${z^{[1]}}^{(i)}= w^{[1]}x^{(i)} + b^{[1]}$

     ${a^{[1]}}^{(i)} = \sigma({z^{[1]}}^{(i)})$

     ${z^{[2]}}^{(i)} = w^{[2]}{a^{[1]}}^{(i)} + b^{[1]}$

     ${a^{[2]}}^{(i)} = \sigma({z^{[2]}}^{(i)})$

 

- vectorized

     - stack them horizontally

$$ X =  \begin{bmatrix}  |  &  | & \ &  |  \\ x^{(1)} & x^{(2)} &  \ldots & x^{(m)} \\   |  &  | & \ &  |   \end{bmatrix} $$

$(n_{x}, m)$ 의 vector

$$ Z^{[1]} =  \begin{bmatrix}  |  &  | & \ &  |  \\ {z^{[1]}}^{(1)} & {z^{[1]}}^{(2)} &  \ldots & {z^{[1]}}^{(m)} \\   |  &  | & \ &  |   \end{bmatrix} $$

$$ A^{[1]} =  \begin{bmatrix}  |  &  | & \ &  |  \\ {a^{[1]}}^{(1)} {a^{[1]}}^{(2)} &  \ldots & {a^{[1]}}^{(m)} \\   |  &  | & \ &  |   \end{bmatrix} $$

→ 대문자 $Z^{[2]}$, $A^{[2]}$도 마찬가지로 벡터로 표현

 

$Z^{[1]}= w^{[1]}X+ b^{[1]}$

$A^{[1]}= \sigma(Z^{[1]})$

$Z^{[2]} = w^{[2]}A^{[1]} + b^{[1]}$

$A^{[2]} = \sigma(A^{[2]})$

 

- horizontal index = different training examples(training cells)

- vertical index = different nodes(hidden units) in neural network

* $X$의 경우 vertical index = different features

 

Explanation for Vectorized Implementation

[Justification for vectorized implementation]

${z^{[1]}}^{(1)} = w^{[1]}x^{(1)} + b^{[1]}$, ${z^{[1]}}^{(2)} = w^{[1]}x^{(2)} + b^{[1]}$, ${z^{[1]}}^{(3)} = w^{[1]}x^{(3)} + b^{[1]}$

     - 편리를 위해 $b^{[1]} = 0$ 으로 가정

 

- $X = A^{[0]}$ 이므로 $w^{[1]}A^{[0]} + b^{[1]}$로 적을 수 있음

 

 

복사했습니다!