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]}$로 적을 수 있음
'인공지능 > DLS' 카테고리의 다른 글
[1.4.] Deep Neural Networks (0) | 2022.07.02 |
---|---|
[1.3.] Shallow Neural Networks(2) (0) | 2022.06.27 |
[1.2.] Neural Networks Basics - Python and Vectorization (0) | 2022.06.26 |
[1.2.] Neural Networks Basics - Logistic Regression as a neural network(3) (0) | 2022.06.26 |
[1.2.] Neural Networks Basics - Logistic Regression as a neural network(2) (0) | 2022.06.25 |