[DL Basic] 1. Neural Networks & Multi-Layer Perceptron
Neural Networks
Neural Network는 affine transformation(행렬을 곱하는)과 nonlinear transformation(activation function)이 반복적으로 일어나는 ground-truth 확률밀도함수를 근사하는 모델이라고 할 수 있다.
Linear Neural Networks
- Data: $D = \{(x_{i}, y_{i})\}_{i=1}^{N}$
- Model: $\hat{y} = wx + b$
- Loss: $loss = \frac{1}{N} \sum_{i=1}^N (y_{i}- \hat{y}_{i})^{2}$
N개의 데이터를 잘 표현할 수 있는 모델을 선형으로 한정짓고 w와 b를 찾는 것이 목적이다.
따라서 Neural Network의 출력값과 데이터 y값의 차이(loss)를 줄이는 것이 중요하다.
그렇다면 w와 b 파라미터를 어떻게 찾을까?
파라미터가 어느 방향으로 움직였을 때 loss값이 줄어드는지를 찾으면 된다. → gradient descent
$$ \frac{\partial loss}{\partial w} = \frac{\partial}{\partial w} \frac{1}{N} \sum_{i=1}^N (y_{i}-\hat{y_{i}})^2 $$
$$ = \frac{\partial}{\partial w} \frac{1}{N} \sum_{i=1}^N (y_{i}-wx_{i}-b)^2 $$
$$ =- \frac{1}{N} \sum_{i=1}^N 2(y_{i}-wx_{i}-b)x_{i} $$
$$ w \leftarrow w - \eta \frac{\partial loss}{\partial w} $$
$$ b \leftarrow b- \eta \frac{\partial loss}{\partial b} $$
Beyond Linear Neural Networks
딥러닝은 Neural Network를 깊게 쌓은 것이다.
그러면 Network를 깊게 쌓을려면 어떻게 해야할까?
단순히 affine transform을 계속 곱한다면 이것은 한 단 짜리 neural network와 다를 것이 없다.
x라는 입력에서 y라는 출력으로 가는 mapping이 표현할 수 있는 표현력을 극대화하기 위해서는 단순히 선형결합을 N번 반복하는게 아니라 선형결합 뒤에 activation function을 통해서 Nonlinear transform을 거치는 과정을 N번 반복해야한다.
Universal Approximators Theorm
hidden layer가 한 개만 있는 neural network는 대부분의 continuous function을 근사할 수 있다.
이런 것을 만족하는 neural network가 세상 어딘가에 존재한다고 말할 수 있지만 내가 학습시킨 neural network가 그러한 성질을 가질 것이라고 말해서는 안된다.
→ Neural Network가 표현력이 크다라는 의미로 해석하면 된다.
Multi-Layer Perceptron
입력이 주어져있고 그 입력을 affine transformation과 non-linear transformation을 거쳐서 hidden vector, hidden layer에서 다시 affine transformation (과 non-linear transformation)을 하는 한 단 짜리 hidden layer가 있는 두 layer의 neural network를 보통 Multi-Layer Perceptron이라고 한다.

Loss Function
- Regression Task
$$ MSE = \frac{1}{N} \sum_{i=1}^{N} \sum_{d=1}^{D} (y_{i}^{(d)} - \hat{y}^{(d)})^{2} $$
- Classifcation Task
$$ CE = \frac{1}{N} \sum_{i=1}^{N} \sum_{d=1}^{D} y_{i}^{(d)} log\hat{y}_{i}^{(d)} $$
- Probabilistic Task
$$ MLE = \frac{1}{N} \sum_{i=1}^{N} \sum_{d=1}^{D} log N(y_{i}^{(d)} ; log\hat{y}_{i}^{(d)}, 1) $$
부스트캠프 AI Tech 교육 자료를 참고하였습니다.