본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day13] DL Basic 2. 뉴럴 네트워크 - MLP

DL Basics 1강은 Pre-course 때 정리해 놓은 것 
2021.12.02 - [AI] - 부스트캠프 AI Tech 3기 Pre-Course - 인공지능(AI) 맛보기 : [1]Historical Review
으로 대체했습니다.
 

부스트캠프 AI Tech 3기 Pre-Course - 인공지능(AI) 맛보기 : [1]Historical Review

부스트캠프를 준비하며 들었던 부스트코스의 내용을 정리해 두려고 합니다. Reference : 부스트캠프 AI Tech 3기 Pre-Course - 딥러닝 기본 용어 설명 - Historical Review

chae52.tistory.com

 

Neural Networks

인간의 뇌 신경망을 모방하고자 한 computing system

행렬을 곱해서 함수를 근사하는 모델

 

Linear Neural Networks

기울기와 절편, 2개의 파라미터를 찾는 문제가 될 것이다
딥러닝으로 가면 수십억 개의 파라미터를 찾아야 할 것이다.

  • Data
    $\mathcal{D} = \{(x_{i}, y_{i})\}^{N}_{i=1} $
    N개의 data
  • Model
    $\hat{y}=wx+b$
    x에서 $\hat{y}$로 매핑을 찾는 것이 목적
  • Loss : 우리가 이루고자 하는 현상이 일어날 때 줄어드는 값
    $loss=\frac{1}{N} \displaystyle\sum^{N}_{i=1}(y_{i} - \hat{y}_{i})^2$
    Squared loss function이 회귀에서 제일 흔하다(MSE)

    loss를 줄이기 위해서 미분의 음수 방향으로 파라미터를 업데이트하면 최소화되는 지점에 이르게 된다.

그래서 $w$에 대해서 편미분(partial derivative)를 하고

$$\frac{\partial{loss}}{\partial{w}} = \frac{\partial}{\partial{w}} \frac{1}{N} \displaystyle\sum^{N}_{i=1}(y_{i} - \hat{y}_{i})^2$$

$$= \frac{\partial}{\partial{w}} \frac{1}{N} \displaystyle\sum^{N}_{i=1}(y_{i} - wx_{i}-b)^2$$

$$= -\frac{1}{N} \displaystyle\sum^{N}_{i=1}-2(y_{i} - wx_{i}-b)x_{i}$$

 

$b$에 대해서도 편미분을 한다

$$\frac{\partial{loss}}{\partial{b}} = \frac{\partial}{\partial{b}} \frac{1}{N} \displaystyle\sum^{N}_{i=1}(y_{i} - \hat{y}_{i})^2$$

$$= \frac{\partial}{\partial{b}} \frac{1}{N} \displaystyle\sum^{N}_{i=1}(y_{i} - wx_{i}-b)^2$$

$$= -\frac{1}{N} \displaystyle\sum^{N}_{i=1}-2(y_{i} - wx_{i}-b)$$

 

특정 step size $\eta$만큼에 편미분 값을 곱해서 빼주는 방식으로 파라미터를 업데이트 한다

$$w \leftarrow w- \eta\frac{\partial{loss}}{\partial{w}}$$

$$b \leftarrow b- \eta\frac{\partial{loss}}{\partial{b}}$$

$\leftarrow$의 방향으로 업데이트를 해준다

 

step size가 너무 크면 학습이 안 된다.

gradient는 굉장히 local한 정보이기 때문에 너무 크면 좋지 않다.

 

여러 feature가 생겨 w와 b가 많아지게 되면 w와 b를 행렬로 표현할 수 있다.

$$\textbf{y}=W^{T}\textbf{x}+\textbf{b}$$

 

행렬은 두 벡터 space의 변환으로도 해석할 수 있다.

마찬가지로  행렬을 찾는 것은 두 vector space(차원)사이의 선형 변환을 찾겠다는 것이다.

결국 행렬의 관점에서 Linear network를 보면 x라는 입력을 w,b라는 행렬을 사용해서 y로 변환하는 것이다

 

Multiple layer

위와 같은 x와 y사이에  hidden layer가 생기면 두개의 w행렬이 필요할 것이고,

$$y=W^{T}_{2}\textbf{h}=W^{T}_{2}W^{T}_{1}\textbf{x}$$

와 같은 식이 될 것이다. 하지만 $W^{T}_{2}W^{T}_{1}\textbf{x}$가 하나의 새로운 행렬로 볼 수 있기 때문에 

한 단 짜리의 neural network 와 다르지 않다.

그래서 중간에 non linear transform이 필요하다

non linear transform 을 위해서 activation function $\rho$ (대표적으로 sigmoid)를 곱해준다.

 

$$y=W^{T}_{2}\textbf{h}=W^{T}_{2}\rho(W^{T}_{1}\textbf{x})$$

Activation functions

  • ReLU : Rectified Linear Unit
    0 이하에서는 0, 0 이상으로는 그 값 그대로를 내보내는 함수
  • Sigmoid
    출력값을 항상 0~1사이로 제한
  • Hyperbolid Tangent
    출력값을 항상 -1~1사이로 제한

어떤 activation function이 가장 좋을지는 문제마다 다르다. 

 

Loss functions

$y_{i}^{(d)}$=True target
$\hat{y}^{(d)}_{i}$=Predicted output

Regression Task Classification Task Probablistic Task
MSE = $\frac{1}{N}\sum^{N}_{i=1}\sum^{D}_{d=1}(y_{i}^{(d)}-\hat{y}^{(d)}_{i})^{2}$

항상 이 loss function이 해당 task에서 옳지 않을 수도 있다. outlier가 mse에서 영향을 많이 준다면 mse보다 강건한 loss function이 나을 것이다
CE(cross entropy)=$-\frac{1}{N}\sum^{N}_{i=1}\sum^{D}_{d=1}y_{i}^{(d)}log\hat{y}^{(d)}_{i}$

$y_{i}^{(d)}$ 은 정답 class 하나만 1을 가진 one hot vector이다
ex)2가 답이면 [0 0 1 0 0 0 0]

$\hat{y}^{(d)}_{i}$을 logit이라고 부른다

결과적으로 그 class에 해당하는 값만 키우게 된다. 크기는 중요하지 않고 다른 값들에 비해서 더 크기만 하면 분류할 수 있다.
MLE=$\frac{1}{N}\sum^{N}_{i=1}\sum^{D}_{d=1}log\mathcal{N}(y_{i}^{(d)};\hat{y}^{(d)}_{i},1)$

가우시안의 log likelihood를 maximize