[인공지능] Deep Learning Basic

Deep Learning Basic


Key Components of Deep Learning

  1. Data: 모델이 학습하여 배우는 대상
    데이터는 풀고자하는 문제에 의존한다.

  2. Model: 데이터를 어떻게 변환할 것인지

  3. Loss: 모델의 오차를 정량화
    loss function은 우리가 달성하고자 하는 것의 근사치이다.

    • Regression: MSE (Mean Squared Error)
    • Classification: CE (Cross Entropy)
    • Probabilistic: MLE (Maximum Likelihood Estimation)
  4. Algorithm(optimizer): loss를 최소화하는 파라미터로 조정하기 위해
    SGD, Momentum, NAG, Adagrad, Adadelta, Adam, ...

Neural Network, MLP(Multi-Layer Perceptron)

Neural Network는 뇌를 구성하는 신경 구조를 모방하여 computing하는 체계이다. 그러나 뇌를 모방한다고 해서 정말 뇌처럼 작동한다고 보기는 어려우며, 좀 더 computing에 적합하게 발전해왔다고 보면 된다.

구조를 간단하게 설명하자면, 행렬곱과 nonlinear한 변환을 포함하는 형태이다. 이러한 구조를 쌓아올려서 MLP를 구성한다. 데이터가 있고 이를 설명하는 모델이 있을 때, 데이터와 모델의 차이인 loss를 최소화하기 위해서 optimizer를 적용하여 parameter를 바꿔주는 일련의 과정으로 진행된다.

모델을 표현할 때, x와 y를 나타내는 관계식에서 파라미터 w(weight), b(bias)를 이용하게 되는데 w, b를 계속 업데이트하여 loss가 최소가 되도록 만드는 것이 목적이다. w는 보통 행렬로 나타내는데, 여러층의 Neural Network가 쌓일 때 단순히 행렬들의 곱으로만 나타내면 결국 선형적인 관계만 나타나기 때문에 중간마다 nonlinear한 activation function을 넣어주게 된다. 대표적인 activation function으로는 ReLU, Sigmoid, Hyperbolic Tangent가 있다.

cf) KL-divergence loss
확률분포 사이의 차이를 비교할 때 사용.
확률 분포 P를 모델링하여 확률 분포 Q를 얻었을 때,
모델링한 Q가 원래의 P와 얼마나 차이나는지 확인.

Optimization

주요 concept

  • Generalization: 네트워크 성능이 학습 데이터와 테스트 데이터가 얼마나 유사하게 나오는지.
    주의할 점은 Generalization performance가 좋아도 학습 데이터의 결과 자체가 안 좋을 수 있다는 것.
  • Underfitting vs Overfitting
  • Cross-validation: training dataset 안에서 실제 train하는 data와 validation하는 데이터를 나눠서 진행.
    전체 train data를 k개로 나누어서 차례로 번갈아 가면서 k-1개로는 train을 나머지 하나로는 validation을 진행.
    보통 최적의 hyper parameter를 찾을 때 진행하고 hyper parameter가 고정된 이후에는 전체 data를 이용.
  • Variance & Bias: output의 일관성(variance)과 편향성(bias)의 지표.
    Low Variance이면 출력이 일관적.
    Low Bias이면 원하는 값에 근접.
    일반적으로 bias, variance는 trade-off의 관계.
  • Bootstrapping: random sampling을 진행하는 방식.
    ex. 100개의 데이터 중 80개씩 랜덤하게 추출하고, 각 데이터를 기반으로 한 모델들의 예측값을 이용하여 전체 모델의 불확실성을 예측.
    • Bagging(Bootstrapping aggregating): 앙상블 기법과 동일.
      전체 데이터에서 random sampling하여 학습 data를 여러개 만든 후, 각각의 예측값을 추합(voting or averaging)하는 방식.
    • Boosting: 여러 모델을 만들어서 sequential하게 합치는 방식.
      나누어진 여러 training samples 중에서 특히 더 학습이 되지 않은 부분에 집중해서 해당 부분을 개선하여 전체 model을 생성.
      하나의 strong learner을 만듬.

Gradient Descent Methods

  • Stochastic gradient descent: 한번에 한 개의 gradient를 구하고 업데이트.

  • Mini-batch gradient descent: batch size의 sample을 활용해 gradient를 구하고 업데이트. (대부분의 딥러닝에서 활용하는 방식)

  • Batch gradient descent: 한번에 모든 data를 이용.

    	cf) 일반적으로 batch size가 작을수록, 
    	sharp minimizer가 아닌 flat minimizer이므로 더 안정적인 performance를 보여준다.
  1. Gradient Descent
    Learning rate와 gradient를 이용하여 Weight를 업데이트한다.
  2. Momentum
    Momentum의 뜻, 관성이라는 말처럼 이전의 gradient의 방향을 좀 더 이어가며 업데이트 한다. (beta로 나타냄)
  3. NAG(Nesterov Accelerated Gradient)
    단순히 momentum만을 이용하는 것이 아니라, 이동한 현재 위치에서의 gradient도 함께 계산하여 업데이트한다.
  4. Adagrad
    gradient squares의 합을 이용하여(나누기) 지금까지 얼만큼 변해왔는지를 이용하여 업데이트한다.
    많이 변한 parameter는 적게, 적게 변한 parameter는 많이 변하도록 한다.
    다만, gradient의 합은 계속 커지기 때문에 어느 순간 학습이 잘 안된다는 단점이 있다.
  5. Adadelta
    gradient squares의 EMA(Exponential Moving Average)를 이용하고, weigt difference squares의 EMA를 이용하여 Adagrad의 문제를 해결하고자 하였다.
    다만, learning rate항을 포함하지 않아서 사용자가 조절할 수 있는 hyper parameter가 적어졌다.
  6. RMSprop
    논문에 공식적으로 나온 방법은 아니지만, Adadelta처럼 EMA를 이용하되 weigt difference squares의 EMA 대신 stepsize를 이용하였다.
  7. Adam(Adaptive Moment Estimation)
    이전의 gradient 값들과(Momentum) gradients squares의 EMA를 함께 이용하는 방법론이다.
    (beta1: momentum hyper-parameter, beta2: EMA hyper-parameter)
    가장 무난하고 널리 사용되는 optimizer이다.

Regularization

Generalization을 높이기 위해 학습에 여러가지 규제를 줄 수 있다.

  1. Early stopping
    Training error와 Validation error가 최소가 되는 지점에서 학습을 멈춰서 좋은 generalization performance를 보이도록 한다.
  2. Parameter Norm Penalty
    Nueral Network의 파라미터가 너무 커지지 않도록 penalty를 부여한다. fucntion space가 부드러워지는 효과가 있으며, 일반적으로 부드러운 함수일수록 generalization performance가 증가한다.
  3. Data Augmentation
    데이터는 많을수록 좋기 때문에, label이 바뀌지 않는 선에서 현재 데이터를 처리하여 증가시킨다.
  4. Noise Robustness
    입력 data, weight에 noise를 추가하여 성능을 향상시킨다.
  5. Label Smoothing
    임의의 학습 data 2개를 뽑아서 섞거나 자르고 붙여넣어서 학습시킴으로써 decision boundary를 부드럽게 만든다. (Mixup, Cutout, CutMix 등)
  6. Dropout
    forward를 진행하면서 random하게 일정 비율 neurons의 weight을 0으로 준다.
  7. Batch Normalization
    BN을 적용할 layer의 statistic을 정규화하여 성능을 향상시킨다. (Batch Norm, Layer Norm, Instance Norm, Group Norm)

좋은 웹페이지 즐겨찾기