9 minute read

딥러닝 기본

딥러닝 소개

딥러닝에 대한 기본적인 용어와 딥러닝의 역사를 알아보자.

딥러닝 기본 용어

  • data - 모델 훈련에 필요한 데이터 (풀고자 하는 문제에 의존적)
  • model - 데이터를 어떻게 변형 시키는 모델
  • loss - 모델을 학습에 나쁜 정도를 측정하는 것.
  • algorithm - loss 손실을 최소화 시키는 파라미터를 맞추는것.

Historical Review

Denny Britz 논문 참고 Deep Learning’s Most Important Ideas - A Brief Historical Review

AlexNet(2012)

  • 딥러닝을 이용해 최초 머신러닝 대회 우승(이미지넷 대회)
  • 이전에는 SVM등 머신러닝 방법이 대회를 휩쓸었다.

DQN(2013)

  • 알파고를 만든 회사(딥 마인드)에서 개발.
  • Q-Learning 강화 학습 방법론을 DL에 접목시켰다.

Encoder / Decoder(2014)

  • 다른 언어로 되어있는 문장이 또 다른 언어의 연속으로 결과를 출력(번역 문제에서)
  • Sequence to Sequence 모델
  • 이후 기계 번역의 트렌드가 바뀌엇다.

Adam Optimizer(2014)

  • 학습시키려고 하는 모델에 대부분 사용된다.
  • 다른것들 보다 결과가 잘나와서 그냥 사용함…

GAN(Generative Adversarial Network, 2015)

  • 이미지분야에서 많이 사용된다.
  • 논문의 감사문구에 술집언급..(~술집에서 술이 너무 맛이없어서 연구가 생각나 개발했다고함~)

ResNet (Residual Networks, 2015)

  • 이후 딥러닝의 딥러닝이 가능해졌다.
  • 이전 레이어를 많이 쌓게되면 테스트에서 성능이 안나왔지만 이 ResNet이 개발 된후 레이어를 많이 쌓았을때 성능을 내게 했다.

Transformer(2017)

  • “Attention Is All You Need” 의 논문 제목을 사용했다.
  • RNN을 모두 대체했고, CV쪽도 넘어 보고 있다.

BERT (find-tuned NLP models, 2018)

  • Bidirectional Encoder Representations from Transformers의 약자
  • language 모델
  • 데이터가 부족할 때, 적절한 예제의 데이터의 훈련을 통해 결과를 내고싶은 데이터에 적용하여 사용함.

BIG Language Models(GPT-X, 2019)

  • BERT의 끝판왕
  • language 모델, 엄청난 파라미터를 사용하기 때문에 BIG 을 사용.
  • 175billion 파라미터를 사용

Self Supervised learning(2020)

  • SimCLR(구글)
  • 분류 문제에서 학습데이터가 한정적일때, 학습데이터 이외에 label이 없는 데이터도 학습에 함께 사용한다.

뉴럴 네트워크 - MLP(Multi-Layer Perceptron)

신경망의 정의와 Deep Neural Networks에 대해 알아보자

Neural Networks

  • 포유류 뇌의 신경망을 모방하는 컴퓨터 시스템이다.

Multi-Layer Perceptron(MLP)

  • 네트워크에 히든 레이어가 숨어 있다. (더 좋은 훈련을 위해)

loss function

상황에 맞게 사용해야한다.

  • MSE(min squared error) - 최소 제곱근 오차, 회귀문제에 사용
  • CE(cross entropy) - 분류문제에 사용하며, 해당하는 출력값의 확률을 증가시킨다는 것.
  • MLE(Maximum Likelihood Estimation) - 확률적인 문제를 해결하고 싶을때(ex 얼굴 이미지를 보고 나이를 맞추고 싶다.)

Optimizer

  • Gradient Descent - loss function 의 local 미니엄을 반복적으로 찾는 기본적인 optimization algorithm 이다.

여러 용어들을 알아보자.

Generalization

  • Training error 가 최소화 됬다고 해서 Test error 가 적다고 할 수 없다.
  • Training error와 Test error의 차이를(일반화 성능)

Underfitting vs Overfitting

  • Overfitting - 학습데이터는 다 맞지만 Test 데이터에는 결과가 적합하지않다.
  • Underfitting - 너무 간단하거나 훈련을 조금 시켜서 학습 데이터도 제대로 맞추지 못하는 것.

Cross-validation

  • 훈련을 최적화 하기 위해 검증 데이터를 따로 사용하는데, 학습 데이터와, 검증 데이터를 교차로 사용하여 훈련 시킨다.
  • 12345, 12345, 처음것은 1번 데이터를 검증, 2345를 훈련데이터 집단으로 사용하고, 두번째는 2번 데이터를 검증, 1345는 훈련데이터로 사용한다.

Bias and Variance

bias

  • High variance 는 오버피팅이 될 확률이 높다.

Bias and Variance Tradeoff

  • 학습 데이터에 노이즈가 껴 있다면, 노이즈가 있는 타겟 데이터를 최소화 하는 것은 세가지로 나눌 수 있는데 bias, variance, noise이며 이중 한가지를 바꾸면 다른 것이 커지는 tradeoff 이다.

bias

  • t 는 타겟, \(\hat{f}\) 는 뉴럴 네트워크의 출력 값이다.
  • bias 와 variance 를 동시에 줄이는 것은 힘들다

Bootstrapping

  • 전체의 데이터 중 일부의 데이터를 사용하여 여러 모델을 만들고, 여러개으 모델을 가지고 여러가지를 하겠다.

