딥러닝의 주요 요소

  1. 모델을 학습시키는 데이터(mnist, pose estimation..)
  2. 데이터로부터 만들어지는 모델(ResNet, AlexNet…)
  3. loss function (최소화 하고자하는 목적함수, ex MSE, CE, MLE…)
  4. loss를 줄이기 위해 파라미터에 적용시키는 optimization 알고리즘(SGD, Adam..)

→ 논문을 볼 때 이 네가지를 중점으로 살펴보면 좋음

Neural Networks란?

  1. 사람의 뇌를 본따 만든 컴퓨팅 시스템
  2. affine transformation과 비선형 함수를 쌓아 만든 함수

Linear Regression weights update 방법

y_hat = wx + b에서 loss함수는

loss=1Ni=1N(y^y)loss = \frac{1}{N}\sum_{i=1}^{N}(\hat{y}-y)

이다. loss를 줄이기 위해 아래와 같이 update해준다. gradient descent에 대해 한다면 쉽게 이해할 수 있다.

wwloss/wbbloss/bw \leftarrow w - \partial loss / \partial w \newline b \leftarrow b - \partial loss / \partial b

Linear Neural Networks + a

위의 regression함수는 affine transformation이라 볼 수 있다. 여기에 연속적으로 nonlinear transform을 해주는 것이 뉴럴네트워크의 핵심이다.

y=W2Th=W2Tρ(W1Tx)y=W_{2}^{T}h = W_{2}^{T}\rho (W_{1}^{T}x)

여기서 rho는 nonlinear한 activation함수이다.

뉴럴넷이 잘하는 이유?

  1. 인간의 뇌 모사했기 때문(이렇게 말하는 것은 수학적으로 부족한 내용일 수 있음..)
  2. 논문 Multilayer Feedforward Networks are Universal Approximators를 보면 하나의 single hidden layer는 continuous한 함수를 모사할 수 있다고 한다. → 뉴럴네트워크의 표현력은 우리가 알고 있는 거의 대부분의 함수를 다 포함한다는 뜻이다.

Deep Learning basics

optimizer의 중요한 컨셉

  • generalization
  • under fitting, overfitting
  • cross validation
  • bias-variance tradeoff
  • bootstrapping
  • bagging and boosting

Genralization

Training error가 0이라 해서 항상 성능이 좋은 것은 아니다. Training error가 작아질수록 Test error가 커지는 현상이 있을 수 있다. Test error와 Training error의 차이를 Generalization gap이라 하는데 일반화가 good generalizaiton은 네트워크 성능이 학습데이터와 비슷하게 나오는 것이다.

Underfitting: 학습이 안된 것

Overfitting: training데이터에 대해 과학습 되어 일반화가 되지 않는 것

Cross validation: k-fold validation이라고도 하며 training 데이터를 나눠 그중 하나를 validation set으로 사용하는 것이다. 보통 cross validation을 이용해 하이퍼파라미터를 찾고 그 후 전체 데이터로 학습한다.

Bias and Variance:bias는 편향된 정도고 variance는 퍼진 정도다(영점조절 생각)

cost = bias^2 + variance + noise의 관계를 가지고 있어 오른쪽 세개는 trade off 관계다

Bootstrapping: train data의 subset을 이용해 여러 모델을 만들고 무엇인가 하는 것

Bagging: Bootstrapping을 이용해 여러개의 모델을 학습시키는 것이다.(여러 모델의 평균)

Boosting: weak learner를 합쳐 sequential 한 모델로 만드는 것이다. 각 weak learner는 이전 weak learner가 실수한 것으로 부터 배운다.

Gradient Descent Methods(optimizer)

  • Stochastic gradient descent: single sample 활용
  • Mini-batch gradient descent: 데이터의 subset 활용
  • Batch gradient descent: 모든 gradient의 평균 사용

Batch-size Matter

large batch method: sharp minimizer

small batch method: flat minimizer

→비교: flat minimizer를 통해 flat minimum을 구했을 경우가 일반화 성능이 더 좋다

  • Gradient Descent
Wt+1WtηgtW_{t+1} \leftarrow W_{t}-\eta g_{t}
  • Momentum
at+1βat+gtWt+1Wtηat+1a_{t+1} \leftarrow \beta a_{t} + g_{t} \\ W_{t+1} \leftarrow W_{t} -\eta a_{t+1}

a{t+1}은 accumulation이고 beta는 momentum이다. 관성을 이용하는 것으로 a{t+1}에 a_{t}가 들어간다.

Nesterov Accelerated Gradient

Adagrad: 얼마나 지금까지 파라미터가 변해왔는지 or 안변해왔는지를 이용

Adadelta

RMSprop

Adam(보통 이게 제일 좋음)

Regularization

  • 학습에 반대되도록 규제한다(학습을 방해) → 학습을 방해해서 Test data에도 잘 동작할 수 있도록 한다.

Early Stopping: validation data를 이용해 overfitting하는 것을 중간에 멈춤

Parameter Norm Penalty: Cost함수에 W 노름을 추가해서 W의 weight가 너무 커지지 않도록해준다.

Data Augmentation: 많은 데이터는 항상 환영(돌리고 회전하고 등등..)

Noise Robustness: 입력 데이터에 noise 넣는 것 뿐만 아니라 뉴럴넷의 가중치에다도 넣음

Label Smoothing: 분류문제 풀 때 데이터는 한정적이기 때문에 학습 데이터를 자르고 붙이고 등등의 기법을 이용해 학습한다. Ex Mixup, Cutout, CutMix

Dropout: 뉴런을 랜덤하게 죽이는 것

Batch Normalization: 내가 적용하고자 하는 layer에 statistics를 정규화 시기큰 것, 파라미터 각각의 값들에 대해 minmax, standardization적용되는 것

참고: Boostcamp AI Tech 4기 DL Basic 최성준 교수님 강의

profile
Study and Share

0개의 댓글