Bagging vs Boosting

  • Bagging(Bootstrapping aggregating)
    • 부트스트래핑으로 훈련된 여러 모델
    • 앙상블은 배깅에 속할때가 있다.
  • Boosting
    • 일부 데이터만 사용하여 훈련시킨 모델을 가지고 나머지 데이터의 결과를 보고, 좋지않은 결과를 보여준 데이터를 좋은 결과가 나오는 모델을 따로 만들어 합쳐 strong model을 만든다.

bagging

Gradient Descent Methods

  • Stochastic gradient Descent - 하나의 샘플에 대해 gradient를 구해 업데이트를 반복한다.
  • Mini-batch gradient descent - 데이터의 일부만 사용하여 gradient를 업데이트 한다.
  • Batch gradient Descent - 전체 데이터의 gradient를 업데이트 한다.

Batch-size Matters

  • 큰 배치를 사용하게 되면 sharp minimizer에 도달하게 된다.
  • 작은 배치를 사용하게 되면 flat minimizer에 도달하게 된다.

batch

  • 위 그림에서 flat minimizer와 sharp minimizer를 보면 flat minimizer는 testing 에서 별로 차이가 큰 것 처럼 보이지 않지만(일반화 성능이 높다), sharp minimizer는 Training과 testing에서의 갭이 클수 있다.(일번화 성능이 낮다.)
  • 결과적으로 작은 배치를 사용하는것이 좋은 성능을 낸다.

Gradient Descent

\(W_{t+1}\leftarrow W_t - \eta g_t\)

  • step size를 정하는 것이 너무 힘들다.

Momentum

\(a_{t+1}\leftarrow\beta a_{t} + g_t\)
\(W_{t+1}\leftarrow W_t - \eta a_{t+1}\)

  • 더 빨리 학습을 시켜주기 위해
  • beta가 모멘텀을 잡게 되고 gt를 이용해 계산한 accumulation 을 이용해 다음을 업데이트 시켜준다.

NAG (Nesterov Accelerated Gradient)

\(a_{t+1}\leftarrow\beta a_{t} + \nabla(W_t-\eta\beta a_t)\)
\(W_{t+1}\leftarrow W_t - \eta a_{t+1}\)

  • \(\nabla(W_t-\eta\beta a_t)\) 부분은 Lookahead gradient를 계산한다.
  • local minimum을 빠르게 찾을 수 있다.

NAG

Adagrad

\(W_{t+1} = W_t - \frac{\eta}{\sqrt{G_t+\epsilon}}g_t\)

  • 지금까지 parameter가 많이 변했는지, 조금 변했는지 확인한다.
  • 많이 변한 파라미터는 적게 변화시키고, 조금 변했다면 많이 파라미터를 변화 시킨다.
  • 변한 기준을 위 식의 \(G_t\)로 표현한다.
  • 오랜 학습을 하면 \(G_t\) 가 점점 커져 학습이 멈춰지는 현상이 발생한다.

Adadelta

\(G_t = \gamma G{t-1} + (1-\gamma)g_{t}^{2}\)
\(W_{t+1} = W_t - \frac{\sqrt{H_{t-1}+\epsilon}}{\sqrt{G_t + \epsilon}}g_t\)
\(H_t = \gamma H_{t-1} + (1-\gamma)(\nabla W_t)^2\)

  • 위의 \(G_t\) 가 커져 학습이 멈춰지는 걸 막기위한 확장 판이다.
  • G와 H를 업데이트 통해 문제를 해결함.
  • 특이점은 learning rate가 없다.
  • 많이 사용안함

RMSprop

\(G_t = \gamma G{t-1} + (1-\gamma)g_t^2\)
\(W_{t+1} = W_t - \frac{\eta}{\sqrt{G_t +\epsilon}}g_t\)

  • Geoff Hinton이 논문으로 출판되진 않았지만 강의에서 그냥 말했는데 성능이 좋았음
  • \(\eta\)라는 스텝사이즈를 추가하였다.

Adam

\(m_t = \beta_1m_{t=1} + (1-\beta_1)g_t\)
\(v_t = \beta_2v_{t-1} + (1-\beta_2)g_t^2\)
\(W_{t+1} = W_t - \frac{\eta}{\sqrt{v_t+\epsilon}}\frac{\sqrt{1-\beta_2^t}}{1-b_1^t}m_t\)

  • 가장 많이 사용하는 Optimizer
  • 모멘텀과 adaptive learning rate 를 합쳐 적용해 사용.

Regularization

학습 데이터에만 잘 작동하는게 아니라 테스트 데이터에도 잘 작동하도록 하게 인위적으로 훈련을 방해하는 것.

Early stopping

  • validation data를 사용하여 성능이 향상되지않는 곳에서 정지 시킨다.

Parameter Norm Penalty

  • 함수의 공간에서 함수를 최대한 부드러운 함수로 보자.(부드러운 함수일 수록 일반화 성능이 높을 것이다.)

Data Augmentation

  • 더 많은 데이터는 항상 좋다
  • 기존 훈련 데이터의 변화를 통해 데이터의 양을 크게 한다.
  • ex) 강아지 사진을 옆으로 돌린 사진 데이터는 늘어나지만 라벨은 그대로 강아지이다.

Noise Robustness

  • 입력데이터에 인위적으로 노이즈와 weights를 더해준다.

Label Smoothing

  • 학습데이터 두개를 랜덤으로 뽑아 혼합하여 데이터를 추가한다.
  • CutMix의 경우는 라벨을 섞고, 이미지도 섞어 버린 상태에서 데이터를 추가한다.

CutMix

Dropout

  • 뉴럴 네트워크의 일부 웨이트를 0으로 바꾸는 것이다.

Batch Normalization

  • 평균과 표준편차를 계산하여 각 레이어를 표준화 한다.
  • 각 레이어의 값들을 평균을 빼주고 표준편차를 나눠준다.

Comments